I don't know if it's because it's such a big change or it's just a bad idea

Streamed

Fixed single detail preview bug and added test coverage. Explored UI design for merged stories - tried showing each story’s comments separately but unsure about the approach. Fixed duplicate account bug and authorship wording. Investigated story submission URL clearing bug with form field behavior. Discussed open source maintainership and project transitions with brainwane.

scratch


topics
  PR and issues
    minus on folder https://github.com/lobsters/lobsters/pull/1499
    authorship wording github.com/lobsters/lobsters/pull/1498
    docker https://github.com/lobsters/lobsters/pull/1503
    fix _singledetail https://github.com/lobsters/lobsters/pull/1504
  previewing bug
  bug: story submission URL is clearing on reload https://github.com/lobsters/lobsters/issues/1505
  merging UI https://github.com/lobsters/lobsters/issues/1456

resources on maintaining oss
  https://changeset.nyc/resources/getting-unstuck-sampler-offer.html
  https://harihareswara.net/posts/2021/gaps-in-existing-guidance-on-open-source-software-management/
  https://producingoss.com/
  "Program Management for Open Source Projects: How to Guide Your Community-Driven, Open Source Project" by Ben Cotton, published July 2022 by The Pragmatic Bookshelf

a chill vim colorsheme https://github.com/vinitkumar/oscura-vim
updated a public copy of my colorscheme https://gist.github.com/pushcx/8f9fe335f7812a31b51d552b268e2cbc

      title a
        comment
          comment
        comment
      title b +2d
      title c +6d


title
  the preview button does bupkis
  I don't know if it's because it's such a big change or it's just a bad idea

post-stream
  read all of brainwane's links on OSS
    

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

Recording



02:00It's Thursday. This is the Lobster's Office Hours stream. I'm Peter. I run the site and I'm happy to take any kind of questions about it. You can throw questions in the chat anytime here and we'll sort them out and cover them. brainwane Morning!
I've got a couple of bugs on my plan to-do list if nobody's got questions. I think there's some pull requests and issues. Oh, hey, good morning. Nice to see you again. I will try and be less engaging. Last time you dropped by, you had a bunch of interesting things to say and I knew I pulled you from work. So let's see, where are we?

...54You're, actually, One small thing there for you. brainwane :-) Wishing you well as you prepare for work! Oh I'm so glad
You gave me some links to Wikimedia and Wikipedia stuff that came in handy, their readings. Just to close the loop, did you see the big post I ended up writing about the OSA? pushcx https://lobste.rs/s/ukosa1/uk_u…
brainwane Oh I skimmed that, yes!
So your links went into brainwane Excellent
Some of that went into this post. Yeah. So thank you again. That's been useful. Alrighty.

03:43So let's see. I think there's a request someone opened just this morning. Oh, yeah. Hi, Shamless, if you're here. And something about Docker. Actually two from Shamless. All right. So plenty of pull requests to work through. pushcx Throw a question in the chat about Lobsters anytime!
Folks can throw a question. Lobsters. Cool. So then if we don't have a bunch of Q&A, I tend to... I didn't turn on the notification. I tend to work on the site. Sometimes I fix bugs, sometimes I add them.

05:06mynamehere1337 o/
morning my name here elite welcome just squaring things away off screen all right so with that done let's take a look at some of these bugs so it sounds like there's a bug in unflagging why do we want to oh that's actually really pleasant

...39Run that and preview.

...54I think, well, I'm generally, I didn't know CSS had a char set kind of declaration. So I want to look that up, but I'm generally very positive about being explicit about what the heck character set you think you're using, because it is so very easy to get them wrong.

06:22That's a new feature on me. That's great.

...30Oh, very particular about exactly one space.

...43I wonder when this was added. Knowing my CSS knowledge, probably 10 years ago, but good deal. Chrome 2, Firefox 1.5. Yeah, that's been a minute. All right. Have we had, let's take a look at the code. Because I want to say there was a little more CSS in there. Did we do it as like a U plus? No. Did we do it as a backslash? No. What are the different ways to encode a Unicode character? Because I wanted to say we had some.

07:34So we could do an ampersand. No. Content. Let's see if we've done that. Okay, so it looks like that's what we're doing in exactly one place. So I don't really mind. pushcx https://github.com/lobsters/lob…
There isn't a style to enforce here is kind of what I'm skimming for. All right. Oh, and if anybody wants to follow along, here's our request that we're reviewing right now. I should put this in the notes.

08:23Yeah, I'm just going to prove this. This is a nice little

...59Why is this failing? This, this is me.

09:37Let's just stop here. Okay.

10:07There's going to be a whole bunch of these little bug fixes this morning. So is this the one? Let's get this open. I don't know what this is. This hasn't had any activity. Am I reading the diff backwards? I read the diff backwards. Man, was I out of it on Monday?

...51They didn't force push to this branch, right? Nope, I'm just... I was confused.

11:13Let's go back here.

...20All right, that's actually, how did I read that backwards?

...31Let's just take that fix. All right.

...46There's going to be enough of these little ones that I'm not going to deploy them one at a time. So what have we got here? Something about Docker. Now we're in danger, because I accepted the pull request to add Docker. And I have never used Docker, and I don't know anything about it. It would be really neat if GitHub would So our builds take a consistent amount of time. They are, you know, the same tests over and over and over. And it would be neat for... I realize this is going to sound short to say, but long to do. But they could look at these build steps and sample how long they've taken in the last, I don't know, month? And when a new contributor with a reasonable reputation, because this is going to be somebody who's had a GitHub account for years, probably. Yeah, so at least 10 years. Just go ahead and run their build and give it a time budget that's like 10% higher than average. And if they run long, okay, go ahead and say, hey, you've got to approve this build. But otherwise, I feel like you could spot them the average build length. dlamz but the builds can have access to secrets can't it?
And there's little enough account takeover, especially if that contributor has a 2FA enabled. I don't know. There's all these kind of options. And I realize I'm making it more and more work for GitHub. Everything is easy when somebody else is doing it for you.

13:48I think the builds could have access to secrets, but the big reason for that whole approve in one run workflow is because they saw abuse where people would delete the test suite and replace it with a cryptocurrency miner. And I thought that's what it was trying to prevent.

14:23And then these automatic build steps.

...34dlamz of course they did lol
Because if it was a security control, it doesn't feel like it would work very well because, you know, any random person could submit a typo fix and then their second PR would run the build and it could exfiltrate secrets. So there's no way that that can be the concern, right? dlamz yeah good point
It would be way too easy to end run. I think it's just the cryptocurrency miner thing, but I'm not an expert here. I just make up features.

15:14As long as I'm wishing for a pony, the only thing I wish for was that this UI was stable there's been so much jank in the build ui the last couple months one of these days i'm gonna have to make time to actually set my same bug whoa what is this

...52I don't know what this bug is.

...58So on the last stream, I found a small bug in Breakman and reported it. And I heard back from them, actually. They're working on it. What is this? Oh, it's another one related to it. Is this 1909? Oh, okay. This is actually an expression of the bug that I saw on the last stream. pushcx https://github.com/presidentbee…
so it's something in prism and i saw a different expression see here's my bug 1927 of can't modify frozen string and then the maintainer said oh this is the same as 1909 which i guess is what we're seeing in the other build

16:55Okay, so I'm going to go ahead and say

17:27So that's that. And then nothing else in here failed, right? Yeah. I'm going to go ahead and merge this.

18:07Oh no, that's an embarrassing one, a typo in the class name. Shameless, you're sometimes here on Thursdays. If you're here, hello. Thank you for catching my silly bugs. Closes 1500. I got to mute for a second and sneeze.

19:01chamlis_ hi! we're still an hour out of sync here in the UK so I almost forgot
all right so that is i touched the cat just before the stream and i must have touched my face all right ah hey shameless good to see you again thank you for the bug fix this is you know i assumed that i had broken this Oh, now I know what this code is. It took me a second to recognize it. Boy, the morning cup of coffee is really kicking in slow today. But yeah, this is the code I was just touching. Thank you for catching this typo. How are things in the UK? Hopefully not too much geo-blocking. I've seen a bunch of interesting links to that write-up of the Online Safety Act, and I chamlis_ nothing that's affected me, thankfully
I hope my big post has helped some folks realize that, especially folks who run forums in the US, that they don't need to block the UK.

20:20All right. That's definitely my bug.

...32Frici Greetings πŸ‘‹
Let's merge. Great. So this should be fixed. This was, however, a bug and a good first issue.

21:12chamlis_ hiya
so oh hey fritchie welcome back so on stream maybe a month or so ago i rewrote the issue template to say please include a url and a screenshot and these bugs i have gotten in the last month have been so much better for it i realize it's You know, it's the dumbest realization of, oh, if you ask for the things that you want, sometimes you get the things that you want. But it's been so helpful. And these bugs, I feel like we've been churning through them faster, especially because Shamless has fixed a bunch of them. But just this simple... yeah it's really helpful to know if you were logged in and if you can include screenshots that could probably include a comma let's fix that actually

23:06brainwane speaking of templates: in https://harihareswara.net/posts… I suggest that it would be great for open source maintainers to be able to more easily share these kinds of things
brainwane ' Beyond licenses and codes of conduct, we could use a shared set of customizable policies on deprecation, security reporting, release announcement, vendoring, user support, contributing guidelines, testing, architectural change, and data privacy. We could also share new issue templates, and replies to reuse for common misunderstandings (like "you'll need to rebase" or "we're not able to prioritize this right now but a patch or a donation could change that").'
You have templates.

...16So we were talking about Tsumana's blog. So if anybody didn't see this before, this is a great blog on open source projects. Tsumana does a lot of work. And why do I not? So I've been looking for books on Being a better open source maintainer, why have I not read your book yet?

...49Hold on. I have to do this right now. I'll go ahead and chill. Everyone should subscribe to this if you work on open source. I just... I have good expectations for what's going to be in it. And I've been thinking a lot about how to encourage regular contributors and make sure that they are feeling recognized and rewarded and that it is worth their time to contribute, even if I don't accept their patch. So I've gone and looked for books on open source and I've seen a bunch of stuff that's about brainwane Thank you so much! I point to several existing useful books and other similar resources on FLOSS maintainership in https://harihareswara.net/posts…
becoming an open source contributor and a lot of that is written like there's teams as book that's mostly targeted towards junior developers who are trying to gain experience and then there is the. brainwane Karl Fogel wrote Producing OSS
Producing OSS book that's what Fitzpatrick and someone his regular long term contributor, I want to say. And something. Oh, so bad with names. And that one is just a little long in the tooth. Oh, Carl Fogel, thank you. Who am I thinking of?

25:09Are we coming up with a... Why did Fitzpatrick show up for this? brainwane And he did update it within the last [not sure] years btw
Hmm. Because he, ah, so Ben Collins-Sussman and Byron Fitzpatrick are the two authors I'm thinking of because those two often work together. He did update it within the last couple years. Did he? I'll have to go back. pushcx https://producingoss.com/
2020? I didn't know there was a second edition. Thank you. All right, so let's grab that. I'll put that in the stream notes because... I'm always looking for stuff. brainwane The 2nd edition is, I think, online only right now - but it's openly licensed so someone else could make a print edition I assume
I have not reread it in the last five years, so... Ah, that's lovely. alex4tmm have u read the well grounded rubyist ?
All right, so anyways, I'm kind of rabbit-holing into my hobby topic, but let's back up here. Have I read The Well-Grounded Ruby? Yeah, hey, Alex. That is my standard book I recommend to people who are experienced programmers and new to Ruby. So if that describes you, I think that is a great way to get into it. There is just announced Brandon Weaver will be writing a new edition of Eloquent Ruby. I expect that will be good, but that's probably not going to come out for a year or so because it was just announced on Blue Sky like yesterday or the day before. So I suggest it be great.

27:00Suna has more. Let's grab this article too, and also put it in the, what did I do to my, come here. We've reached the portion of the stream where I struggle with my clipboard. alex4tmm i read also the rails way, but its rails 6, but still a good book
So I'm going to have to work through that, but then

...46brainwane I'm curious whether anyone here has read "Program Management for Open Source Projects: How to Guide Your Community-Driven, Open Source Project" by Ben Cotton, published July 2022 by The Pragmatic Bookshelf. That might be along the lines of what pushcx is looking for right now
I think there's a new edition of Rails Way for Rails 8.

...58alex4tmm i have the older one i guess :)
That sounds like it's exactly along my interests there, Suman. I thank you.

28:23chamlis_ too many books; not enough time...
Hmm. Yeah, shameless story of my life. No, this. alex4tmm @chamlis_ true, lets just watch some netflix :D
brainwane and, pushcx, within https://changeset.nyc/resources… , it sounds like you might be interested in: How to Teach And Include Volunteers who Write Poor Patches Growing Your Contributors Set Contributor Expectations To Reduce Ghosting
This sounds really exactly up my alley because I know one of the things that I have not done well at as an open source maintainer and as a moderator is build up enough of a team around both the code project and moderation. I've got to do a better job of bringing people in training them building culture, trusting them all of these kinds of things.

29:13Yes, that also sounds useful to me. Thank you. Can you drop by every Thursday stream and let me nerdsnipe you into giving me great resources, Sumina? Because this is lovely. Thank you. alex4tmm do u only want senior devs or junior/mid is acceptable :)
What else do I need? Do you have any winning lotto tickets? Do you have books on lottery numbers that will actually show up in the Powerball next week? I could use a book on that. I don't think that's going to work, though. Alex, I have had lots of folks contribute to the Lobster's codebase and it has been their first Braille's codebase. And I've had lots of folks contribute and it's been their first codebase period. I am happy to have folks at all alex4tmm i worked on many rails projects but never did any OS stuff :)
kinds of level of experience we have so I add new bugs to the lobsters codebase all the time with a variety of complexity and some of them you have to be a senior developer to take on some of them are very accessible to junior developers I try and be very accessible that way

30:30pushcx https://howtoopensource.dev/
Well, then you might be interested in that Schneem's book I mentioned, which here it is. How to opensource.dev. That is a book about becoming an open source contributor.

...49I gave it a read. Gosh, I ran into Schneems at a conference a couple of months ago and he gave me a coupon for the book and I gave it a read and I thought it was really solid. It was the inverse of the actual question I had. That's not, you know, a knock on him, of course. That's just my inconvenience.

31:31brainwane Ahahah! The only luck-type tip I have currently is: you and I both make a particular kind of luck more likely by working in public, increasing the surface of possible serendipity
Sumana, to your point about, so I really like the idea of a shared set of policies and issue templates and all of these other things, these wheels that these projects keep reinventing. Setting expectations is interesting. Just last week, I had someone who came into the lobsters code base and filed a bug because lobsters doesn't have a very expensive feature that we would never benefit from that they would like for their site. And they just sort of were posting with the assumption that if they asked me to take on this big maintenance burden so that they could use the code base, I would, it was a very strange conversation.

32:32Oh man, twice monthly live office hours on Twitch, and I do more like twice weekly.

33:04Subra, I know years ago we discussed pip and I discussed my frustrations that I've been unable to keep a pip slash virtualenv working. brainwane (I think you'll probably like the Articulate your vision section of "Set Contributor Expectations To Reduce Ghosting")
brainwane I've heard good things about uv -- a lot of people like it!
I recently threw out a request for suggestions, maybe a month or two ago, and somebody suggested UV, and I've been using that for, not for Python development, but for using tools that are written in Python, and I am really impressed by it. It has absolutely nailed my needs, and I have dlamz uv and uvx is a godsend
brainwane Oh that's an amazing data point
For the first time I've been able to like update the system Python and not break the tools I have installed or update one tool and not break the others and so thrilled.

34:16yeah. So i've never used it for. Developing a Python APP because I haven't written any Python for years, but.

...34pushcx https://harihareswara.net/posts…
I'm super impressed with it for just using tools. And I had one that...

...48brainwane (I know some folks have misgivings about the corporate stewardship of uv. That's not something I have a ton of knowledge about but I know it may come up in conversations, fyi)
So I was using it and I just had it using the system Python and then that bumped because I'm running Arch, which is a rolling release. And the tool broke. And so then I told UV to pin the version of Python, and it just sort of backed up. And it was like a weird, the main tool was updated for the latest version of Python, but one of its transitive dependencies wasn't. And so the error was super deep and frustrating. But I just told it, all right, well, let me back up one version of Python and pin it. And it did, and the tool was working again. It has been for weeks. And now I can come back and be like, all right, at this point, probably that transitive dependency is updated, so I can nudge it out. Frici I do worry about the corporate aspect of uv too but since I've moved to uv after hearing about you using it. it's been the first time in years working with things for python that didn't make me want to dye my laptop blue and yeet it into the sea.
Yeah, I also, I can only speak to the experience of having used it. I don't have any opinion or really knowledge of who makes it or why.

35:55Yeah, Fritji, that has been more my experience with Python. So I think we're on the same page there.

36:16You know, Sumano, specifically to this experience of giving feedback and getting silence in return, I actually added to the pull request template. If you are a student, please mention this and what your assignment is, because it's happened, I don't know, four or five times in the last year, which is a significant percentage of the contributions to Lobsters, that someone has said, oh, I'm a student and I have an assignment to open a pull request. Note that they don't have an assignment to close a pull request. And so then I would get these, pull requests that required extra work because they were very junior dev code or very unfamiliar with conventions or didn't closely read the code base. brainwane If I ever work in Python packaging again, I'll likely want to put some attention into making sure that uv governance/roadmap prioritization give users a big voice. I have surely derailed your code work quite a lot, merely because you mentioned issue/PR templates! please do feel free to return to your more direct lobste.rs work
And I would give them extra attention and then they would all just fail because as soon as they opened the pull request, they were getting their grade. That was very frustrating.

37:26No, Brainwind, the point of office hours is we're happy to talk about whatever, you know, it's an open door sort of thing. brainwane got it :D
We'll talk about what comes up and you're not derailing anything. Part of the reasons I keep this topic list is to make sure that I come back to stuff and don't drop threads. But if we're having a useful conversation, we're having a useful conversation.

...56I'm going to have to read all of these linked resources.

38:06brainwane thanks, I get it -- the code review is more of a jumping-off point for the conversation
One of the values of doing the office hours twice a week has been that I, yep, you got it, has been that I'm reviewing pull requests and issues on a more regular cadence. And I could write in the pull request template, hey, you should expect that I will respond on Monday afternoon and Thursday morning most often. And I think that's also helped folks because they understand why if they submitted on a Friday, they're not getting a response for a day or two. But then, you know, I say that and I've also noticed that when I see them come like the day or the morning after a stream, if I just give any kind of quick acknowledgement The one sentence, hey, I will review this on the next stream, those get abandoned less often. Oh man, the to don't list, we're constantly revising that on lobsters. And trying to find polite ways of saying, hey, please talk to the community and start building consensus before you say, Let's revamp the way the site works in a very fundamental way that might have really serious effects on the community. I've tried not to be too discouraging to those folks, but sometimes we get stuff that is just a total non-starter.

39:52This is great.

40:03Github has saved replies. I'm going to have to make a saved reply. All right, let me grab that over to my tabs. All right, so I have Post Street. Let's put your name here and brand name. Links on.

...36All right, so then kind of popping the stack, we have another bug fix from Jamless. Let's take a look. Duplicated current account. I saw, I was going to say I saw an issue about this, didn't I?

41:08Okay. brainwane I would love for more FLOSS contributors to have examples of "how to lead product management in a consensus-y way" -- researching stakeholders, articulating a vision, iteratively conversing in public with different constituencies.
So this is, yeah, it's how to lead project management. Yeah. brainwane note: PRODUCT management
And I think it's also. So Brainway and I had a really, I see the, the difference there. brainwane YUP
There is also sort of a transition for open source projects when they go from one person's neat idea to building a community around themselves. And I think brainwane we usually only notice that transition in the rear-view mirror
That transition is currently really hard for projects and we don't have enough cultural understanding of what happens there and what kinds of things maintainers need to think about. Yeah. brainwane oh crap, I'm a manager now
No, I got involved with an open source project. I'm going to be vague on this one because I don't want to put somebody on blast. This goal isn't being spicy here, but I could see that it was in that process of making a transition from someone's clever idea into, no, actually this thing really works and we should share it and see if we can get some users and work through all of the real world use cases we haven't yet and then try and promote it and make it the standard solution to this tool or to this problem area. And so I was slowly ramping up my contributions to like bug fixes and well bug reporting even and then. There was some other stuff that I did as well and. The owner of it. Unfortunately, kind of.

43:37They took some that kind of yellowed some actions that would have been totally appropriate in a this is an alpha release hobby project and we're totally inappropriate for I would like this to be a standard thing. and It just kind of. It over at all the regular contributors and shut a bunch of them out and was super unpleasant and I walked away from being involved in that project because. If the maintainer had been like 22 and new at this, I would have been like okay let's start talking through what just happened and the maintainer is in their 40s and it's like no come on. So i've been thinking a lot about. this actually works and how we talk about it and how we understand it and it's even a lot of it matters for the project goals like one of the non-goals for the lobsters code base is it is not intended to be a generally supported tool of we are phpbb and we are helping everyone make forums we are discourse and we are helping everyone make a forum it's This is all open source because it improves the lobsters community that everybody can see our code and understand that we don't have things to allow moderators to push. Stories up and down the page like hacker news that kind of thing, and I am thrilled to see people reuse the code base to start their own sites. But it is not a. we're going to take on a big maintenance burden. For folks who are running their own sites. And that expectation is really hard to communicate. I have definitely had the, oh crap, I'm a manager now feeling. I was joking about it with a friend a couple of years ago, who we got our first job together. brainwane I understand why you walked away from that project, and, it could be that a person with the right level of skill and rapport could have engaged in some healthy negotiation with that maintainer about the choice they were making. This is a hope I have for my consultancy; I've been able to have those kinds of productive conversations in the past, and I want to help train others to do similarly
And I have joked that in my career, I have deliberately avoided anything that smelled like management. And I was just kind of, you know, shooting the breeze, over beers talking about why some of the lobsters work I was doing was hard and he was like you were describing all management tasks of communicating vision and getting collaborators and dealing with difficult people and I was like oh shit I made myself a management job yeah and if I had Well, I will give you a client lead off stream maybe. brainwane YUP. MAINTAINERSHIP (of a project that isn't just 1 person making and using it) INCLUDES MANAGEMENT
brainwane I hear ya
If I had had more free time or more of a personal relationship with the maintainer, I would have tried to mentor them or even just talk through why their actions were so bad to me as a contributor, but because I didn't have lots of extra resources and I didn't have more reason to be charitable about it, for me, the right decision was to just gently disengage.

47:25chamlis_ it's probably easiest to review the two commits separately, the diff's kind of a mess
You know, Chandler, as you've watched on the stream, as I've refactored this to simplify, you know, refactored out this single detail from list detail just to break down how many conditionals there are. And this thing is still a bit of a rat's nest of conditionals. Yeah.

...50Brain Wayne, have you read the book, The E-Myth? It's called The E-Myth Revisited.

48:02brainwane I think I have not yet read The E-Myth Revisited
pushcx https://bookshop.org/p/books/th…
So it's a foundational text in entrepreneurship, but it is like a late 80s, 90s business book. And so the pitfall of business books before, I don't know, 2000 or so is they have to be 150, 200 pages. So even if you can get the book's idea in two pages and it can change your life, there has to be enough pages in the book to make it fit on the bookshelf at the bookstore. So the very short version of this book is if you start a small business because you have a professional skill, especially if you enjoy that professional skill, whether that is detailing cars or plumbing or programming or anything you can start a business doing. And when I say small business, I'm thinking of this because also that includes nonprofits, it includes community projects, it includes open source. The entrepreneurship myth, e-myth, is that you will do that thing that you have the professional skill for. You will spend your time plumbing or programming or knitting or whatever the project is. And in fact, you will spend at least half your time on management tasks like bookkeeping, like counseling people, like finding new employees and doing performance reviews of existing ones, like making sure your taxes are filed and bookkeeping and the thousand other things that come along with running a project or a company. and you will find that as soon as you do anything to grow beyond one brainwane Ah right. Management skill != domain/individual contributor skill.... and management activities are crucial and take a ton of one's time. Right
person, all of the management overhead takes up probably two thirds of your time pretty quickly. Like it'll start out one third, but as soon as you get to like three people involved, it's two thirds. And so, yeah, I mean, you can even see it if you were to graph how many comments or how many votes I have made on lobsters over the last, what, 14 years of the site. You would notice a sharp fall off when I became the administrator and it is only declined since because running the site means I interact with it very, very differently. And the. The back half of the book. it really shows its 90s age. And it says like, oh, well, the answer for this is that you have to create a shoot, what's the term? Epic_Ninja_Elephant Playbook? Runbook?
Like create a book of procedures, like a binder of here's how we do everything. Epic_Ninja_Elephant Also, hi.
Like, you know, at a McDonald's, there's a book for how we do everybody. I can't remember the name of this playbook run book. Yes, it's that sort of thing. There's a proper term for this I'm not remembering. And I don't recall what it is. And so that is a little bit of a, yes, if you, it's sort of a sideways approach to actually solving the problem. brainwane (And, in the context of transparent/open/egalitarian collaborations -- the fact that so much management activity is private, or illegible to others, means your colleagues and constituents get confused and resentful, because "what do you do all day?")
I don't know that Gerber understood why it worked, but if you write down all of your processes, it means you can delegate things. And he's writing from the perspective of You are a small business owner so you own 100% of the company and everybody is working for you, and so, if you write down all of the chores you have to do, you can assign them to other people. This requires a little bit of translation and changing your cultural background to understand how to apply it to things like Community projects nonprofits.

52:15Oh yeah So lobsters has the public moderation log that is sort of a log of management activity, but this is, this is necessarily incomplete. A ton of what I do doesn't show up in this log because it's things like, I mean, reviewing the pull requests and issues. It's answering questions in the chat room. It's DMing people to say, Hey, that conversation could have gone better. And that last one, it's tempting to say, well, if you DM people as a moderator, maybe there should be an entry in the moderation log. brainwane indeeeeeeed
But if I do that, it automatically becomes a punishment that you are getting a talking to, you know, like if you are sitting in elementary school and somebody gets called up to the principal's office, and I don't, I can't have every time I talk to someone feel like a punishment, right? So it cannot go in the moderation log without becoming a punishment. And so these kinds of issues of how do we, what does Peter do all day? Part of the reason I do the office hour streams is because we talk about this stuff. I don't know. And it's more opportunity to have these conversations that are not things that need to show up in the moderation law.

53:43So let's take Shamless's suggestion and look at her two commits separately.

...53Maybe more in white space, right? If I could get GitHub to support DiffTastic and it had the semantic diffing of DiffTastic, I would be over the moon.

54:16I didn't realize this snippet was repeated. What a great catch, Shamless, that you figured out how to remove duplication to fix this bug. brainwane (MetaFilter is having a contentious conversation about moderation log stuff right now https://metatalk.metafilter.com… and several commenters are being "why don't you just" about the kinds of nuances you just mentioned. I do not recommend you go read that unless you want to get a little frustrated)
That must have been satisfying. It's there. So this, yeah.

...46Oh, it's not frustrating to me to read that kind of thing.

...56I am actually super curious to see another online community that has anything like lobsters moderation log, because very few do. And it took, it took me a while when I first became the moderator of lobsters to for it to grow on me. Cause at first it was like, oh, I have all of these people looking over my shoulder and second guessing me. brainwane MeFi is beginning to pull together a mod log but it's very rudimentary right now
And then it actually became a, oh, it is hugely valuable to have all these people looking over my shoulder and second guessing me. Because number one, as long as I can appear reasonable, people will tell me when I've made mistakes, which is invaluable. And they will tell me when I've missed opportunities, which is invaluable. And then also, Because I am doing this more in public, I am constantly building trust with folks where they can look at the community and they can say, oh, he's not acting like a jerk. A lot of this stuff is totally reasonable and there is a normal cadence and a predictability to these moderator actions as opposed to if the moderator gets up on the wrong side of the bed, you're getting banned kind of thing, which is very common in online communities. Yeah, I can't imagine... I guess I can. It would be a significant project to backport one onto a site because it's not just a technical feature. It is also a very subtle bit of community design and what goes in the log and doesn't and how is it displayed. Oh, there are so many little gotchas in there. Oh, man, these diffs.

56:58Yeah, they're just... So, like, this... There's an end to three conditionals, and then there's two close tags, and then another conditional. You see all these, like... Whenever a file ends with five close curly braces, I think it is indenting too deep. And this is definitely getting into that. This is not any criticism of... Shamus's PR, she's solving problems in a very complicated template. And I don't know how to improve this template better right now, but it has gotten hairy.

57:39What a tacky bug.

...47I want to take a quick look at the raw file here but channels I think you've probably gotten both bugs. So you were looking at. And that's. Taking the comments label. down.

58:20chamlis_ rereading the issue they mention the "via" and picture swapping but I can't reproduce that, unless they're talking about them being the other way around on list views
Yeah, that one... So Shamless, that one is actually... It's a style issue that we had where... On stories, we had the... believe it was the avatar the word via and then the username and on comments we always had the username and then i'm sorry the avatar and then the username and so putting the word via in the middle was a difference on story but not an improvement and i want the graphical consistency of always putting avatars and usernames together so i think they are calling out that i fixed that difference But as long as a bunch of other stuff broke, any change looks like a breakage. chamlis_ ahh right, then I guess they should be swapped on ie the homepage list as well?
I try and be really careful touching this kind of core UI, like single detail, list detail, or comment, because they are the beating heart of the site. And when we change UI there, everyone who reads the site has that moment of dissonance where even if they can't explain even if they don't recognize what changed the fact that something changed kind of nags at them there is a disquiet to those kinds of changes. So... Is it an I or a B? Ilbelmo or... Come here. Get you into a monospaced font. Elbelomo. All right, so they correctly caught that this change I would bet a lot of people could not tell you that something changed. They just have a mild feeling that something is wrong when they look at this and it'll fade.

01:00:46But this is the kind of like little tweak that drives people nuts because if I, if I surveyed a hundred users, Maybe like five would be able to say that something at all changed. And maybe one would say, I know what changed. But the other 95, 99, something in their subconscious will note that there is a change and it won't feel good.

01:01:20gtfrvz i missed the comment count instantly because i use that to look for new comments
So this I see as a bug fix. gtfrvz in stories im interested in
This is a bug introduction.

...32gtfrvz no, but im not gtfrvz on github either
yeah well sorry about that bug gt you're not el balomo right i think you have the same username on github i can't keep track of folks all right

01:02:03gtfrvz ok NSA
Okay, one of these days i'm going to make a spreadsheet for stream viewers and it's going to have. everybody's name on twitch name on lobsters name on github pronouns and then I am going to be accurate. Okay, and I say yeah yeah yeah come on it's the FBI that does those not the NSA.

...3847, 48, 90. Come here.

...56Oh, yeah. That is just obviously a bug. What a good catch, Shamless. So then this one, and I wish I wish there was a linter for ERB that worked because if I had standard RB running, I would never have let this slip in. This is such a basic bug.

01:03:29Should this be the one-on-one 10? What do you think you're ending?

...42If it's not gone and there is a user. Okay, yeah, that one's correct.

...57Yeah, I wish ERB wasn't string soup.

01:04:13chamlis_ even something that verified indent level against nesting depth, maybe
Let's keep these two separate.

...22Yeah, just that very basic one of the contents of an if have to be indented, and then the ends have to line up with the ifs, that would have saved me there.

...49chamlis_ opens an awk file
You know, somebody...

01:05:05Fix 1502. All right, so this is most of the bug fixes I had mentally lined up for office hours. There's one more, actually, that I'm not sure if it got reported by anybody. It got reported to my inbox. So I'm going to go ahead and deploy these because we've had a whole bunch.

...40Oh, and I wanted to note.

01:06:15chamlis_ don't know if you missed the message earlier, but is the profile picture coming before "via" on lists like the homepage a bug?
If it's different between the list detail and single detail, whichever one doesn't go avatar username is a bug. And it's probably still wrong in list detail because I don't think I fixed it there. Let me go and fix it there now. I'm about to write about it here in the issue.

...59chamlis_ ahh, apologies
GitHub. Come here. What happened? I lost my cursor? I can't type in the text area anymore. GitHub. Man, that was... I have said GitHub's getting squirrely. That was a new level of squirrely that I couldn't even focus the text area. All right.

01:08:10Let's go look at that. So that would be list detail, right? Why do you think I have changes? Oh, because I accidentally pasted stuff in there. So list detail, use your name.

...29Yep, this has the same bug. So this. Oh, it has the same duplicated code, too. All right, so let me just lift this up. Hold on. Let's do the refactoring step by step. Otherwise, I'm going to goof it. So we'll do foil. I'll distribute it. And then maybe I'll just leave it alone. probably broken these list details enough for one day yeah so if i factor out the oh my god what a long what a long ass else

01:09:38Well, let's use Sandy Metz's saying that duplication is cheaper than the wrong abstraction and leave that alone.

01:10:14Let me deploy that one too, because that one's going to be kind of an annoying change for folks in that same way of something is different and I can't name one. So if I load up, I actually have the, can't type, load up the homepage. Yeah, we have avatar authored by, that's going to startle a lot of people.

...47It's going to be a little uglier, actually, because... Hold on, I'm stopping the deploy.

01:11:00So what's going to happen is, let's just... I don't have to explain what's going to happen. We could just see it on local. There's a nice vertical rhythm to the page where these are all lined up. And because via and authored are different widths, so these are going to move over, which is a little ugly because they're not going to have a vertical edge. The left edge won't be lined up to the left edge of the headline. But then also they're going to kind of wiggle back and forth down the page. Yeah, that's kind of ugly. That's not an improvement. Ooh.

...56I'm putting that back. I should have looked at it first. I didn't even run the build. Nobody caught me. I put that back. And then when you click in, see, there's only one of them. Or in the case of merges, there's going to be a couple, but it's not a whole page of these not lined up correctly. And it's maybe fine if one of them says authored by and kind of gets visually highlighted. What a design issue. So that vertical regularity is very nice.

01:12:56If we were to change it to avatar username and then parentheses like author that would be fine, but I don't know what we would put. I guess we'd have to put submitter instead of via. that's a big breaking change. In that that's definitely going to throw people off because they will know the word. Yeah, let's just hang up. Let's throw that commit away. I don't care that I pushed it. I'm going to be bad and just throw it away.

01:13:57I just can't make something that clunky. I know I'm a programmer and I make bad user interfaces, but that one would be too ugly. We'll see if I get a bug report that it's inconsistent between this and this. But we've actually snuck in a couple of changes, so we'll see how it goes.

01:14:26I don't have any of my comments links. How much of this did I break? This one is saying yes.

...56How about this? Yeah, I think this should... Epic_Ninja_Elephant Semi-related, how do you get load time in the lower left corner? Is that a browser thing or lobsters-in-dev-mode thing?
chamlis_ I was under the impression we only cared about the total for merged stories, yeah
So Shameless, I know I just merged your fix to this. But the more I look at it, I think for merge stories... Well, I'm kind of looking forward to the next change for the story merging. You've seen, I know, the issue about merging UI. But... Yeah, so that stays the same. And then this one. Yeah, I actually do want them. Why does it say five and there's only three? How much stuff have I broken? Oh, my God. All right. Again, that said five and it's only three. That's no bueno.

01:16:08It's possible I've done some weird edits because this is a cached number. Let's assume it's bad data because I've edited stuff weird.

01:17:20Okay, so I had just made some strange edit of updating stories and merging and unmerging them in my test data that threw those numbers off. And I am going to just hope that that's not a real production bug and I'll deal with it in prod if it is. pushcx https://github.com/MiniProfiler…
Oh, that load time. It is a gem called rack mini profiler. So it works in any, rack based web app. So rails or Puma and such, and then it is useful because it also shows you a breakout of where it spent time on different templates and here we are the queries. So you can click in here and see all of the queries and how long they took to run. So at T plus 43.9 milliseconds, we spent 0.1 milliseconds on this thing. And there aren't any here because everything here is primary key lookups, but if it spends very long on a query, it'll get highlighted in yellow and.

01:18:48Let's see, I think it's been a second since I've used this for a lot of debugging, and I don't remember which of these is the query time and which of these is the template time. But if I click over to the Rails server output,

01:19:18It does not annotate the individual queries with times. I thought it did. But you can see how this is basically the same info that you can get out of the Rails console. OK, so I can see the total time in active record is just under five milliseconds, which tells me it must be the smaller number because. So this has to be the view. And this has to be the query, because the time for this one view alone is twice the time for all queries. So that answers that question. I don't go into it very often. I think this might be the first time I've opened it on stream, but I used to be in here just constantly on production pages because we had a lot of inefficient SQL that I've slowly whittled away at over the years. There are still a few things, and ActiveRecord constantly wants us to add more 1 plus n queries, Yeah, this is nice because when I see one of these numbers and I'm like, wait a minute, it took 700 milliseconds to render a page? What the heck? It kind of pops out at me.

01:20:51Frici is it me or your line died?
Oh, so to finish the thought there, Shamless, about your pull request, how I'm going to pull that if out, Because the next thing on issue merging is, is my line dead? pushcx all my graphs are green, can folks see + hear ok?
chamlis_ fine for me
I said all my graphs are green. Can folks here and see okay? And for once, it's not my stream.

01:21:33Frici mm something weird on this end then πŸ€”
I'm going to take a second there to stretch my elbows. Oh boy. How do we do it on time? Hour 20. Well, you know, a reload fixes everything, right? So I want this comment label, I think, to appear on each of these because we're going to repeat this line for each block of comments that is specific to each story so people can also post replies specific to each story and i'm gonna have to generate a bunch more test data and i think i'm gonna go and touch the fake data task about that yeah

01:22:34But this one's just a fix for now that's worth... I was just saying that DiffTastic was good about... I'm surprised it highlighted these inner lines.

...58It's not the bold you changed something, I guess. I'm just getting conscious of the UI.

01:23:23And then that's going to become an in-page link for very long.

...41Oh, previewing. I still had a previewing bug. And I think, yeah, so this 1504 with Shameless's PR for fixing single detail.

01:24:06So there's the previewing bug and the, what's the other part of this?

...28pushcx https://github.com/lobsters/lob…
Okay. There's no other issues open. So this is 1456 that I'm going to work through in a minute. And then, yeah, let's get the. Let's get the previewing bug before anything else.

01:25:30So I'm pulling up my settings page off stream so I can invite someone.

01:26:04And then I'm pulling up my bug. And then...

...32So we have a bug in the single detail, line four, that, of course, word stories is being passed in as nil when you are previewing a story. So let's go look at the stories show. Yeah, see, and this thing where active controller is coupled to the views by IVARs is hard to make reliable.

01:27:27So here we build this array pass it to the view but since it's uncoupled by you just make here it is we build this array because you it's uncoupled you just kind of make a magic variable and it gets copied in when this template gets used elsewhere nothing failed when the template changed so preview needs to do the same thing because it uses that same view but it didn't know to do that and there's nothing to face it force it i guess i'll just put it in here it's not really a great location for it let's double check that that works which of course means i want to Comment that out. I should add a spec. Just a basic smoke test for the story preview would have caught that. And I'm a little surprised we didn't have one that caught it.

01:28:50Use a nice example URL, patch title.

01:29:01Exception, yes. There is the exception that's in my inbox right now. And if I uncomment this and reload, why did I lose the URL?

...24Oh, it's not actually her website name. Undefined method after. So this is probably failing because we are passing around a partially valid object, so that is, we have gone from a misdesign in action controller or action pack to a misdesign in active record.

01:30:04Yeah, so this had been relying on the template not showing this. But the robust fix is to make the model aware that everything is soup.

01:31:05Let's fix this to say very-harsh-sworn.net. There we go. New exception.

...40Model story 613, disownable by user. This is the same bug again.

01:32:15And we're going to have it again. Why is this URL field clearing between reloads? I'm missing something here. Because I don't want a rabbit hole, but that should be getting maintained.

...46All right, so there's preview fixed. Let's put that on the way. Can't type this moment. Let's add spec.

01:33:25And there isn't one yet.

...53I'm gonna go back, reinsert the bug so I can see my test fail.

01:34:03Over here.

...35for spring clothes curling.

01:35:14Just one basic smoke text. Response. No, I have to say... I'm trying to figure out how to... What kind of spec do I want here? that that preview is visible on the page. Because all of this content is going to be visible in the edit form, which will also be on the page. I guess just me.

01:36:36I should also probably check that there isn't a Flash error. Because I think this is going to be a... Title has been updated. Please remove components. Hmm.

01:37:07I don't see the big error.

...38So here's the form, right? And it says it's been updated, fine. Here's the submission guidelines, the markdown help. And there's a div for a story preview, but there's nothing in it. This feels like the test has failed.

01:38:25So story.previewing became true.

...33So if it's not... Where is that story preview div coming from? A few stories new.

01:39:14The story isn't valid. OK, so why didn't I see an errors flash on the page? Because I didn't scroll up far enough, did I?

...35Form errors header is empty. There's no flash. So the story is not valid, but it doesn't have any errors printed. This is an odd state. Let's go ahead and say debug story.errors. And that again.

01:40:11Oh, here we go. Now we got an exception. Did I just not save correctly? No, this isn't an exception. This is my debug. Okay. I just saw tons of class names and I thought it was an exception. So let's scroll up to look at the...

...39This errors is an empty array. So there's no errors, but we're not valid. Hold on.

01:41:10Sure wish it was impossible to construct invalid objects. Okay, here we go. I just wasn't seeing it in that scroll back somehow, or Rails was doing something clever about not actually filling in values in that errors hash. All right, so a whole bunch of stuff is bad. All right, so the title How is the title too short? How is there no tag?

...55All the attributes are missing when I preview. And there's a bug in there too. All right, so let's fix the little bug. If you have an empty title, then it's the same up case as down case.

01:42:39So I don't need that error. This still feels like something is wrong in the test harness that clicking the preview button is not submitting. I'm actually filling in the form because there definitely is a tag selected and there definitely is a title.

01:44:20I didn't get my output from the server.

...34Is it running the wrong action?

...50Here's a silly question. Is story preview wired up to Ajax?

01:45:03And this whole feature only works with JavaScript, which our test suite doesn't do. There's previewing a comment. There's previewing a story. So that's the problem. If I turn off JavaScript in my browser, we're going to see a different and interesting breakage. So here's another thing that should work without JavaScript and does not currently.

...43Let's see. In the debugger, No, I don't have a quick button to just turn off JavaScript, right? Cause every I'll just, let's see. And I lost that again.

01:46:26And that's broken. Of course, JavaScript should probably add that button if it cares so much. Why did my... Are my errors rendered down here because the submit story form... Okay, that's fine. That's just the debugging that I added. So now if I click preview, I go nowhere. So that's why I'm seeing this debugging in the test output. The preview button does book kiss.

01:47:42See what I would really like is for this button to submit to a different action. But that is not how HTML wants to work.

...59So this is going to go to. Yeah, that just submitted instead of previewing. That's. an exasperating limitation.

01:48:20So this is why there isn't a preview smoke test.

...41So I could just Instead of making a proper feature spec, I could make a request spec where I hit the preview endpoint because the preview action doesn't care that it's JavaScript. That would be not nothing. I feel like I'm going down the rabbit hole of complexity here and that this fix is sprawling. I want more of the site to work without JavaScript,

01:49:19This issue of having a form with two buttons and the second one goes to a different action. I know has been a hassle for me and rails before. Is there a submit in the markdown formatting help.

...50Did I just paste that in here? Hold on, I gotta look at prod real quick.

01:50:09No. Unsubmit story page. No.

...23Okay, no. It's not in the

...37Can I have one of these for the logout view?

...49Yeah.

01:51:32Really?

...51I like the way it says to keep searching as if that wasn't the first search I did.

01:52:07yeah what i really want is to put that action on the button and i don't know that i can that's never going to load because rails is just a giant reddit is just a giant javascript app use button tags specify the value and it's that's awful that's not

...41Yeah, that's not what I want to do. I want the router to separate these. I don't want my action to have to know this.

01:53:00Yeah, see, everybody has this hassle.

...16All buttons will call the same action. Oh, man, deep cut Rails casts. I don't recall that these had transcripts, really. vinitkme Hello, Hello!
Yeah, they're doing the same thing of.

...39vinitkme How are you doing?
Oh, hey, Vinit Kimi.

...47Yeah, this is just an annoying limitation of HTML. Good thing the forum isn't a discourse forum, or I wouldn't be able to see any pages with JavaScript off. Well, I will do it the way I don't want to do it.

01:54:34I'll find create.

...43vinitkme Ported something at work from Angular to Rails Hotwire, and it was such fun. First time writing some rails after writing Django for 13 years. You folks have it good in Rails World. Tooling is just top notch.
And then

...58You know, it's funny because having used mostly Rails for 20 years with a little bit of Django in there, I don't know. The last couple of streams, I guess I'm kind of annoyed at Rails, and I've spent a lot of time butting my head on its limitations, and I'm doing it right now, which is no fun.

01:55:29Let's see if that'll work.

...45vinitkme Grass is greener on the other side, or I have probably not faced any problem in my sum total of 2 weeks of writing Rails
I didn't attach a value to this, did I?

01:56:00vinitkme Btw, I wrote a Vim theme, you might like it.
vinitkme https://github.com/vinitkumar/o…
got to have a name all right so hang on let's oh only two weeks of rails well you know if you want practice i have created lots of bugs for you in lobsters that you can practice with

...35Oscura. Oh, you wrote a Vim theme. Give me just a second here. I want to see that I added this value correctly. This becomes class story preview value preview. So as long as there is a value in this name, what does this disable with? That's some kind of rails automation. All right. So let's three preview. Okay. That's better. So this is saying that it is trying to, it's not actually calling the,

01:57:44to find method first for nil hey we're back where we started that's the bug so if i do that don't need that let's drop down to dev preview oh and i should have seen the yeah so preview is in the story params which is what i wanted and fix the bug that we came here to fix 20 minutes ago and we're rendered without the layout because this is just assuming it's only called by ajax i mean i always say ajax but i mean The Fetch API. Hey, look, now preview works without JavaScript. And now this spec should run. So I'm going to comment out the big debug. And the spec should be green. I'm going to comment out the fix and see it fail because I haven't actually seen the test fail because of all of this rabbit hole. But almost there. Good.

01:59:21All right, let's definitely review this div. So this we said called preview. If we're previewing, there's the fix, there's the layout fix. So now it works out that. All right, add. And you, we have that alongside fix for the uppercase thing. We have shotgun in more stuff because active record paradigm is you pass around invalid stuff all the time. Gave a talk. years ago about that okay oh that's debugging we want to get rid of and that's the new spec great

02:00:35Great. brainwane catch you another time!
All right. So with that fixed, now I'm going to kind of, Vinit, I promise I'm going to come look at your color scheme in a second, but I'm kind of popping my mental stack here. Nice to see you, Sumana. Thanks for dropping in and chatting. I have a Metafilter account from like, I don't know, 10 years ago. I will see if I can dust it off and log in and maybe jump in the discussion about what it's like to have a moderation log. So now if I reload, it did the form resubmit. I want to check that I don't lose my title and URL when I reload. Because I had seen that behavior, and I think that was JavaScript. No. Why? Why did that go away? That's super irritating. you have a blank value explicitly on the URL. On the title, you don't. So what's the difference between these two fields that the browser maintained its form content for title but not URL? This feels like I'm seeing a corner case in browser behavior that I'm not familiar with.

02:02:38Hmm.

02:03:07I don't know what this difference is,

...37Both have an input with an ID. This one says autocomplete off. That's just to keep mobile browsers from trying to spell correct. Type is text. Value is m... You know, it's worth... I bet this is... So one thing that gets me every once in a while is this is the DOM, not the actual... source as came back from the server. So it's possible there is a difference or an invalid markup that the browser is healing. So let's compare. We have a this and this. And one is maintained and one is not. That's so strange. I don't know what that is. All right, well, let's take a screenshot of it. And let's turn JavaScript back on. I really thought this was going to be JavaScript misbehaving and clearing that field. So let's reload.

02:05:02And we'll grab, actually, You're not helpful. So when you unfocus this field, it tries to pull that info in. So that's why we got the validation error early. So let's fill in something here and grab that and reload. My, my little screenshot app does not have a way to retake the last one. So those are going to be very slightly different sizes. You know, it probably does have the feature and I just don't know what it is. It's flame shot. If anybody's curious, it's very nice.

02:07:04you

...56all right well there's a there's an odd ui bug and hopefully someone will look at that and go oh i know exactly what that is and i have the strongest feeling that as soon as i post this like in the next hour someone is going to come along and they're going to say oh this is some fiddly bit of html esoterica that i forgot 10 years ago and i'm gonna go oh shoot yes of course it's that Boy, is it not coming back to mind right now. So while I've been talking, I got a comment on this discussion. Hidden by two users, yes.

02:09:40vikur thanks for streaming this @pushcx
chamlis_ back again, hope I didn't miss much
Thanks for dropping in, Becker. No, Shamless, I struggled with the story preview for a minute, and then I'm actually coming back to this bug. You just got another comment on it from you. I, we, got a reply from El Balomo here. Oh, and I just hit, can I no longer, I had that bug for a second where I couldn't focus the text area on GitHub. I don't know what the behavior was. We saw this once on stream already. Oh, GitHub, they're having a rough season.

02:10:54chamlis_ I've hacked out an AWK script that catches that missing <% end %>, I'll try running it on all the other views and fixing the false-positives as I go, maybe something else is lurking
gtfrvz unharmonoius is a perfectly cromulent word
Oh yeah, the spell checker is always after me for words that supposedly don't exist, but... That's un-possible.

02:12:15Make sure this one is tagged with design just in case. All right.

...26Yeah. Oh, so Shamless, I know you tend to like these fiddly things. I just filed a bug that's right up your alley. pushcx https://github.com/lobsters/lob…
If I can nerd snipe you with one. It's some kind of browser behavior. happened even with JS disabled. All right, so now let's take a second to go back to Venit's color scheme. Collection of dark color schemes based on VS. Oh, nice. Oh, yeah, this is very much very close to my style of, oh, I don't know about this, two, three colors here. Oh, so energetic.

02:13:25Okay. Well, I like this first one. It's very peaceful. And I look at it, and now I see there are an extra color or two here. Let's add this to the scratch notes. All right.

...53Thanks for sharing that. Did you manually port these, or is there a tool for porting VS Code themes to Vim? There probably isn't a tool, but there could be. Frici think there is a tool as well that takes you 80% of the way there yeah
Unapologetically dark. I guess people really like their angry fruit salad. that they feel the need to reflexively rebut that. Ah, not bad. Yeah, when I tried Zed on stream, what was that, a month or two ago? chamlis_ I'd love to give a classic terminal a go one day, no fruit salad there
It was a whole hassle for me to find a plain color scheme. I think... I think I just did my color scheme once, haven't I? Can I search mine?

02:14:58pushcx https://gist.github.com/pushcx/…
Yeah, here we go. Two years ago. So this is probably still pretty accurate. So here's my, there probably isn't much difference here. I think I've actually filled something in here, right here. Let's just edit and delete all of that. hold on because i'm opening a personal config file i'm going to open it off stream the odds that there's anything spicy in my color scheme are pretty negligible right yeah so let's update that

02:16:01There we go. Folks occasionally ask for, oh, I should add this to the stream interface because people ask occasionally for my color scheme and my Vim config or my terminal setup. So yeah, there's a couple of small changes in here for the, I think Sinify is this, plugin I have that shows in a gutter whether I have any git changes for files. I really like that tool. And then Undo Tree I've started using, and yeah, it had some loud colors. But then the only other change that pops out at me is this reminder to myself that I have a shortcut for finding the names of syntax groups. Because I always need that whenever I'm in this file. So let's throw this into the scratch.

02:17:17Frici speaking of your terminal setup... how much is Alacritty taking away of your system right now with streaming and everythiing? I hear its a tad hungry overall
How much is... I don't know. I can check.

...26Frici (same question when you're working regardless of stream state but do various other things)
So I'm looking at alec i'm looking at htop off stream and there is alacrity is not even in the first it's maybe it's one of them is process like 15 i don't know i have a pretty beefy desktop with like a whole lot of cores so i don't notice alacrity's usage actually since i built this desktop two or three years ago i don't know any i don't notice anything's usage it is wonderfully powerful i just shoved in a new two terabyte ssd a couple weeks ago because it was i was constantly running out you know like i had 15 gigs of disk space free, typically, which meant anytime I forgot and filled up a log somewhere along the way, I would start running out of disk space and getting annoying errors. So...

02:19:06plain. Do the youth still say low-key? I can call it a low-key color scheme. I don't actually know the youth's slang. I've got some nibblings who are, I don't know, they're between, I think they're all between like 5 and 20 now. Oh, their slang is delightful. The youths. the best thing the best thing about being an uncle is getting to use their slang wrong or getting to use slang that is just out of being cool and you get to do that up until like age 16 or 17 and then they start figuring out you're doing it on purpose but until then it's just hilarious to be like oh yeah these mashed potatoes are so yeet and just watch them cringe inside and be like, oh no, but I don't want to explain. And then eventually it clicks with them like, wait a minute, I've been getting hassled for years. Being an uncle is great. Highly recommend, A plus. chamlis_ not sure if I count as a youth anymore haha
Let's make sure the build is good.

02:20:33So yeah, for chief, it's not clear. Frici I definitely don't count as youth anymore.
I, I don't even notice alacrity usage. Maybe it's worth mentioning that I don't really use a laptop. I just use an iPad with a, a terminal. So I SSH home and run stuff at home. So again, I don't notice. All right. So this is the break man bug that I reported. So that's fine. And so the build is green. And I've committed. And let's push both of those up. And deploy them because they are bug fixes that are worth deploying. And then was there anything else? So that was the previewing bug. This bug I reported. So let's grab that url from the twitch chat and put it in the scratch faster to just edit the id then try and select one string in the twitch chat okay Frici The reality is I should fully commit to my laptop being a thin-client and do things on my beefy desktop instead of trying to run too much locally on the laptop... especailly at its age (its an X220 a few years shy of drinking age at this point)
Okay, so let's see time check we are at two hours 20 minutes I typically run for about three hours. So this is the lobsters office our stream if you have any questions about the site or the code base or my bizarre terminal setup you can fire away. Yeah, I have. I used to have a Lenovo laptop that was. fairly thin I would or hang on how do I explain this in the early 2000s I had this same setup of a desktop and the laptop was a thin client and then somewhere in the late 2000s I switched over to just I'm using a laptop exclusively because I was Moving around and traveling and doing other stuff and then maybe five years ago. A little less I was like hey i'm not going to be moving so much. I would like to have a big PC for doing various tasks and I would like to have one big ass monitor and so. NoGoodNick_ I have an Apple Silicon laptop with 64GB RAM, it's so wonderful. It's almost four years old now and can still run LLMs locally.
I built a desktop and it's been real Nice, I do have like a pine book hanging around and that's a thin client kind of laptop but i'm not sure it even has a working Linux build on it now. NoGoodNick_ You're probably not a macOS guy :-)
Nice are you running MAC os on that laptop then no good Nick.

02:23:41NoGoodNick_ yes I am
Probably. I am not a Mac OS guy, but I don't have strong negative feelings about it. I mean, you can tell I'm a weirdo if I'm running a Linux desktop. That's pretty unusual.

02:24:02NoGoodNick_ I do have NixOS installed on my PC
When I worked at a company for a couple of years, I had to use Mac OS for work. It was one of their security controls to reduce their attack surface. So I'm familiar with Mac OS. It's fine, especially if you can put on Carabiner to get some shortcuts. pushcx https://karabiner-elements.pqrs…
And what's that other... There are a couple of different sort of tiling window managers. They're called tiling window managers, but Mac OS doesn't actually... gtfrvz i used freebsd on both desktop/laptop and server for quite a while
Frici Karabiner and Hammerspoon are just godsent to have on it
Daniel Katz- expose the right API to have a proper window manager, so they just push the windows around and it mostly works. Daniel Katz- I think if you can get something like that I find a MAC os desktop pretty comfortable. Daniel Katz- Nice. NoGoodNick_ yeah I just have hotkeys for pushing windows around, and for tiling into thirds and quarters
Frici if you're talking tiling WMs you're probably were thinking of yabai or something ?
pushcx https://www.hammerspoon.org/
Daniel Katz- yeah hammer spoon that's one of the things that I have used. Daniel Katz- let's grab that link.

02:25:12Frici very popular as tiling option
I don't know you by the ABA AI. Frici yeah i only learned of it recently, i'm out of the loop with mac os
So I'm like at least a year out of date on Mac OS and I don't have a strong opinion. gtfrvz i just use rectange.app for tiling on macos
I know there are three or four different things that are window tilers, but I don't have a strong opinion on them.

...51gtfrvz should be open source aswell
gtfrvz *rectangle
Rectangle app. Yeah, there's a bunch of these. All right. Now I'm going to actually look up. Now I'm going to accidentally close my browser. Damn it. No, I just minimized it. All right. Let's get that back.

02:26:14Recently closed windows. There we go. All right. So let's get that window back over here. Don't know how I did that. Amethyst? Yeah, there are a lot of these I've never heard of. I don't know Amethyst. I don't know Yab AI. Frici I haven't used macos in a decade so I am very out of the loop too
I swear there was... A solid tiling window manager. Tiles. NoGoodNick_ I think Yabai is more of a Japanese thing than an AI thing?
I think I used this one for a while and then I got something else that had... Oh look, a lobsters thread. This is only a week ago? pushcx https://lobste.rs/s/imht55/tili…
Huh. Well, what a topical thread from a wonderful website.

02:27:25Haven't used PaperWM. Oh, yeah. The input lag on macOS. That was noticeable.

...45You know what? I recognize this. Frici that's a decent site, I should read it sometimes (ironically that same thread is where i learned of yabai for the first time this week LUL )
Rectangle must be the one that I had used. Yeah, it's the... So like I said, limiting everybody to macOS was a... What's it called? Like I said, it was a security control. And so they also limited what third-party apps you could install. chamlis_ I hear they let *anybody* write code for them, can't be that good of a website
So if they had accepted one window manager, they were really reluctant to accept 10 more because that's 10 times the work to... review and monitor apps for a marginal benefit in improvement so i don't remember how that goes yeah yeah i got into tiling window managers when i was using a laptop primarily because i was using what was it called busybox and then that got replaced by a fork called fluxbox and then Frici openbox?
chamlis_ I've somehow ended up with tiling on desktop, and floating everywhere else
Frici no wait BlackBox it was!
something like that maybe it wasn't busybox that's the terminal all-in-one thing but i realized that running a like 13-inch laptop screen 75 of the time i had one window full screen and when i didn't i had two windows each 50 the other you know Frici I remember using that godless times ago
24 and a half percent of the time and then i was like well why don't i just use a tiling window manager to do this hassle for me black box there you go for g you remembered it yes you are correct yeah that was that was the first window manager i settled on on linux in like when i started running a linux desktop which was a full-time like 2001 yeah I played with a couple of things and settled on black box and then used flux box after. And then I switched over gtfrvz fluxbox + conky were en vogue at some point in time
i don't remember there was some other tiling window manager i used for like six months and then i landed on awesome and i've been here on awesome since gosh i don't know maybe 15 years something like i wonder if my conky i don't know conky yeah i must have touched this directory at some point i was hoping this was going to say like january 30 2010

02:31:00yeah none of these i must have tidied up this directory so one of the ways i figure out the archaeology of my config files is there's always some like extra scratch file or something laying around that i haven't touched in 10 years from whenever i started playing with software so i expected there was going to be one for my awesome config but there's not because i cleaned it up when i was doing all the streaming stuff last year

...41I don't know. I really do like that Linux gives so many options for this kind of stuff because I think there's a lot of value for power users in getting something that is very closely tailored to exactly their mental model for shoving these things around. And I really love the experimentation. But it's sort of like my opinion about software linting. I only care that there is a tool. I don't think that my particular tool is the best in the universe for everybody. Just have good tooling.

02:32:43You know, the question here is, do we do the list detail or the single detail header? I think it's got to be the single detail header. Oh, first it's got to be though, can I edit?

02:33:01Yeah, can't tab like I expect.

...42Frici Yeah tool flamewars are for a diffent age (and age group) πŸ‘€
Oh shoot, what was that bug we were just fixing? 1502? Yeah.

02:34:14So let's go look at the fake data task. It's funny. This is like the Docker file. This is one of a handful of things in the code base that other developers use that I barely touch. And so it is real easy for this to break. And I had to add it to the build, so I would quit breaking it. So for developers, because you can't debug a darn thing, looking at the development copy of the website with no data in it, it creates a whole bunch of fake data. And I would love at some point for to like run some queries on the database and be like, on average, you know, what's the distribution of because everything is log normal in users usage. That is just a rule for social software. So the story that gets the most comments gets like 300 comments, but the average number of comments per story is four because everything is log normal. It's one of these curves where the number one story is way up high at the peak and then things drop off. I would love to have fake data create fake data that looked more like that distribution. And you could say to fake data, okay, if the production site has 100,000 stories, I wanna have 1% of production. And so it would create you 1000 stories in your database, which is, enough to do some real things and some realistic things and to see some weird corner cases without having too much data you don't want to wait 10 minutes for this task to run and it would be nice if other parts of its distribution like we've seen working on this merge story ui that what is it something like one percent of stories get merged I don't think that is exactly the distribution here. I'm not sure it generates any merge stories actually. All right, some. Yeah, so it's just a flat, like five stories, three stories. And some of these, but I think this happens after comments.

02:37:09Yeah, if somebody wants, did I even put anything in here? I think I put it in as a feature request.

...21Nope, guess not. Maybe I'll write that up at some point.

...54I don't remember the default value for this. Stories, counts. Yeah, so by default it makes 100. And how many comments does it make?

02:38:19Looks at each story. This actually should generate pretty reasonable iron. Let's just run it. Get some more fake data. Yes. Oh, good, a bug. Oh, I didn't say why. I thought it was just enter would continue.

02:39:02This has a check for production, right? Yeah, OK. If you're not in development mode, it just refuses. It is a small fear I had of running this thing in production, and I go look for that line of code. You know, I touch this fake data task once every year or two, and every single time I'm like, this has code to prevent it from being run in production, right? I can't accidentally create a thousand lorem ipsum comments in prod that I'll have to clean up, because that would be real lousy, right? That's a lot of deleting and undeleting.

02:40:04So like rolling the die for each. Yeah. Okay. That could be smarter, but that's fine. Again, you run this once it took 74 seconds. It's not a big deal if it takes 74 seconds instead of 70, because you only have to run it once and it gives you incremental progress. So, you know, it's not just sitting there broken. Okay. So this one generated literally the top story. And we've got some comments that are deleted. So what's odd to me is that none of these generated comments are on the merge story. They don't have the icon saying, let's look at these.

02:41:04Okay, this one, did there's our icon there's our icon all right so i'm going to use this one as test data all right i guess i don't actually have to tweak fake data woo free checkbox yeah there's about half and half for the top level comments that's fine and i'm logged in Oh, yeah. So I had to generate some moderation data like, oh, look, the mod wrote some lorem ipsum to delete this comment.

...57So we print the single detail with all the merge stories. And then we're going to grab this. Should this oil move in there? I feel like I've asked this questions before. All right. I'm going to leave it out for now. So we print that and then come down here to the comments. So this is going to go away or change a bit. And then similar. Oh, that's an interesting bug. It's only going to be the stories with similar links from The primary, that's a feature to fix.

02:43:43Oh man, this ribbon's going to be a little interesting.

02:44:11I almost want to move the preview out into its own page because only this part should get rendered for a preview.

...29Well, I guess also this. Not a lot else.

...38Hmm. It's really interesting as I do this refactoring, we are definitely in one of those mid refactoring states where the code is getting a lot uglier before it can get cleaner. I kind of wanted to force that because I was so unsure about the database model of Should story be the top level thing for all of the merges or should it be each individual thing? We're getting there. But seeing the complexity of that over and over in the templates and in the actions is what's helping build up that intuition.

02:46:03This can go away. Actually, if this moves down here, see, this is more of that, this is how we broke things in single detail of moving these ifs around and then just got to line them up manually. So that one was a valid edit, but Very little tool support there on whether I'm doing the right thing. All right. The other question here is, what do we do when a story is deleted? Well, we skip it.

02:47:27And now this is a redundant if, so that goes away.

...36Well, this is interesting. So you can leave comments on a story for three months. I want to say it's 90 days. This if is just the top level parent. Yeah, so it's, is accepting comments is it the one i called it earlier here the primary story do we want to just use that timeline for all of them so if we have you know title a title b we merge stories for you know

02:48:27up to a week when they're the same topic, right? So do we take the 90 days from the first one or from the each individually? I feel like it's harder to explain why this one and its comment tree would still have a comment area when A doesn't. they're not going to be indented they're just going to be abc here where we have you know comment comment comment and so it's a little strange that this one would have the form this one wouldn't and it would encourage people to leave a comment down here when they want to talk about this one yeah we'll just we'll say all of them so Let's explain that to our future selves.

02:50:19So this is a little painful where that's a bug that there is one comment object. Because if there are multiple forms, we kind of want to have one comment object for each form. It is a bad idea to start writing two comments at the same time and submit one. But it's a thing someone could do if they wanted to throw a comment away. And if we fill in the, all right, so we're just going to leave that as a bug right now. Yeah.

02:51:15And now, instead of passing comments, we're going to pass each story's comments. And this can become MS. That's going to be a 1 plus n query right there, I bet.

...40Let's reload and see if I get the rest of Pyke complaining. No? Oh, you're not in the loop. All right, let's leave that one alone until I'm ready to move it into the loop. So you become MS. And instead of passing all comments, let me do the ugly thing, and then I'll move it up into the controller. So we'll just say comments dot

02:52:44All right, so I didn't get the, so now here's everything from the first one and then there should be all of the merged, yeah, a new comment box and everything from the second one. And none of them have the merge icon, which is fine because now they're on that story.

02:53:13So I've got to rerender the this section of it. Actually, all of this, that's kind of a lot.

...54All right, let's just slop it into place and tidy later. Let's see how this looks. So now we are only going to pass in the one story.

02:54:14So we're coming up on the end of the stream both because of time and also because someone has started sawing concrete. I don't know 60 yards away and it's kind of an incredible noise. So. it's killing my concentration I don't think the MIC is picking it up, I really hope not but. Frici we are thankfully not hearing it but yeah its definitely a pain for your end
So this one is though is don't need that anymore. Cause we're, we're kind of moving, hiding up to the concept of the top level. Good. Oh, thanks for reaching. I have a, a noise gate on the microphone so that quiet background noises should go away. So hopefully you don't ever hear me shifting in my chair, because it kind of ticks or clicks occasionally. Actually, there's a curious thing. Do you get much of my keyboard noise or my mouse noise? I think probably keys, right?

02:55:33Frici some keys but no mouse
veqqio We hear the keys very clearly
So this one stays top level. All right, that might be enough. Some keys, but no mouse. OK. Yeah, I have the just a pretty basic microphone. So all right. There we go. So that's kind of the display I was dreaming of where these are all the things on the merge story. And there's a comment box here. These are all the comments on the first one. And the header is repeated. This is going to be a big disruptive UI change. So we're gonna have to make sure that it is very much worth it.

02:56:29Yeah, so stuff like flag and hide and save. I mean, it makes sense to save individual links But for hide, I think you want everything to go away, not just this one. But then flag, yes, for this individual. So this is really, this is good. This is forcing us to think about the difference between an individual story and a whole merge story.

02:57:12Do I want like an HR in here? I think I want more vertical space for sure.

...46I'm going to put it on the tail. So let's just say, see, this is how you can tell. Oh, I'm typing off screen. This is how you can tell I'm not a graphic designer. I'm just going to nudge vertical space with BR tags rather than actually put it on. Yeah, that's too much. See? And if I cut it down to two BR tags, Oh, that feels comfortable. All right.

02:58:27It's funny, you know, I was talking, wrapping around back to the beginning of the stream, I talked about how merging this little pull request, or changing the avatar and the In it and the username to be together in titles was going to catch people's attention, but they probably wouldn't be able to tell you what changed. I keep catching my attention on these minuses because we changed the width of those in a pull request right at the beginning of this stream and. wondering why i kept getting distracted by them and it's clicking with me of oh you they're literally one or two pixels wider now you're doing the exact thing you described where your attention is getting snagged on minor changes just because it's very very familiar so

02:59:37And now we have a summary here and that summary is wrong. I think it wants to move up here, don't you? What if the unread was here? Wouldn't that be nicer?

03:00:06veqqio Unread is good where it is!
Unread is good where it is, yeah. See, I don't want change for change's sake, but I'm trying to think of how to... Yeah, this left side is wrong too. That's part of why this looks janky is it should be about one M to the correct, to the left or the right. And if it goes left, it'll line up with the story. If it goes right, it'll line up with the comments. But it's gotta be one of them and not in between, because that's fugly.

...47veqqio Namely clicking unread sends you down to an unread comment, which will have its own unread button, and that's towards the left
So overall, this is what I wanted, and it feels kind of bad.

03:01:01That's a good point.

...10So what if I... Where's that display of... unread comments. Oh, it's up here. So I'm going to repeat this hack. Oh, that guy's got a lot of things to saw. So let's at least get the numbers correct. So this should be 18 and six. How are there 20 comments if there are 18 and six? Oh, a bunch of them are deleted. So I got to think about that too. You still say 20. Did I edit the wrong thing? Probably. Yeah, they're both wrong. What did I do?

03:02:48veqqio Perhaps you didn't merge in the deleted comments? The total above was correct
It's here. I did it in the right place there. I just need to put it also here. So this repeated logic is going to have to get cleaned up. But yeah. Now we are generating different numbers because this is filtering out what's deleted. So it'll, this is one of those cases where things are wrong for mods and right for users. And I a little bit don't care when it's wrong for mods.

03:03:35But that's why these are out of sync is one of them is all comments and one of them is the number of deleted comments. All right. So this is reasonable all right so now this top level comments this needs to be a link down to the sub threads where like if i click this it should highlight this story and scroll down to it so that it's the top of the page same with this not you know when you select a when you jump to a comment the whole comment becomes here let's do it Highlighted should be like this highlighting, but just for the story list detail. And I think maybe this even wants to be a third template where there's single detail, list detail, and maybe a merge detail because if the links are going to be different, I'm so reluctant to put more booleans in there. I don't know. of feeling wishy-washy because i did the design i wanted and i'm not looking at it and going ah that's satisfying ah that makes sense i'm going what the is going on on this page and i don't know if it's because it's such a big change or if it's because it's just a bad idea

03:05:21veqqio I've been dealing with this exact problem on my project. Nothing seems good.
That's a title.

...34veqqio Question: Would you allow a user to submit multiple links?
Yeah. On the GitHub issues, I added that label for design because I would really love to attract experienced graphic designers to help with this. Because there is a lot of programmer UI happening on lobsters, and it could be better. Heck, it could be good. And I'm mostly hassling myself here, because I don't feel like an especially competent designer. What if I put a... This is probably going to be worse. It's going to be redundant. What if I put an HR above each story?

03:06:31It actually does feel a little bit better. Why is it wide here? Oh no, it is wide up here. It just doesn't feel like it. Yeah, we are so inconsistent about the widths of things. I've been slowly pulling things into Grid and Flexbox instead of just floats. So Vec, your question, I did see it. I think, yes, it should be possible for a user to submit multiple links. And it is a thing that happens now where submitters decide, like for a release, do I want to submit The changelog do I want to submit the blog post announcing the big 6.0 version do I want to submit. The blue sky link where they announce it and then for very popular projects, we will get two or three of those alternate links will merge them together. It would be nice. To allow people to submit them at the same time, but then also. If someone submits a top level comment that says. Hey, here is a great response. Or here is another link. This happens almost every day. I think it would be great to allow people to promote that comment to become a story, basically. And that story in the sense of one of these entries on the page. Alright, so I think I think I'm going to wind down the stream here. veqqio Merging comments and stories like that is difficult and has weird ui implications
This is a very incomplete, not finished point, but I want to sleep on it. I want to kick this design around. veqqio But good luck!
I don't have a strong preference and I can't think with the saw going in the background. Yeah. Yeah, there's lots of I think story merging is one of those. It's very strange and unusual. None of our most similar sites like Reddit and Lemmy and Hacker News do it. But I think it is great. And it's worth the sweat. Do I have a branch for this? Doesn't look like it.

03:09:34veqqio My project is fully this graph, but has sentences as id'd elements, so you can annotate posts etc. with RDF
veqqio Assets all become interesting
Your project is fully this graph, but it has sentences. Ah, neat. veqqio This is why I suggested necromancy before, so you could have a single link be forever commented once
You'll have to send me a link to your project when it gets to alpha testing. I'm happy to take a look. Necromancy. Yeah, I see. Where's my... veqqio Have a good day!
missing terminal here we go all right so this has been the lobsters office our stream for March 27 2025 thanks for hanging out with me folks got a lot of bug fixes in hopefully didn't get a lot of bugs in and the next scheduled stream will be Monday afternoon That one is actually a little bit iffy because we're going to have a guest in town next week, right? Where's my calendar? Where's my calendar? Yeah, actually all next week, we're going to have a house guest. So I may not stream office hours next week, we're gonna play that one by ear you can check out my i try and always post a link on blue sky and mastodon i don't always remember to delete them from the twitch ics fingers crossed that i will be good about that so maybe i will see you on monday for the usual scheduled stream i'm not sure how that'll go The best way to make sure it happens is to come up with really interesting things to discuss and email me or message me on the site or one of those social networks. Or just find bugs in my stuff and then I need to spend dev time. All right. In any case, thanks for joining me. I will see you again before too terribly long. Take care.