we should get Lobsters some piercings

Streamed

Jujutsu and healthy communities, discussing the future of jj, GitHub open to “disruption”. Brainwane’s talk on hospitality, jerks, and what she learned in Wikimedia. Productive disagreement and constructive conflict in communities. Ad hominem defense. Merged #1764 adding open graph multiple author links. Chamlis’s Poisson distribution query for extrapolating active users. Hat request approval bug with short messages. Markdowner, link contemporary usernames. Slack’s notification flowchart.

scratch


topics
  jujutsu and healthy communities https://lobste.rs/s/ghdv6w/i_see_future_jj
    brainwane's talk https://en.wikisource.org/wiki/Hospitality,_Jerks,_and_What_I_Learned
  PRs
    fix active users graph https://github.com/lobsters/lobsters/pull/1763
    vote hydration https://github.com/lobsters/lobsters/pull/1748
    open graph https://github.com/lobsters/lobsters/pull/1764
  open graph multiple author links refactor
  hat request approval bug
  markdowner: link based on contemporary usernames
  username change timeout
  story merging UI? https://lobste.rs/c/3ssni6


chamlis's second query:
  WITH user_interaction_rate AS (
      SELECT users.id,
              (
                  (SELECT COUNT(*) FROM stories
                          WHERE stories.user_id = users.id
                          AND stories.created_at >= (now() - INTERVAL 365 DAY)
                  ) +
                  (SELECT COUNT(*) FROM comments
                          WHERE comments.user_id = users.id
                          AND comments.created_at >= (now() - INTERVAL 365 DAY)
                  ) +
                  (SELECT COUNT(*) FROM votes
                          WHERE votes.user_id = users.id
                          AND votes.updated_at >= (now() - INTERVAL 365 DAY)
                  )
              ) / LEAST(365, TIMESTAMPDIFF(DAY, users.created_at, NOW())) AS rate
              FROM users
  ),
  
  user_active AS (
      SELECT users.id,
              EXISTS (SELECT 1 FROM stories WHERE stories.user_id = users.id AND stories.created_at >= CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE)) OR
              EXISTS (SELECT 1 FROM comments WHERE comments.user_id = users.id AND comments.created_at >= CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE)) OR
              EXISTS (SELECT 1 FROM votes WHERE votes.user_id = users.id AND votes.updated_at >= CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE)) AS active
              FROM users
  ),
  
  this_month AS (
      SELECT users.id,
              IF(
                  user_active.active,
                  1,
                  1 - EXP(
                    -1 *
                    user_interaction_rate.rate *
                    TIMESTAMPDIFF(DAY, NOW(), CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE) + INTERVAL 1 MONTH)
                  )
              ) AS expectation
      FROM users
      INNER JOIN user_active ON user_active.id = users.id
      INNER JOIN user_interaction_rate ON user_interaction_rate.id = users.id
      WHERE users.banned_at IS NULL AND users.deleted_at IS NULL
  )
  
  SELECT SUM(this_month.expectation) FROM this_month;

biz book history
  Crossing the Chasm https://en.wikipedia.org/wiki/Crossing_the_Chasm
  The Innovator's Dilemma https://en.wikipedia.org/wiki/The_Innovator%27s_Dilemma


"We build our computers the way we build our cities--over time, without a plan, on top of ruins."
  https://en.wikipedia.org/wiki/Ellen_Ullman

https://en.wikipedia.org/wiki/The_Death_and_Life_of_Great_American_Cities
https://en.wikipedia.org/wiki/Guns,_Germs,_and_Steel


Should Slack send a notification flowchart:
https://substackcdn.com/image/fetch/$s_!WJca!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe677600d-de1e-4212-96bf-951fdceb63f5_1491x1421.jpeg


title
  soggy potato chip theory, I'm intrigued
  we should get Lobsters some piercings

post-stream
    

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

Recording



02:2240 minutes late. Oh boy. So I was, this is the Lobster's Office hour stream. pushcx Throw questions about Lobsters in chat anytime!
Let's throw the little, throw this one out. Lobster, lobsters in chat. Anytime, we'll throw that in. And then this is Lobster Teeter. brainwane Hi! Hope you are doing well
It is a community that discusses programming mostly. Oh, boy. I bet the audio is messed up. Hey, Brain Wayne. Thanks for dropping in. I'm doing well. All right. Probably I sound less like a robot now.

03:12pushcx https://lobste.rs/s/ghdv6w/i_se…
Oh, actually, there's a really interesting discussion happening in the comments on... this top story here brainwine that you might be might be right up your alley because you've done a lot of stuff with online communities and i am actually starting late because i started writing a long comment here this one that starts i think i got the idea from simon payton jones just talking about what i see being a sustainable healthy community and a little bit about brainwane Thanks!
why that's important so there's there's kind of the question of why are people adopting jujitsu and there are there are technical reasons and there are user interface reasons there's functionality but then also like one of the points i've made that i see reflected in steve klabnick's post is I pretty strongly believe that a healthy community has a good shot at fixing almost any problem. So, you know, when I looked at jujitsu, I certainly was evaluating the documentation, the user interface, the data model, the, you know, all of these technical aspects. But then also, lurked on the Discord, I read some of the issues. I looked at the maintainers and if they are building a healthy community, almost every technical problem is fixable. So anyways, I wrote a lot about what I think it means to be healthy and some of the values I'm looking for. And I tied it back to some of the earliest comments I left about what I think the lobsters community should be like. There's one from 9 or 10 years ago one from maybe 12 or 13 years ago 11 yeah that's kind of rounding yeah we'll see how it goes so that is the kind of stuff we can talk about in i should grab this link

05:49brainwane I've now quickly read Steve's and your thoughts
kind of thing we can talk about here in Lobster's Office Hours of why have I pushed the community in the directions I have and why do I maintain it the way I do, which is both the code and the general vibes.

06:16I just had this tickling my throat this morning. I hope I'm not getting sick. Ah, yeah. I am sure... Actually, brainwave, what's probably most interesting and useful, especially for the stream archive, is if you could link to where you wrote a blog post, like 10 years ago and explained all of this better than either of us could because I know you're ahead of me on this at the least.

...53And I'm just sort of assuming that you've already written a post where you explain something that I'm struggling to understand because this has happened a couple of times.

07:15brainwane So when we talk about this stuff with a general audience, I think we run across a very-difficult-to-surmount gap in audience -- those who can sense hospitality and its absence, and those whose temperament is nearly impervious to that datum
The stream boss Raz here has been prowling around and making some noise this morning, so we may hear him meow, but even though he hung out for the first hour or two of the last stream, I think he's unlikely to show up today.

...37Oh, yeah. olexsmir meow
brainwane I appreciate your kind assessment of my repertoire, thank you
I think that is a really good point, that hospitality... Oh, I should have used that word. is a really good word to use in this context and yeah there certainly are folks who can't really tell and unfortunately there are also folks who i can't put it more charitably than saying there are some people who enjoy hurting others and that kind of sadism is poisonous to a community and you have to yeet them as quickly as possible to use the parlots of our times all right so i think i and while we're chatting i'm gonna do some of my maintenance work like work through the prs the code must go on to borrow from brainwane https://en.wikisource.org/wiki/… is the talk I gave in 2014 about the Recurse Center, Wikimedia culture, and "hospitality" vs "liberty" as values since you mentioned the possibility that I had written something 10 years ago!
I guess Moulin Rouge had a song that was the show must go on, but I don't remember if that one was a quote of somebody else.

08:59Hospitality jerks and what I learned. Aha.

09:29Okay let's let's grab this and put it in the notes.

...42Oh great there's a transcript. brainwane if you search for "the spectrum of liberty versus hospitality" in that piece you get to the part I am thinking of
Wonderful.

10:01brainwane in https://en.wikisource.org/wiki/…
was able to articulate this as the spectrum of liberty versus hospitality. brainwane yeah I polished and posted that transcript ASAP
The Wikimedia movement really privileges liberty way over hospitality. And for many people in the Wikimedia movement, free speech, as John Scalzi puts it, is the ability to be a dick in every possible circumstance. Mmm, Scalzi. Criticize others in any words we like, change each other's words, and do anything that's not legally prohibited. hospitality, on the other hand, is thinking more about right speech, just speech, useful speech, and compassion. Ah, compassion is another word I should have used in my comment. brainwane (If You Give A Speech You Care About, Post A Transcript: https://harihareswara.net/posts… )
We only say and do things that help each other. First responsibility of every citizen is to help each other achieve our goals and make each other happy. I think these two views exist on a spectrum and we are way over to one side. Moving closer to the middle would help everyone learn better. Huh.

...53I don't know that I, so I'll obviously have to come back and watch your entire talk after the stream at some point, but my immediate reaction is that I don't see the two values as in opposition. Hmm. I also don't know that I agree that liberty is a good characterization of it.

11:40We have demoralizing people in the Wikimedia community. We have some demoralizing processes in place, and some of us have gotten used to it. Yeah, I think That might be the more useful spectrum is kind of talking about health of a community is whether it's encouraging or not.

12:08I think one thing that's happening here is, so to reuse your quote, It says, you know, free speech is the ability to be a dick in every possible circumstance. I think... I'm going to assume that you are deliberately echoing the jerk's justifications there. Because that is kind of the... the nicest way they have managed to frame it, but I don't know, that kind of argument has seemed so unconvincing and just vacuous and disingenuous that I can't take it seriously. It's the... one expression of it that actually is in response to one of those early comments that i linked to of my own on lobsters is there's somebody who says well sometimes people are wrong and it always looks like being a jerk to explain to them that they're wrong and no no it doesn't you are bad at writing if you have to hurt someone's feelings to correct them if that process is oppositional instead of collaborative, you are bad at collaborating. You are not like, I'm telling it too real. It's just what failure looks like. chandu16 DinoDance DinoDance
And then that failure gets justified as, oh, I have to hurt people to explain what something is, which also is not the case. I don't know. brainwane There is a distinction worth making here between Wikimedia and some other group collaboration projects. Let me dig up some thoughts
I see a lot of versions of those kind of arguments and I don't like any of them. I don't know. I'm going to have to come back to this. Where's my... Oh, yeah. And I have... It is maybe worth mentioning that I have... basically no context for what Wikimedia culture is like, especially, what, 10 years ago? 11? Yeah. I've never been involved in that community.

15:04chamlis_ hi all, hope things are going well
chandu16 what is this project?
So between streams, I merged this quick little bug fix from Felipe, who had made this feature that has a small bug because we can't do a naive extrapolation for one of these charts because it works very different. Hey, Chambliss. Yeah, things are good. Thanks for dropping in.

...35And then the other two open PRs. chandu16 so why ruby devs get paid more than other langs
Chandu, this is a project called Lobsters. pushcx https://github.com/lobsters/lob… https://losbte.rs
So the GitHub here is github.com slash lobsters slash lobsters. And there's the homepage of our project. chamlis_ on the extrapolation, did you get a chance to run the poisson query?
So I work on it or I chat about any kind of community issues here on the stream. If you look in the... Under the Twitch box on the Twitch page, there's a link to the stream archive and a bunch more information. I haven't seen a voice on query, Chamlus. Did I miss a comment or a PR?

16:26chamlis_ I sent a pastebin in #lobsters, I'll dig it out
If you have a link, I'd appreciate it.

...35chamlis_ no worries! https://pastebin.com/vHaAfsgh
Oh, it went by. Sometimes the scroll back gets me there. There are now, what, like 900 people in the chat room? If folks really get to chatting and I'm busy or offline doing something, I usually notice pings, but even those aren't perfect.

17:11kaelena g'morning! kaelenWave
chandu16 you use stored procedures?
with user interaction rate. chamlis_ it uses up to the last year for each user to model how often they interact, and then a poisson distribution to get the expected value of the number of additional users by the end
Let's look at the last year of stories and comments, and we'll divide them by... Okay. Then we'll figure out... Oh, hey, Catalina. Chandu, no, we don't have any stored procedures. pushcx https://www.xoruby.com/
And the video is not up yet, but I gave a talk at a conference called exoruby.com. So I gave a talk at Exoruby Chicago. So if you follow them on socials, they'll link the thread. But I think stored procedures are probably not worth using. And there's a couple of minutes in the middle of the talk of how I explain why. And then otherwise, I mean, the code base is there. You can check it out for that kind of question. chandu16 you might be well known ruby dev?
So this month... Chamlus, is there a reason you did just... stories and comments and not votes? Because... Loots are so much more common. I guess in absolute terms, I am a well-known Ruby developer because I've given a couple of talks at conferences, and lobsters is one of the more popular open source codebases. But it's not like I'm important. chamlis_ I thought active users didn't include votes, but if it does that should be in there too
So let's remember my own aliases. brainwane So I do recommend you check out the entire talk, but it does assume that the reader/listener is a Wikimedia participant. The English Wikipedia news outlet The Signpost liked it at the time https://en.wikipedia.org/wiki/W… After I started at the Wikimedia Foundation in 2011, I helped introduce a very early code of conduct. Over the following years, work continued; a few years ago they introduced a Universal Code of Conduct https://harihareswara.net/pos
I thought active users didn't include votes. No, active users does.

19:30brainwane https://harihareswara.net/posts…
So we're on line 23 of model stats.

...47chamlis_ aha, must've missed that, my bad
Oh, thank you. Your link to your blog slash POS... Oh, it was a typo. I get it. You fixed your last link there.

20:12brainwane The problem of discouraging interpersonal behavior in Wikimedia spaces is one that has received a lot more attention since ~2008 or so
That is a really, I will have to come back and read the Universal Code of Conduct because that is, man, what a big project and a big global cross-cultural scope to try. That's interesting.

...36I'm going to run your query anyway, Chambliss, because I'm curious to see what the number is. So this month, it estimates 1763.

...55brainwane yes!! big huge long slow project to try to be cross-cultural and so on
Let's look at the production number. The titles are still missing. Active users by month. That feels a little low because Our trend has been that we'd be somewhere... chamlis_ I guess some people only vote?
Here, can I just... There we go. We'll use the bottom of the browser as my little guideline. Yeah, I would expect us more around 2,700. Yes, absolutely, people vote. So if you look at... If we look at these different numbers... so let's grab yeah okay let's just do it select distinct user id stories where created at is greater than or equal to nano minus well oh read line i'm always fighting read line interval right select

22:12All right, so 464 people in the last month have submitted a story. brainwane It is important for Wikimedians to be able to engage in good, constructive conflict with each other, and to be oppositional and stubborn in the face of sabotage, spam, vandalism, etc. which is a much bigger problem for Wikimedia sites than it is for nearly all open source-type projects https://www.theverge.com/cs/fea…
1,400 have submitted a comment. And then I would guess this number is going to be at least in the neighborhood of 2,000. Yeah, 2,800.

...53There are relatively few people who vote and don't comment or vote and don't join. If we wanted to extrapolate in a separate query, honestly, you could just do vote.

23:26brainwane the discouraging interpersonal habits aren't just because of personality stuff/untrammelled bullying. It emerges partly as a reaction to the real actual bad actors
So, Sumana, you're... Oh, I did read this. Wikipedia, because it's a boring article, is excellent. I really enjoyed that. And, yeah, that's one of the things... Your note about that it's important for Wikimedians to be able to engage in good constructive conflict. That's... brainwane "productive" sounds good yeah
usually say productive instead of constructive but i think they're kind of synonymous i think one of the big values of online communities is kind of productive constructive disagreement where i mean we can't settle tabs for spaces that one is still raging it's relaxed a little but it's still going and there are lots of things folks disagree about And the actual process of discussing those things can be healthy or unhealthy. pushcx https://lobste.rs/c/artw2p
And there was actually a great version, just a wonderful example of this here in the Jujutsu thread, where I linked to, I'm going to link to it in the chat, a sub thread started by a user named Fox Boron, who is a contributor to Arch Linux and some other big open source projects. And he said, so this one is, I've personally disaggregated JJ as a tool altogether because of it. And it is the fact that the project has a CLA. And this kind of dismissive comment usually doesn't go anywhere positive. And if you read the Lobster's Mod log pretty closely, you will see me deleting some of them because they so rarely go anywhere. And Steve asked a good question here of, hey, can you just say more? I'm not trying to pick a fight, but I don't see quite how these connect. Can you say some more? brainwane You mentioned that it's crucial to concentrate on whether the environment is encouraging. Whether it feels/is encouraging is something that can feel subjective -- so it's hard to convey the issue to people who have that temperament I mentioned, imperviousness to social discouragement
And Fox Boron left a much more thoughtful and cohesive comment saying, well, this is why. And I also think this that he makes some really good points about the failure modes of CLAs. And so this right here, these couple of comments are a very productive disagreement that was getting at a, how do we understand these projects? What are their failure modes?

26:19brainwane yeah that CLA disagreement seems very productive!
And I just liked it. I was really happy to see this one. brainwane yay for Lobste.rs being a place that forments that
And it informed my thinking in a way I wrote about in my comment. In that it prompted me to reconsider some of my thoughts on open source licensing and post open source licensing.

...49Curviousness to social discouragement. You know, that's a really interesting way to put it. You've said it twice now, and one of the ways I've said that is... It's not quite synonymous, but a thing I have seen is that there are some people who cannot tell good attention from bad attention. kaelena I would have to agree with that.
kaelena attention is still attention, whether good or bad.
and that can be they're very isolated that can be they're bad at reading social cues that can be the kind of sadism i talked about earlier where getting the bad attention even of being punished is something that they enjoy because they get to feel like they hurt somebody and so impervious to social discouragement. That's a very nice roundup way of putting it. kaelena absolutely
Yeah, another way I've put it, Kaylena, that's very important to moderating is attention is always a reward.

28:07And I think this is one of those know not to to get too heavy into like what is modern times and are we living in a state of anomie but especially attention from the moderator or from say the streamer which i know you do is always an interesting novelty if nothing else even if the person is in the process of getting chided or punished attention from the mod is kind of fun like it can make your day and i don't say this to say that people enjoy getting punished it's more of a i don't know how to put it better one of the things i try to do as a moderator is be kind of boring in the same way that that verge article recognizes that a value of Wikimedia's processes is that they're kind of boring. They are an assembly line that happens to you. They are impersonal, which also means fair, but in a way that is not personally exciting in the way that running into the BDFL is kind of exciting. brainwane So when I was speaking to people who are already used to participating in these discouraging-to-many-people Wikimedia spaces, I wanted to acknowledge the great things about our "Be Bold" value - yes, go ahead and make new pages, fix things, etc. without getting consensus first! Even if it ruffles feathers! "change each other's words, and do anything that is not legally prohibited." is important shorthand there
This is one of those slightly fuzzy concepts I assume someone has written about better than me, that attention is always a reward.

30:00pushcx https://lobste.rs/c/63u8je
chamlis_ when you're free again, I updated the query to include votes, and exclude banned/deleted users https://pastebin.com/bR4ppC8J
Oh, and Kay, you joined later, and I don't know if you could scroll back, but I will share this link again for you that it might be interesting to see because we've talked about community stuff.

...33brainwane The "attention is always a reward" concept - you've heard of "soggy potato chip" theory?
Oh, thanks, Chamlus. Yeah, let's run that.

...44graefchen Heya limesHi
kaelena as a parent and a content creator, I have seen attention as a reward or dopamine hit. folks want to be seen and/or heard.
I have never heard of soggy potato chip theory, but it sounds vivid, and I'm curious to hear about it. Please tell me.

31:00brainwane To a hungry kid, even a soggy chip is better than nothing
chamlis_ I'm mostly curious to see how well it ends up predicting the final count, to see if a poisson model is good enough
I should actually skim this before I paste it into the prod db.

...10kaelena hmm soggy potato chip theory, im intrigued.
brainwane yup
brainwind that is a that is the exact same concept yeah you know another way i've heard that in the cooking context is hunger is the best spice and i certainly think that carries over to attention where the spice of hunger is so strong that It overpowers whether the food is rancid, right? If I'm not stretching that metaphor too ham-handedly. kaelena *rimshot*
See what I did there? brainwane spicing it up!
I used a food metaphor on a food metaphor, ham-handed. I have an English degree. Occasionally it shows. Ah, ah, ah. brainwane now we're supposed to butter you up right?
Spicing it up.

32:22So your whole approach... I have LLMs if I need compliments. kaelena haha
I have access to them and they will... Who was it? Was it Josh Branchot? Hold on, I gotta grab this.

...49kaelena they'll gas you up
Here we go. Let me... Find this on his profile. He's a Ruby developer. Taking your time, beast guy. pushcx https://bsky.app/profile/jbranc…
I really like this post from him. brainwane ahahaha
Not to brag, but I just posed what many LLMs are calling a great question. I like that.

33:23chamlis_ lol
So. Channels, this is an interesting approach because as I was thinking about. Fixing the active users graph, I was thinking about. pushcx https://lobste.rs/stats
So the reason the active users graph goes wrong, the extrapolation for anybody who is is tuning in or is not familiar with the chart, we have these charts at Slash Stats. and we try and naively extrapolate what the current month value is because otherwise the chart looks really funny where the last value is down here on the third of the month and slowly climbs up to so you know it's that chart where you look at it and the last month looks like it's the end of the world and this went wrong on the active users by month because brainwane right now when I need to feel like someone is worshipfully praising me, I just imagine it. "we were so wrong and you were right, and indeed you consistently are" etc. it's always ridiculous
For stories submitted, comments posted, votes cast, these are independent actions. If you vote yesterday, it doesn't mean you vote today. But if you are an active user yesterday, you are probably an active user today. And so I would have thought to chandu16 all this stats are mysql queries right?
figure out a fudge factor of what's that returning value, because it's probably something in the like 85 to 95% of people who are active, you know, will be active again in the month. Yeah, this is MariaDB, which is pretty equivalent to MySQL. You know, BrainWayne, in the inverse of that, A useful concept for me has been the ad hominem defense. So people are used to in rhetoric ad hominem attacks where instead of saying your idea is wrong, you say you're a jerk or you're wrong about everything, right? That would be an ad hominem attack. brainwane ahaha!
In disagreements, I've gotten pretty far with an ad hominem defense where I'm like, well, I think this, but I am a fool. chandu16 i am learning new vocabs
actually got rid of a door-to-door salesperson who made it in the front door of my apartment building and wanted to go bang on all the doors and try and scam people and she she had an answer for everything i caught her right in the vestibule and i was like you got to get out of the building don't go bang on people's doors and she was like no but people will want to hear about this and chandu16 lol
know it's very mean of you to cut your neighbors off from this opportunity and she had an answer for everything like anything i said she had an instant pat bs response and what finally got her off of that script was i said i agreed with her when i said i was cutting my neighbors off from this opportunity and i said yes i'm a very mean man and all my neighbors hate me Now you have to get out. brainwane accepting the neg!
And it was such a strange thing to say, a self-indicting thing to say, that she was like, what? What? And, you know, then she finally got out. brainwane jiujitsu!!
Accepting the neg? Yeah, there's another way to put it.

37:03chandu16 pretty much
Jujutsu? brainwane ahah yeah
Taking it back to the theme. Excellent callback, yeah. So this expected number is 32.7, which... Where would that put us? I'm going to try and put the bottom of the browser window there. That would put us up here. That feels like what this number is, is in the neighborhood of 32.7. Hmm. Oh no, this neighbor's number is more like 35.50. So yeah, that's... chamlis_ hmm
I think that's high. Because realistically, the dot is going to end up around where the tip of my mouse pointer is.

38:04Let me grab this query and put it in the notes so I don't lose it when the Pastebin expires.

...21pushcx https://lobste.rs/about#queries
Oh, you know I should use this here, let me, this is one of those URLs I know off the top of my head. chamlis_ thanks for running it, I guess it's not a good enough model
One of the functions of the lobsters office our streams is that if you are curious about the site and would like to run a database query. We can run a production database query and it's a heck of a lot easier to do it when i'm live here chatting with you and we can revise and run a second one.

39:05graefchen I like the visible big jumps in the active users per month statistic. limesLurk Stats can be very fun. limesSit
I think we can kind of do a finger in the wind thing like take the number of people who are active by the month and you know like take the naive extrapolation and so I'm just eyeballing it but like take the naive extrapolation and multiply it by like 75%. And we'll probably be about right.

...43Yeah, Gryphon, there's there's a lot of fun stories in this data, like this is the these two are the two big invite drives the site has done. And then my guess for this, you peak and decline is covid but i actually don't have a great explanation for this period i don't have a like oh obviously here's a compelling answer for why we went down consistently for like a year and one thing i will say is because we are not a startup indeed we are not even a business lobsters doesn't need to grow and in fact growing too fast would be unhealthy for the community because there is a natural rate a maximum rate at which communities can accept and acculturate people and acculturate means you know teach them the norms and values like brain weight is talking about of well this is how we talk here this is how we disagree here more than just the basic how do the features work it's what are the community norms and if we didn't have the invite system the first time we got linked to by a bigger site like hacker news or reddit we wouldn't have a culture. We would just have a slightly smaller version of the Hacker News or the Reddit or the Stack Overflow culture because the newcomers would be so numerous and bring in their assumptions about the community they were coming from that they would overwhelm what we have. And back in these early days, so Lobster kind of started out of a shell box for BSD users. a shared kind of test and play environment for BSD developers and users. And it kind of riffed on that community because that was the first, I don't know, 40 or so people. And then over the last 13 years, it has developed its own vibe. It takes time. Realistically, I would say it took us probably three or four years to develop our own distinct vibe in that you could look at it and say, oh yeah, this is not just a different version of that other community. This is not just XYZ, the median.

42:34I guess that means lobsters is a teenager. Oh, maybe we should get, maybe lobsters should have a teenager identity crisis and we'll give it A bad haircut and some weird embarrassing fashion. Is Hot Topic and Claire still open? I think one of those went out of business, but we should get we should get Lobster some piercings.

43:20graefchen Wouldn't that fun for a small April Fools joke? limesGiggle
I cannot shake this tickle in my throat. At least it's not long COVID.

...37espartapalma Hi hellow
We do, we have had April Fool's jokes. And if you want to, I mean, it's better if we talk about it privately instead of announce it on the stream. Hey, Aspart Palmer, you made it back. I'm happy to see you again. I saw your Mastodon post about espartapalma as usual, I did nothing and the login is working again
graefchen I mean also could be easter eggs. Small ones can be always fun, if they arent annoying. limesLurk
sounded like some badly overzealous twitch security anti-spam control was keeping you from logging in which is a big darn pain in the butt that i have also had with twitch did you figure out how to satisfy it because it's not like you know you're going to contact support and they'll fix it right yeah that's that's That sounds like dealing with an overzealous. I was trying to, what was it yesterday? I was trying to buy a product, a physical good from a small online seller who used, PayPal has like a cart system that you can embed into a site and And it's interesting how they keep that secure because the site was so homegrown that it didn't even use HTTPS in this, the year of our cat 2025, doesn't even have a let's encrypt cert. And so the idea like, well, how do you have a cart and maintain some security on that? We do actually have a couple of Easter eggs. If you haven't seen the logo on There's Christmas, and then there's June 25, 28, somewhere in there. There's another one. aighe_luvseks sup gang
I can't remember if there's... And then there's, of course, everyone's favorite holiday, Casimir Pulaski Day. That one is... Maybe my favorite of the little Easter eggs in the site. I really, I unreasonably love the little Chicago Easter eggs. aighe_luvseks W firefox
There's a couple of them in the site. Where is it? Is it in Traffic Helper?

46:15espartapalma it was fixed by itself, or maybe they do nothing, but I refused to change a thing in my browser. that day I used both Firefox and Chrome on incognito mode, and nothing was working... so I was silent watcher the whole last stream
Yes.

...26aighe_luvseks what monstrosity is that font
Ah, well, Espart, I'm glad you made it back. Oh, I didn't finish the story about PayPal. It let me put things in my cart, but refused to let me check out. It's in the FAQ that's linked under the stream. There are two different fonts. You're probably looking at Operator Sans Mono. Yeah, I tried, you know, because I'm a developer. So I tried, I think, on three different devices. I tried two, four, I think seven different browsers total. With and without ad blockers, all that kind of nonsense. And then suddenly it started working in one of the ones it hadn't worked in before, and I was able to complete my order. It was such a frustration. aighe_luvseks I mean all of them are chromium under the hood except firefox
And I figured, you know, if the guy doesn't even have a let's encrypt cert on the site, probably I could get him to accept a paper check. I didn't want to have to email him.

47:38There's also servo and ladybird and then the text mode browsers.

...53And one of the unusual quirks of maintaining this site is because we are full of programmers, we do see those fringe browsers way more common. I have gotten a bug report from someone who said, this markup is wrong. I am writing my own browser engine and I ran into this bug in your site. And they were correct. Our markup was invalid and I fixed it. brainwane wow!
but they knew it was invalid because it didn't work in the browser that they were writing, which, okay, there is some amount of that we will support. But that's part of why I've tried to keep the JavaScript light on the site and have slowly been working to make it entirely optional is because an unusually high percentage of our traffic just blocks JavaScript deliberately. And then an unusually high percentage of our traffic, I mean, is not running a browser that's capable of running JavaScript. And that's things like elinks and some older screen readers and strange homebrewed things. And when I say unusually large percent, maybe as high as 4% or 5%, which is worth supporting. graefchen Progressive enhancement is always nice. limesComfy
It's like 3.5%, 4% of the total population has colorblindness. And we recently fixed the UI around these upvoting arrows because colorblind users were not able to see the distinction between the old style, which was a filled gray, and the solid red of upvoted. depending on which kind of colorblindness, because there are like five, six or more major kinds of colorblindness.

50:08Let me just look at this. You know, it is the tiniest thing, but I mentioned it in my first comment. One of the reasons I'm optimistic about Steve Klavnik joining this new jiu-jitsu-oriented company is I really do hope they come up with nicer collaboration workflows than pull requests. Because every stream, I have to deal with some hassle. Like here, I'm like, what changed since I reviewed this?

...49OK, so they've clearly run the linter. And we've got the story type. Let me just. Or I have to re-enable this. over and over and over because it never remembers.

51:25OK. So if we have that, we can include the author. They didn't include the author like they said. Am I just missing it? I was missing it. Okay. Huh, they only this is really dependent. Well, they link the docs. Let's go look at the docs.

52:10Where did they link the docs? Let's get that running in the background.

...22Somebody linked the docs. Article author is a profile array. What is a profile? Profile is a URI.

...56Wait, the namespace URI is, I would love to see an example of this. So I think this is just saying that this is the URI for this part of their spec.

53:22And this is like an XML schema, effectively.

...36So if it's an array.

...56Yeah, see, this just doesn't actually match.

54:04So when it says array, it just means that you can provide multiple of them, right? And then why is it linked to a thing with first name, last name?

...35I would not have expected Facebook to drop a site like that. Wonder if it's having an outage.

55:07Is this just a copy of this?

...22This is a crap page. OK, let's get all the pop-ups out of the way.

...34Oh, great, it has an example of everything except the field I want.

...44And then it doesn't mention author at all. I think I have the end of this page. Yeah.

56:05Only an array containing an ID. I kind of wish more specs had more examples. Oh, with examples. Do we think this is like a human who wrote this? Yeah, this is just a copy and paste of the spec. I feel lied to by this SEO site.

57:01You don't even Match your own example.

...24graefchen Such Websites are extremely annoying. limesHeck
Yeah, I've noticed a lot of my Google searches recently are just slop or repetitive. Let's just link back into the docs that are already not answering my question.

...57marcoroth_ Hey
OK, so an array is just do it multiple times.

58:05espartapalma yeah, facebook's OG is kind of a
marcoroth_ The OG spec becomes even funnier when you realized there's "name" and "property" on the <meta> tags
And hey, Marco.

...15And even though it says it is a profile array, no one is actually doing that. So we are just going to put URLs in there.

...44All right, so the hassle with this is that our code does not support adding a tag multiple times. We wrote this in a fairly naive way that does not understand how arrays work in this spec. So I'm going to replace it with an array. That's all there is. But I am going to merge this PR because this person doesn't need to take on the hassle.

59:51It's not technically a bug yet.

01:00:45graefchen Was a nice stream. I am gonna join a zoom meeting for a colloquium held by my universitiy. limesHi Have a nice day.
I'll see you later, Griff. Next Monday, if your Zoom meeting runs long, because I'm going to go probably another two hours, my usual three-hour-so stream. Wait, let me double-check my calendar, make sure I didn't schedule something at noon. No, I think I'm good. graefchen It will run 1:30 hours. Maybe later, maybe Monday limesHi
Yeah.

01:01:20I'm just going to squash and merge this.

...37Great. And then, because I keep forgetting to close bugs, yep. All right. So let's Pull that down. What do I have in progress? Oh. Oh, Marco, funny that you just dropped by. This is the thing I was hacking on last time. OK. And I am actually going to abandon that work because we did not get to a usable place.

01:02:26Make a new commit on main.

...35I've been tempted to set up a cron job that runs this git fetch in the background every hour or something just so I never have to wait on it. Now that I am watching a bunch of git remotes from contributors, it takes a while. Ah, see you later, Grave. So now we can stories controller and layout application. marcoroth_ I might take another crack at that query when you merge this PR
And this can become meta tags or empty array, each tag.

01:03:39Sure.

...46I'm a little hesitant to go down that rabbit hole because I have a bunch of stuff I want to finish today. There's a couple of bugs. marcoroth_ not today, anyway
And one, I can't approve hat requests. There's some bug. It's throwing a 500 in production. And someone's hat request is waiting on me. So I do want to fix it.

01:04:16Let's just call them property and content to match.

...31Speaking of unsafe looking, ERB.

...41And then meta tags will be. This is one of those places where I miss Haskell because this kind of, oh, I've just defined an ad hoc type is so much cheaper in Haskell than it is in Ruby.

01:05:51And then I'm going to let standard take care of the formatting on these. And read. All author. And repent.

01:06:16Routes user URL for. Story at story user.

...30Get that right? Where's my typo?

...44Am I missing anything? Let's get you on the same line.

01:07:07What is the typo? Oh, it's the extra brace bracket. I bumped it. There we go. It's funny how I only maybe a year, year and a half ago, very shortly after, very shortly after the PR to adopt standard, I set Vim to do it on save. And now I've become so comfortable with it that I just kind of repeatedly have this practice of I write code and I don't bother with the indentation and I know I didn't make any typos and syntax errors when standard snaps it into format.

01:08:27Here we go. marcoroth_ are you running it as `standardrb --lsp` or using an external script?
And that makes it possible for, leaves room for expansion for Blue Sky, which if someone is feeling ambitious about features, we would like to have the same support for Blue Sky as we do for Mastodon. No, it's a Vim plugin called Ale. Automated linting engine. One of T-Pope's, of course. marcoroth_ ah right
And it just runs the standard RB binary on save. I don't have an LSP set up. Because I'm old. And I haven't done that level of changing my config. I mean, LSPs are only three years old. They could disappear at any second. Why do I want to put work into that config, right? No, this one's just inertia. It's not a plan. All right. Make sure I didn't break anything. There aren't any tests for this, but this is a pretty... Oh, I broke something. marcoroth_ LSP were introduced in 2016
This is a pretty... low intensity kind of feature. If it breaks, it's not the end of the world. Let's see what we get. I must have typed out something in the application layout to break this many tests.

01:10:04Did I use something in the user's Mastodon account already? Oh, no. It assumes. Why did I write this?

...50that's yeah and again speaking of it would be nice if types were easier mastered account mastered on account clearly should be its own object but is not

01:11:25If I had infinite refactoring time.

...34I want to see it.

...45Does this user have a Mastodon account linked?

...53Yes, that's convenient. So if we go... I'm going to drop this off screen so I don't flash too much mod info on stream. It's nothing too spicy. It's just like... It's actually nothing. All right. There's a table here where if, like, I had recently sent this user a message as the moderator, it would be printed there so that mods have more context. Ah, doesn't that look wrong? This should be a URL, not just a username. What do we do on the user profile?

01:12:43We format the link right here.

01:13:03Trying to think if I want to fix this.

...17Do I want to put another helper in the junk drawer? Because one of these is stories controller and one is users controller.

...29It's one string. Let's do the easy thing.

...42This is why I wish there was an object.

...51marcoroth_ rule of three LUL
Because this is a dry violation where now two things repeat the logic of how to construct a... Oh, look, an error. The logic of how to create a Mastodon, a link to a Mastodon profile. Rule of three. We're going to be up until there are four lights territory pretty quick, though. Story, user, Mastodon instance. What's the typo? Did you mean Mastodon account? I don't know. Did I?

01:14:37No, I did not.

...53I don't even know which of these two it's undefined. Did I say mastered on dot instance? Yeah. All right. That is missing the at sign. That is correct. Good.

01:15:55marcoroth_ oh, so you can specify multiple authors?
Yeah, you can specify multiple authors. And what we're doing here is specifying multiple links to the author. So there is the link to their Lobster's profile and then a link to their Mastodon profile if one is present. And conveniently for my test, that user of the current one had a Mastodon account.

01:17:00marcoroth_ neat!
Got the deploy. Put it on the to-do list. Put it on the to-done list. What was that? That is a topic we did. And then the other PR was for the vote hydration. OK, so there's one fix since I was last here. We're doing ampersand and then dig? That seems redundant. Some comments aren't visible on the classic files changed page. Switch to the new experience. Get in this white panel van. There's free candy inside. That doesn't sound like there's any way back. Why aren't they visible? Like I'm keeping comments from you. Were you always keeping comments from me in the classic files changed page? chamlis_ is it good? it's very new, you're gonna love it
I'm not even on the files change tab. Ah, GitHub. Man, when is Jujitsu Hub coming around? Oh, look. Maybe I should message Steve and be like, Steve, get on it. Fix my workflow. Stand up Jujitsu Hub. I'm sure that would be very encouraging to him. No, I want to delete this. I don't want to keep this. And they didn't actually make the change I suggested?

01:19:29marcoroth_ I guess you saw ersc.io ?
brainwane https://ersc.io/ "East River Source Control" which is "building a new platform for collaboration atop of the Jujutsu version control system."
pushcx https://lobste.rs/s/ghdv6w/i_se…
brainwane since you mention jjhub aspirations
yeah marco that is actually the top story on lobsters right now and yeah i'm also referencing so marco you missed it but the first i don't know half an hour of a stream was talking about some of the interesting stuff that came up in these comments that are not just about jujutsu but What does it mean for a projects community marcoroth_ I guess I need to try jj
to be healthy both in size and in vibes to summarize i've left a long comment in here brainwind has a bunch of stuff with a bunch of experience and shared some useful links so you'll have to look at the the archive for this stream in a couple hours for some of those great links because i don't i don't know how long how far twitch chat lets you scroll back up but pushcx https://lobste.rs/search?q=comm…
no brainwane to your question yeah it's i think it's excellent and i have left a number of recent comments so this page i should really just roll these up into a proper blog post but so a couple of months ago you know when i had been using jujitsu for a month i was basically like hey this is better and more comfortable than using git and i was joking with someone on stream that he should write a jujitsu hub because you know why don't you whitewash that fence for me because of course i have lots of ideas because i'm one of those people who is constantly coming up with project ideas and then I joke that I have a write-only to-do list because I'm always putting more things on, but I never do seem to get to crossing them off. I think there is a lot of opportunity right now to compete with GitHub using jujitsu because marcoroth_ jj reminds me of graphite (before it went AI focused)
know in the narrow technical sense it enables much nicer workflows and much nicer collaboration and better experience for stacked prs and merging and editing things together and dealing with conflicts and then also the last it's coming up on a year now GitHub's core UI. We are very light users. The lobsters project is a very light user of GitHub. We have a couple of PRs we merge each week. We have maybe two dozen commits each week. We have two or three issues each week. It is a, you know, it's not a dead repo, but it's a low traffic repo. And I am constantly running into just core bugs, bugs in the core UI. It's gotten very flaky where, what kind of bugs have we seen on stream? It's like every stream, the running joke is that we see another UI bug every stream where like I see this title twice or everything below this header is missing or everything below this header is unstyled or the workflow just, this is just missing and doesn't run. And that's kind of the second part is I think a lot of people, I don't think I'm projecting too much from my own experience when I say that I think people have been frustrated with this. And then third is this workflow is actually not very good. If you were going to sit down and design a pull request workflow from first principles, I don't think you would land anywhere near where this is because very core stuff like switching between comments or like New changes since I viewed. So, okay, it's going to refresh. Why did that take me here? I have actually viewed this. I viewed this whole diff here on stream, but it was listed like it was new. And that experience of what has changed on this PR since the last time I came here is not great. I'm constantly scrolling up and down to see, well, in any of the sub threads, did somebody leave me a comment? And if somebody force pushes to edit one of their commits because they want a clean git history, all bets are off as to whether you will ever see that there was that comment and that conversation just kind of vanishes into the negative zone or something. And then lastly, I think there is a lot of opportunity pushcx https://lobste.rs/s/esvr7z/gith…
because of this article that GitHub has said pretty much they're putting a migration of their hosting over to Azure as the highest priority. And needs to get this work, the team realistically needs to get this done in the next 12 months. And I know that they are wrapping up a, well, we have to port the whole front end to React and reimplement everything in React. marcoroth_ better migrate to azure then ship useless AI features
And we know that, I mean, we know that from watching it happen and public statements, but then also from watching it get flaky to be uncharitable about it. And yeah, Marco, that is kind of the snarky vibe that I think a lot of folks have about that. But if you are a competitor and you say, hey, you know, if I look at this, are they saying, is Microsoft saying that the only thing that we should really expect out of GitHub is some backend changes that are not user visible unless they cause instability? plus co-pilot AI features that let us say that they have had limited success and a controversial reception sure sounds like a great time to compete with GitHub if that's the only thing they're doing for 12 or 18 months. And There is a new tool to build on that enables much nicer workflows, and you would have a green field to reimplement the absolute core functionality. And you are attracting smart pro-social people like Steve Klabnick. I didn't know this East River source control existed until this morning, but I feel like they are... have some great conditions for competing. And I say that as somebody with a lot of entrepreneurial experience. There's a lot of promising macro things happening there.

01:28:01One of the really common programmer misconceptions around startups is, oh, there's already somebody who solved that problem, so I can't start a business about it. Somebody already wrote a book on that topic, so I can't write one. You gotta be like a musician. Like if you tell a musician there's already a song about love, they're still gonna write their own.

...35Programmers should be more like musicians in that way.

...44The existence of a competitor, especially if it has a bunch of money. If you see competitors that are stable, viable. Competitors are a good thing because they are proof by example that a market exists. which is a big problem for startups. Do people want you to solve the problem? Will they pay money to have the problem solved? That is an open question for a lot of things. GitHub is an existence proof that Jujutsu Hub should exist. And I mean that in the generic sense of a collaboration tool based on Jujutsu, whether that's an open source thing that's a totally distributed, federated model that stores all my issues in a branch in the repo, or whether that's a website that looks very much like GitHub.

01:29:53And then seeing stuff like, yeah, my big, well-funded, established, competitor is sclerotic and has taken its eye off of the ball that's someone is dangling catnip over that business space and we're not busy with other things and have so many ideas on my to-do list boy jujitsu hub is a tempting one It's developer tooling, which is even a fun niche. Is Microsoft forced to Microsoft?

01:30:47pushcx https://www.microsoft.com/en-us…
So public companies, oh, it's right, it's 10Q. Public companies are required to File some public statements and some of them are things like accounting statements that say, you know, how good is the business? And they very often try to avoid breaking out profit and loss by business area. These are 10 queues. It's not the one I want. Thanks for implementing core browser UI. Oh, my God. Can you just just give me the file? Thank you.

01:31:56OK, so they call it see so a thing that public companies do to avoid giving too much information to competitors is they try to roll up a bunch of businesses together that they claim are related and in this case they're saying oh azure and github they're you know they're both computer things So they're basically the same business as SQL Server and Visual Studio. So we're just going to report all of their financials together. And what I had really hoped for is that they would be forced to break out profit for GitHub on its own line. At least they didn't clump it in with Xbox because, you know, there's a computer in that too. the_tallpants 100% of our revenue is from the technology business thank you very much
so where's so they called that intelligent cloud what do you say intelligent cloud is revenue increased does that cost of revenue increased does cost of revenue is that marketing jargon to mean expenses?

01:33:24Where's the total for this segment?

...37Gross margin decreased.

...43Revenue increased $24 billion. Here we go. so in the third quarter this is in what millions yeah so that's 26 billion in intelligent cloud which is a deliberately opaque grab bag surrounded up to a trillion dollars in revenue no a hundred billion geez don't slip a decimal place at least yeah tall pants that is exactly what they want to do I mean, Amazon is an excellent version of this. For years and years, they refused to split out AWS revenue from their retail business. And like 10 minutes after they were forced to split it out, Microsoft and Google announced enormous investments in their own clouds because they were like, oh, AWS is doing better than we thought. This is competitively valuable information, which is why, you know, they want to minimize it. So what do we think?

01:35:02Where's that definition?

...11I don't have any feel for what percentage of all this crap GitHub is.

...29Finger in the wind, I would guess that GitHub annual revenue is in the... marcoroth_ didn't GitHub have to do this before they were aquired?
Probably low single digit billions. So I'm saying like two to five billion. I don't remember if GitHub IPO'd. So in the US, you only have to do this reporting if you are a public company, which means listed on the stock market. And I don't remember if GitHub IPO'd. the_tallpants no it was never public
before microsoft acquired it i didn't think so yeah there's no mention of an ipo here and then they became a subsidiary of microsoft yeah so because they didn't have an initial public offering and get listed on the stock exchange they were not legally required to produce any kind of report like this so if you were a private investor in github before the microsoft acquisition which does include employees you would have seen a version of similar kind of documentation so or to put it another way i worked for stripe which is still a private company and they do a like a i don't want to guess the schedule off the top of my head but they I think it's a quarterly statement that goes to the shareholders that says things like, oh, we made roughly this much money. Your investment is doing great. We're going to fundraise again. You should invest again. You know, that kind of generic thing. I'm characterizing it in the context of Stripe, but I'm being more general. That's what every statement by a private company to its investors looks like.

01:38:46brainwane btw anyone in New York (state as well as NYC), I am currently working on a voting guide for the election
the_tallpants They said in 2022 that GitHub had $1B ARR and 90m active users, that was the only time they gave any numbers specifically for GitHub after they acquired it.
brainwane specifically the ballot measures and judges
brainwane got it!
Brinwin, I'm trying to keep electoral politics out of the chat, so I would prefer if you did not share your voting guide as much as it is a big interesting project. Thanks. But if anybody read Sumina's transcript or watched her talk and thought, what a thoughtful person, I am sure you could watch her blog or her socials to go get that guide.

01:39:20brainwane I appreciate that, thank you
Oh, and 22 GitHub said that they had a billion in revenue. Oh, so that was three years ago. Yeah, I feel pretty good about my two to five billion guests for 2025 because, you know, you give them some amount of compounding growth. They're probably going to be towards the lower end of it, because when you make a billion dollars, it's really hard to grow at 20% a year. So they're probably closer to two than five. Maybe I was over generous.

01:40:02Yeah, I don't know. I don't really have an intuition. So a good rule of thumb with SaaS kind of businesses is that in mature ones, if they have an enterprise offering, it will be at least the plurality of its revenue and probably a majority. And so, you know, Since I'm trying to approximate things, the first thing I'm thinking is, does it feel like GitHub Enterprise has gotten bigger in the last three years? And I would say yes. Does it feel like there's been, you know, a nonlinear, some kind of step change in that function where enterprise has included some kind of really interesting and compelling feature that would cause enterprises to sign up more often or to greatly expand their usage. That's what they're hoping for Copilot. In case you're puzzled by why Microsoft pushes it so hard, it's if you can tell enterprises it will make them more productive or make them money or save them money. And that becomes common wisdom among the enterprise crowd. you really move the needle on your overall money. And so that's why all of these features are so strange and off-putting to us teeny tiny individual hobby developers. They're not for us. the_tallpants what features are you talking about
Or, you know, to use the modern meme, they not like us?

01:41:58I'm talking about the aggressive co-pilot features that want to review PRs or attempt to write fixes for issues or are integrated into Visual Studio Code to do code completion and authoring. I don't really pay a... marcoroth_ Assign this issue to Copilot and get a PR
I'm talking about this button, code with agent mode. I have ad blocked that on my personal repo. Yeah. Start a code space with code pilot agent mode for this issue in another repository. That's the kind of feature that is going to be the first time I've ever clicked on that.

01:42:47This stuff is designed for enterprise customers. They are hoping that it will allow them to significantly charge more to enterprise customers. And when I say significantly, I mean, if you have an enterprise that pays you a million dollars a year, which is a reasonable amount for an enterprise install, that's not a, I don't have any private knowledge there. That's just like, yeah, if you're going to sign an enterprise contract, it's totally realistic that it winds up in the seven figures.

01:43:24And you can get a 15% increase because you're like, hey, we have this new feature that you want that's on the Enterprise Plus plan that's an add-on to your current contract. And then also it comes with a extended support contract and the rust-proofed undercarriage spray and all the bells and whistles, and you only pay us 15% more. Making $150,000 from one contract is not attractive to Microsoft. That's not meaningful. marcoroth_ @the_tallpants I mean check out https://github.com/copilot/, this is a totally new "app"
Doing that across all of their enterprise customers is very attractive. marcoroth_ almost like a ChatGPT product
Because if enterprise customers are... And realistically, I mean half or three quarters of the revenue of GitHub probably comes from enterprise because that's typical for a mature SaaS. Now you're talking about... 500 million to 1 billion, based on what we guessed about their overall revenue. That moves the needle on the stock. That's very meaningful and attractive to them. That's part of why... What is it? the_tallpants I don't think that's anything to do with enterprise at all, they're pushing 365's copilot and AI features hard on office users, windows users, teams users, even putting a copilot key on computers now. Seems like GitHub is just their avenue to push dev AI features. They've spent a ton of money on AI and they're trying to juice any return they can get on that
Kevin... Kevin somebody, right? Crossing the chasm?

01:45:04Is it not Kevin? I mean the book.

...14pushcx https://en.wikipedia.org/wiki/C…
Oh, there's a Wikipedia page, even better. Jeffrey Moore. That's why this book got so popular. It's about making the jump into the enterprise. So like right now, this ties back into my opening thing. Like we're talking about jujitsu and do we see a future in it? Cause right now it's the early adopters, the people who are hobbyists who are willing to experiment that that certainly includes me are willing to take a shot and spend time and money on jujitsu. Well, really just time. Cause we don't have any money and there's nothing to pay for yet, but there will be. And then what's the other one is it was it innovators dilemma that introduced it.

01:46:07pushcx https://en.wikipedia.org/wiki/T…
clayton, this is the book, I was thinking of. I was mistaking Kevin for clayton so innovators dilemma was another. Really influential business book and. This is where the term disruption came into the business community. And I'm aware that's been overused and beaten to death in the exact same way programmers beat jargon to death. Programmers have such a high horse about, oh, this business jargon is so vacuous. And then we do the exact same thing with our own terms. Let's not be silly. the_tallpants 100% haha
So let's put this in the notes here.

01:47:01And just off the top of my head, for an example, I would be like, oh, this is a declarative API. This is a reactive API or a reactive paradigm. Like, come on, we've beaten those to death in the last couple of years, right? So disruption, and I know it clangs on the ear now, but the really important concept that it's talking about is If you are Microsoft looking at jujutsu, it would be very easy to say, that's a tiny toy project, it's only used by hobbyists, it doesn't satisfy all of these features the enterprise needs, and that's where all of the money is. We can just ignore it. And that all sounds totally reasonable, And then the tiny thing explodes and eats you. And I said earlier that I feel like Microsoft has taken their eye off the ball with GitHub by very publicly committing to prioritizing Azure. Even in that article, it sounds like prioritizing Azure over Copilot, which that's implausible to me.

01:48:37marcoroth_ I guess that's also kind of how GitHub started and become popular
Yep, that's exactly where I was going, Marco. You got there 10 seconds before me, is Microsoft had products like Visual Source Safe in the late 90s that were version control systems. I want to say they even had a second version control system that I don't remember the name of. I think they had two in the early 2000s. And then there were a bunch of, you know, the open source folks had Subversion. marcoroth_ my favorite VCS is Sharepoint Kappa
really hip ones had i think mercurial had started by then i think it started before git i don't remember i don't think darks did maybe i'm swapping the two and then perforce was a decent i think you mean access perforce was a solid competitor like that had a bunch of inroads in the enterprise and especially in the game enterprise industry because it had really good support for partial checkouts and combining projects. And so from Microsoft's perspective, Git was like, oh, there's another little open source project from the hippies, and it has a terrible UI. marcoroth_ Sharepoint also has version control, with locking documents/checking in new version (I guess mostly for office documents) LUL
espartapalma CVS, Subversion way before...
and it can't solve these problems and it doesn't have the workflow and you know this is just me repeating my previous thing right like you get the bit is they have made exactly this mistake before and it cost them billions of dollars to get back on top by buying github and it's not just about owning version control it's about owning where there is a networked effect in business for developers. the_tallpants do we distinguish between git and github though, i'm guessing there were lots of other git providers that did not make it like github did
They wanna, and do, own the place where the bulk of development happens. It was a very, very smart acquisition for them.

01:50:52So anyways, they already made the mistake of getting disrupted by Git. sure feels like they are making the mistake of getting disrupted by Jujutsu. I will lay my marker down on that one today. marcoroth_ @the_tallpants I think GitHub really made git popular
Actually, TallPants, GitHub was early. GitHub really drove Git, because as clunky as the Git UI is now, it was significantly worse before GitHub. and github provides a nice gui for a lot of common tasks that were very difficult or flat out impossible in git and the default like the big one is as much as i gripe about prs and the ui problems with that the previous way of collaborating was emailing around dot patch files. So if you run it wrong, what is it? Diff dash P.

01:52:22This is the default. I must have some git config that's overriding the patch. What is it going to be? I don't know what it is. the_tallpants Interesting, thank you I did not know that. I only started to learn how to code in 2016-ish so github was already de-facto by then
espartapalma yeah, you email the patches and comment around
Let's go and move my git config to slash temp. And then we'll be able to run the diff. Now, see? So if you took this diff and emailed that around as an email attachment, that is how folks were collaborating with Git. That was how it was designed to work. That is why it is the default output for Git diff. And you can actually kind of see this in pull requests. There's a way to like... marcoroth_ you can add .diff on the PR
marcoroth_ URL
espartapalma that was Linus meant, and still how it works in Linux core development
unbury it and see it directly when you click into an individual merge, maybe? I know I've gotten a patch file. You can add .diff on the PR URL. That's what I'm thinking of. Let's get that PR back. So where'd that go? We were just looking at open graph. Yeah, it's all down there.

01:53:47yeah so emailing this around is how git worked so github i think there was a there might have been a side project or two for like hosting a light web-based ui onto your repo but i would kind of call that an immature toy project not really as an insult just it was all very new and marcoroth_ I think git even has a built-in browser interface, but not sure if that came later
experimental and not able to survive scale and probably insecure in the way that you know young software projects generally look yeah i think i think that came after but i want to say there were two or three independent projects that added those before and i want to say one of them grew up and became gidia g-i-t-e-a

01:54:56Anyways, there is a dramatic irony to all of this happening twice to Microsoft. And I don't say that with a lot of sympathy in my voice.

01:55:38So Marco, I mentioned you in this last comment.

...51marcoroth_ sweet
You know, there's that famous quote of those who do not remember history are doomed to repeat it. The corollary to it is corollary? God, I don't remember. The corollary to that one is... those of us who do remember history are doomed to watch other others repeat it and we'll just be over here you know ineffectually yelling and waving our arms actually does ellen ullman have a wiki quote i should start one if not One of my favorite authors on the culture of programming is a woman named Ellen Ullman, and she hasn't written a lot, but the things she's written have been really insightful. Yes. One of my absolute favorite quotes. This is one of the most insightful comments about programming I have ever read, and I have read a lot. pushcx https://en.wikiquote.org/wiki/E…
We build our computers the way we build our cities, over time, without a plan, on top of ruins. And the reductive version of that is, yes, it's a human activity. This is how humans work. But this one is very, very insightful. And your time spent contemplating it will be rewarded. Especially if you read history. whether that's things like, you know, you could even read, pop history, like guns, germs, and steel, or, the life and death of American cities by, is that the title? Jane Jacobs. pushcx https://en.wikipedia.org/wiki/T…
What's her book? Jane spelled correctly. The death and life of great American cities. There we go. This one was a, I know I'm recommending a book that's 64 years old, but this was enormously influential. This is why your city looks the way it does now. And we are still absorbing its critiques. When you hear a lot of the new urbanist movement and the anti-car movement and the alternative transportation movement, it is still this book. And it's all people collaborating and building things together with a lot of chaos thrown in. That's exactly how we're writing programs.

01:58:48I didn't put that one in the notes.

...58pushcx https://en.wikipedia.org/wiki/G…
other book i mentioned guns germs and steel it hasn't aged super well but it asks a really interesting question and the question is why did europe conquer the americas instead of the other way around right like if the two continents were out of touch or and inhabited for you know our modern anthropological estimates which have moved since this book was published 30 years ago but if the americas were populated for something like 20 000 years when they finally got in touch why did it go the way it did and diamond's got a couple of hypotheses some of which have withstood criticism better. I don't know if there's a more... modern take on this that's real good i only know the one i read back in college back in the dinosaur days you know but it's that like why does civilization turn out the way it did huh let's see if we can figure it out and if you read that kind of stuff and watch for the patterns you will see them with software projects because we are building a software civilization

02:01:30Speaking of function gift economies.

...43All right, so. Just small comments on those. I'm not going to grab them. What else was on my to do list? So I'm going to stream. Yes, we're right about two hours. I'm probably going to go right about another hour. marcoroth_ you mentioned the 500 error
Let me take this opportunity to stand up, stretch my legs, grab a cough drop, and refill my water glass. I'll be back in about two minutes, and then we will jump into the bug that only affects moderators, and then cleaning up some of our own legacy. All right, be right back.

02:04:14Ah yeah, so Marco, the hat thing is the bug I'm talking about, yes. gtfrvz don't forget to remove the overlay
Do I have any hat requests open? I'm going to have to create one. What's the quickest path to do that? I will just... Oh, thank you, GT. How do I... There we go. I am back. All right. So I am going to grab Marco. Let's grab myself.

02:05:26How is that valid?

...47So a hat request is supposed to have a user, a hat, a link, and a comment. None of those things, and I have a valid object. Oh, I did u.valid, not. All right, hr.link will be example.com. hr.comment will be please give me this hat. And hr.hat will equal, I don't know, chief testing officer. great and now we should have a hat request good and if i say seems legit and click approve i get a this is the 500 i'm seeing in broad

02:06:57do have a feature but it's not hitting this bug all right so let's go look at the feature spec

02:07:36Sure looks like that should have worked if the test passes. Let's go look at the, oh.

...52So we're saying line 28 fails where we're saving a message and the reason is blank. Reason is too short. Oh. So.

02:08:16Very lucky testing data that I happened to type something short. In production to create the bug and then. Recreated that by just typing some seems legit. So what's happening here is a message A private message can't be 20 characters because, you know, okay seemed like not a useful message. So the bug is just that my message is too short. So over here, if I wrote, instead of filling in with reason, I wrote okay.

02:09:07This should fail. This should be the 500. Yep. Let's just change this to say include and this to say, well,

...49Yeah, so this is one of those places where I don't like the Rails interaction model, because I want to save two models, but they go to one form, and I want the error to show up on one form. But I don't want to have to create an active model object that wraps both of them. I really don't want to use accepted nested attributes for. I don't like that the validations are on the individual models instead of on the change.

02:11:04This will at least give the appearance of failure.

...18Now it should pass, and it does. This is really an ugly way to... I'm fine with that. So one of the reasons I'm willing to clutch this is it's just moderator UI. This is a infrequently used code path used only by experts. I would rather just kick it till it's working than do the capital R right thing. Because this is one of the marcoroth_ I guess you _could_ skip validations, but that skips them all, which is also not desirable
places and rails where it does not encourage you to do the right thing the right thing is a big distracting pain in the butt instead of what's that phrase the pit of success in software you must have a someone talking about it huh oh because of is a stop word

02:12:46Yeah, Marco, that's, I mean, I have a whole demo I've been working on because of that.

02:13:00This idea of a pit of success, I really appreciate that metaphor. That's what I'm trying to find a nice link for. There isn't one here. But it is the idea that the API should make the right thing the easy thing. You are not climbing a hill. It is as easy as falling into a pit to do the right thing.

...40So that bug. Why are you asking me for my username to GitHub? Did I get banned for talking about competing with GitHub? I don't think so, but I wonder if they're having an outage.

02:14:08An incident with actions. That's not us.

...19marcoroth_ is "github" the right remote?
Why are you asking my username? Why are you asking my password? I already just pushed this once.

...42chamlis_ it's doing https rather than ssh for some reason?
Yeah. For me, the remote is named GitHub. I hate naming I hate naming remotes origin. That's not useful for me. I think HTTPS should be fine, but it's like I pushed this commit like two minutes ago. You know, an hour ago, whatever it is. It pushed. I guess I auto completed this command differently. I said I typed push instead of saying main and pulling back this command, which. Is the same command.

02:15:54Now i'm going to go look at my email to make sure I don't have an email from. github saying like congrats you've changed your password and someone is doing an account take over on me live that would be irritating. doesn't look like I got anything.

02:16:35marcoroth_ maybe your PAT expired that you used for pushing of HTTPS LUL
All right, well.

02:17:06marcoroth_ over*
Yeah, I have no idea. Oh, no, I know what it is. Oh, I know what it is. I didn't put my config file back. chamlis_ haha
Because I moved it out of the way so I could bring up that patch format. And then I didn't put it back. marcoroth_ nice
That's the thing that changed. espartapalma I just realize you name your remote github, as same I do. Somehow the default `origin` is everywhere for no good reason
Yeah, you know, your credentials work better when you don't delete them.

...39Pro tip, I'm a professional. Yeah, as part, we're on the same page there. It's bugged me for ages. I really only got serious about renaming it maybe two or three years ago on the repos I use, but I think what got me was When I start a repo on my computer, I am the origin of that repo. I created it. I originated it. GitHub is not the origin. I am the origin. GitHub is just one place. I am not pushing to the origin. So, and you know, that kind of, local naming that nobody else has to see is the kind of thing i'm willing to be very very particular about if it was visible to other people i probably wouldn't have bothered in the same way like our like the branch i just pushed is main it was master until a couple of months ago because there was never Nobody asked to have it changed. There was never a reason to change it. So why make a change that is going to just annoy other people and everybody has to update for it? And then I got annoyed enough because I was like, all right, this is the only project I have left that I'm regularly contributing to where the branch is named master. I would rather they all be named the same thing. Main is probably not what I would have picked. but it's what the default seems to be. So fine. Let me just go with that. You know,

02:20:05I guess part of the other driver was.

...13When I worked at when I so I've had clients and I've had employers who have used GitHub Enterprise. And differentiating between like. Or am I pushing this to the public GitHub that people would see? Am I pushing this to the GitHub enterprise that is private to our organization? It is really nice to not have any ambiguity between those two things. And if I call half of them origin, I don't know where I'm pushing code.

02:21:09vinitkme Hello, Hello!
All right, so now this is the fix for, wait a minute, this fixes downstream of some very useful maintenance that Chamlus did where we were way behind on this common marker dependency. And they actually replaced, I think, their underlying library that they use for parsing Markdown because it's a, Ruby wrapper around now a Rust library. And if we are going to re-render comments, and we should because keeping them in the database as an indefinite cache is not the best design. We should be able to recreate that HTML output anytime. vinitkme Rails newbie here, so be kind. At work , we have a fairly large app that has lot of specs and running them takes hours. What would be your suggestion to speed things up with CI?
But one of the hassles is this line of code, well, specifically 88 here. It says, if the user exists,

02:22:31I'll answer your question in a second. Let me finish this thought. If this user exists, you can mention them to link to them. The problem with this line of code is it assumes it is rendering the comment right at the moment that is being created. So if when you write the comment, there is a user named Alice, who renames to Bob, and we re-render your comment, your comment will stop linking to Alice. That's weird that a link disappears. If you do something that looks like a username mention, like, oh, in this code, the at include statement would pull in a library, and then Years later, someone creates a user named add include. marcoroth_ @vinitkme the `test-prof` gem is a good start to get an overview of where and why things are slow
When we re-render your comment, now you are linking to a user who did not exist when you wrote your comment. And yes, this has absolutely happened. I want to say on eight or 10 different comments. Well, potential usernames. One of them happened a bunch of times because it was some syntax like include or for or something, something that became some keyword that someone registered. So I wrote a commit to backfill a history of who was using what username when. And now I want to update this code to highlight that. So if a username exists with the username you gave, and then this needs to know when. So I created, I hate working with dates.

02:25:48vinitkme Nice @marcoroth_ Are there also faster versions of Ruby that could be of some help?
So I'll have to think of how I'm going to thread this in.

02:26:02JRuby is a little bit faster, but I don't think it's worth your time. I would second Marco's suggestion of TestProf or the Benchmark gem. It's just called Benchmark. marcoroth_ @vinitkme I think you want to understand why tests are slow. Switch the Ruby doesn't really solve the underlying issue. Most of the times you are doing too much work which might not be needed in the test env
If you haven't yet, splitting up your test suite so that it can run in parallel is a huge win. And then, yeah, that's where I was going. Mark goes a little ahead of me here. Is there is no... quick fix, it's all right, where are you spending your time? And a lot of it is very often that you're creating and deleting too much test data. So that can be, you know, you have specs and you have nested RSpec and you use lots of let blocks. And so you are creating a ton of test data and each individual test may or may not use that data. vinitkme @marcoroth_ 100%. A lot of them are like poorly written tests and ill maintained. Codebase is like a decade old.
brainwane I was actually away the last like 30 min. heading off, wishing y'all well
when your test file is 3 000 lines long and has been maintained for eight years by people who've left the company you get scared to remove that test setup and so the fix there is to make less test data and the only way to do that is to Stop creating so much test data and get away from... Take care, Brainwine. Good chatting with you today. So stop using nested describe blocks and stop using nested let blocks. Each test should only initialize the data it cares about.

02:28:14And I would enforce that with a custom RuboCop rule because, boy, is that not the style in Rails. I guess the other thing I would do is see if Nate Berkopec has said anything about it.

...37He's done a lot on Rails performance. pushcx https://www.google.com/search?c…
He's probably got a chapter in his course or his book. So, you know, I'm not actually going to stop and read this stuff, but probably he says something smart about running faster test suites. marcoroth_ this is a good start: https://evilmartians.com/chroni…
And if he doesn't, I think he's available for consulting.

02:29:11So how do we thread in the time? Because all of this is just a namespace with a bunch of global methods. I guess right here. It's generically named post process.

...39But the only post-processing we do is to add the username mentions.

...52Yeah, it doesn't even have any test. Or no, it's text. Yeah, so I can rename this.

02:30:37vinitkme Thank you both! @marcoroth_ are you on twitter or have a blog/github. Would love to follow you somewhere.
Oh yeah, I forgot about... Yeah. You know, that whole blog, Evil Martians, has had maybe the best Rails blog of the last two, three years.

02:31:12So who calls?

...41pushcx https://marcoroth.dev/about
vinitkme Got a DM from him
I don't know why he's not answering, but he's MarcoRoth.dev.

02:32:47vinitkme Thank you @marcoroth_
marcoroth_ Sent you a whisper, didn't want to self-promo in here lol
Oh, all right.

02:33:23I decided to call it as of.

...32vinitkme @marcoroth_ you are a kind and considerate soul. Thank you
And then it's got to be after created at and before renamed at. Yeah.

...56He's also very generous. You should click around the site and check out his Braille's work lately. The herb project that he started and some of the tools he's made are excellent. He's been very generous with his work.

02:34:38marcoroth_ 🙏
well we were talking about what goes into a healthy community and i believe that credit where it's due and thanking people and celebrating people's projects and rewarding their ambition are all very important

02:36:01vinitkme So much to learn! I recently started doing some work on Ruby. Have over 12 yrs of experience writing Python, Django, switched jobs last year and have been mostly writing Go, and Typescript, but also some Ruby on rails
has yeah if i pass an explicit nil it'll get replaced that's fine because i'm thinking what happens if we load this page during creation and this one no this is not the form so it has to be persisted but just kind of thinking through the call sites message should be hands of

...38Created app.

02:37:23Actually, the linkified about, that's going to be as of when you wrote your about. People don't really mention each other. Yeah, I think that's fine.

02:38:05know there's a funny thing here on a story or comment should it be created at or updated at and the argument for created ad is if you click edit on a story or a comment because you've got a couple of minutes or a couple hours to edit them and you click preview you will the author will or won't see those links It's arguable that that's what they want. But if you post a comment, and then someone renames, you mentioned someone and they rename themselves away, and then you edit your comment, the link would disappear. I think that's such a corner case. But it's OK to say created at, because that's more likely what you are intending.

02:39:16Yeah.

...26I could see both. I can kind of tell myself the little story of someone using it. An invitation request. That's fine. Comment.

...49These are the real important ones.

02:40:02Let me type out. I see it.

...17Why am I doing that in a tiny window?

...33This doesn't do anything else with this options, right?

...54This got detached.

02:41:46Thank you.

02:42:30All right, so if I got all that. Did I finish working through the mentions? No.

02:43:10This is just a like a smoke tested I typo something and break the world, I think it's going to be green and then i'm going to actually write a proper spec of this, because this is a. kind of a complicated set of behaviors.

02:44:10All right, so the two cases are userRenamedAway and userRenamedTo. So we are going to need, let's just make two users. NamedAway is, actually, we don't need to create a user. We can just create a username, because now it doesn't even touch the user model. It can be a low-level test. I'm OK with that. So let's create some username records.

02:45:03Create a little fictional history that She was created one month ago. And is still using the name. No.

...28And. All these need a user ID, don't they? Yeah. But if I. If I create a user. Yeah. We've got to do that differently. All right. So we'll create a user.

...58And Alice. And then I have a method for this, don't I? Yep. Set, we will say that Alice created her account a month ago. And then we will say username.

02:46:42User. Alice to Bob at one week ago. No reason. Did it themselves. Then if we have a string. Let's say.

02:47:14I like Alice's code.

...22And then I expect our downer to HTML with that string as of current.

...53not to include href. We'll just say there isn't a link.

02:48:09User existed when comment did.

...23So we said two weeks ago should include. Say user. Didn't exist yet, so comment mentioned. No link, so we'll say that's two months ago. let's let's stop switching bases all right so let's say four weeks ago create it oops weeks ago everything is weeks and i don't have to think about weeks and months just trying to smooth out all those little things

02:49:32That spec might even pass.

...46No missing keyword by. Oh, that's who did the rename. And we pass by the user because we are saying that Bob did this rename to use their current username. Moderation should only be linked to one object. Why did it try to create? Oh, I have to pass by, but it can be nil. Wait. Now I have to pass the user.

02:50:56What's the bug? So I'm going to, aside from this bug, I'm going to throw on the last call banner because as soon as I fix this bug, hopefully in the next five minutes or so, I'm going to wind down the stream. So if you have any other questions about the site, now is a great time to ask them.

02:51:22this validation is actually failing because the moderation is not linking to any object oh this is just a bug ah they're both supposed to be oh they're both wrong oh now i gotta go check the production and see if anybody is renamed in production since i created that code

...55Identified method ID for username. What? Model. How'd I get there? 34, 8, 29. So it went to 8, 29.

02:52:25This should be user ID.

...35marcoroth_ dumb question: what does "hiding" a story mean on Lobsters? Just that you don't want to see it anymore on your feed, or does it have some other side-effect if I do this on a story?
Maybe nobody has renamed in the last couple of days because that would have 500 and one of them would have. Now 34. If you hide a story, it will not appear on most pages. So when you view the tag page, the homepage, it won't appear in RSS feeds. You won't get notified about replies to any comments you left on there. And if you also flagged the story, it penalizes the score and has the tendency to push it down the front page. That's kind of a, there should be a cost to flagging things. It shouldn't just be a one click and punish. marcoroth_ so it's like a downvote?
and moderators do see who hides a story and we are aware that some people hide them because they go hey this story is bad and i don't want to even be bothered by it for whatever reason whether that's the story is bad the comments are bad i disagree and some people use hide for other things where they're just like I don't want to filter out the rust tag, but I mostly don't care about rust stories, so I'm just going to click hide on most everything that says rust. And so mods are aware that people hide for various reasons. And to directly answer your question, hiding is only like a downvote if you also have flagged the story.

02:54:24Because we're not big, downvotes have a lot of problems and so we have slowly gotten rid of them.

...58marcoroth_ can only mods flag stories?
it's not marked down it's marked down er because it's the thing that does it and then oh no any user can well most users can flag the logic for that is i think in the user it's probably in the story model your account has to be like a month old and not have a negative karma. So like if the first thing you do is post an advertisement for your hip startup, you're gonna end up with a negative karma. Karma is basically your net score of all of your stories and comments. I say basically, because there's a little more complexity there.

02:55:57marcoroth_ gotcha, thanks. That explains why I don't have that option
Oh, no, this one I didn't get the.

02:56:08Yeah, I believe you only joined the site in the last month or so. But yeah, there's there's that we can just model story can flag can be can be seen by

...35So there's is waggable must be over here in user. Ah, you also, I forgot about this. It's been a minute since I've touched this code. You also have to have a certain level of karma, which is 50. So post a couple of good comments or a couple of popular stories and you will be able to flag things. That's deliberately a fairly low bar.

02:57:23marcoroth_ that makes sense
So how concerned should I be that renaming was broken in prod for a couple of days? Not very. We don't see a lot of renames. And I didn't see any 500s in Telebugs. So change to user name. Let's go just check the log.

02:58:08Hitokiri_BattousaiTV o/
Hi, Hidokiri. Hitokiri_BattousaiTV hey @marcoroth_
You're coming in here at the very end of the stream. graefchen Seems like I am back to the ending of the stream limesLurk
If I don't find any bugged users, I'm going to commit and deploy. But I'll be back on Monday afternoon.

...23Ah, you made it back. Yep, you're in the home stretch. We'll see if I find any bugged things. Where have I created a desk? I don't know, 10? What is today? 23rd so nobody has in the last eight days all right so this this looks fine all right yeah so well you know it's fast enough to look oh things i don't do often don't split those tabs very often So I'm going to commit this, deploy this, and then I'm going to re-render every comment in prod. marcoroth_ @Hitokiri_BattousaiTV 👋🏻
I'm not going to hold the stream for all of that, but let's skim this. Good, good. Yes, this is what I'm expecting. There's better comments. There's a better signature. Yeah. So let's...

02:59:42gabrielopesantos Hey, Can I get a lobste.rs invite?
gabriel the stream is just in its last two three minutes if you go to lobster chat it's linked off of the footer of every page there's some instructions there

03:00:10gabrielopesantos Sure, thanks.
There we go. Circa when they were written. To work. Fix to render mentions contemporaneously. I don't know what to say. Based on the state of the world as they were in? That sounds contemporaneous, right? Oh, let's grab down the Thesaurus. I'm overthinking it. chamlis_ period-accurate @mentions
So, you can't see it, but I have mentioned it on the stream many times that I keep a big, thick copy of Rodgett's International Thesaurus 8 edition, because I think having a very good Thesaurus period accurate, that's pretty good, actually. I like that. But now that I already have the thesaurus in my lap, I'm gonna finish checking. So I'm gonna look up contemporaneous. A lot of words that start with con. marcoroth_ LUL
Contemplate, contemplation, contemporary. That's about right. Simultaneous, present, or modern. I think simultaneous. So we're going through 836.

03:01:41What are the bets that we see? Channel says suggestion. Simultaneity. Contemporary. Co-eval. Concomitant. There's a deep cut. Compere. Age group. Pure group. Coincide. Co-occur. Concur. Co-extend. Synchronize. Isochronize. There's a good one. Put in phase. Be in phase. Be in time. Keep time. Go hand in hand. These are not quite it. Concurrent, co-occurring, co-instantious. Concomitant again. Coetaneous. That is exactly what I mean, but is too obscure a word to use. Unison, isochronous. I like that one more the more I see it. Accompanying, collateral, agreeing. Yeah.

03:02:42Yeah. Out of curiosity, do I see period accurate in this source? I think a period accurate is a pretty good phrase. And I like it a lot. Periodic. Period. Grammatical term, point, end, time. 821.1. Hitokiri_BattousaiTV what do you have aliased to 'jj'?
Now, that's just going to mean everything that means a period of time, not the concept of being period accurate. All right. We're going with it.

03:03:18pushcx https://lobste.rs/s/ghdv6w/i_se…
nothing so kidokiri if you look at the front page of lobsters oh since i started this stream it has slipped to the second spot but there's a lot of intro here jujutsu is a version control system it is compatible with git but nicer than git Hitokiri_BattousaiTV thank you
And I've been using it for a couple of months, where I've been using Git for, I don't know, 17 or 18 years, and I like Jujutsu a lot more, and I am replacing my use of Git with it.

03:04:04There we go. That's solid. So let's push the branch and kick off the deploy. And then this deploy should take about 25 seconds typically. chamlis_ do you want updated_at for the comment rendering timestamps, by the way?
And then I will log in and kick off, if anybody noticed it, this method in prod, extras, markdowner, because I knew this was going to come back to me. I wrote a method called re-render db markdown that re-renders all of the cached markdown. Do I want updated at for the comment rendering timestamps? Ooh. That's a really good question. I think. chamlis_ I can see tradeoffs both ways
No. So I'm thinking both in terms of. kind of like the practicality of the code base as it is and the modern semantics of updated at in Rails. And right now we don't really care about the updated at field on these three models in the way that Rails sort of does, uses it as a cache key. So I don't think I need to get this part right. And then the flip side is, especially now that I've fixed this issue with period-accurate mentions, this method can probably go away, as can these comments. chamlis_ it's if someone edits a comment to add a username after they renamed recently, which seems unlikely
I'm still building confidence in the Russian doll fragment caching, which I've only used for the mod stuff for, what, a week or two? remember which stream i did that on i want to say two weeks and once that yeah that one is oh you must have stood up for a second i kind of talked through that one out loud that i think it is more common that people will chamlis_ ahh yeah I did, apologies for the retread
expect to see the app mentions from when their comment is created it is a rare enough comment corner case that someone will rename during the edit window of a comment that mentions them now you're fine i'm happy to talk through this because maybe you see a use case that i didn't and then

03:07:11Yeah, I think created at feels better. It's a corner case either way, because if you at mentioned something and then you edit that comment and someone renames to what you at mentioned, now a link appears in your comment. chamlis_ I forgot that there's a limited edit window, that really brings the odds down
And I guess a very small thing, but the reason I chose, the other reason to choose created at is yeah is we only send notifications that you were mentioned on comment creation so if i write a comment that says at chamlus here's that link we talked about you will get you know the direct message or even the pushing over over notification if you have it configured if i say chamlus here's that link save edit the comment, add the at sign in front of your name, save. It will be hyperlinked, but you won't get the mention. You know, you won't get the notification. And so I feel like using the created at fits that limitation a little better. There was a... Oh, here, while I'm rambling it. 39 seconds. What a slow deploy. Let's get this kicked off.

03:09:03On my local machine, this takes a couple of minutes. In production, it takes, I don't know, 15. So we're not going to watch that finish. But where was the... pushcx https://substackcdn.com/image/f…
slack chart for whether to send a notification people made fun of it yeah but a couple of years ago slack published a chart about i hope this url works that's a long one nope because it's got a dollar sign slack published a chart of the decision matrix, the flow chart of whether they will send a notification. Then it is influenced by default preferences, user preferences, what the user is doing, and parse And so it's like, okay, so if the user has the channel muted, or the user is in do not disturb, and people were like, oh, Slack is a chat app. This is overengineering. chamlis_ that's great, I wish more software published such nitty-gritty details
But no, this is what happens when you're trying to be thorough about it and match user intuition. Because as ridiculous and complex as this, it's not ridiculous. As complex as this chart is, users actually feel pretty good about the mentions they get from Slack. Or they can form a mental model that reasonably accurately approximates this. chamlis_ sometimes you just wanna know exactly how it behaves (my bane for this is podcast apps and how they automatically manage episodes)
And so there's things like if I have Slack open on my phone and I'm looking at a DM and someone messages me, I don't need a mention because I'm looking at it right now. the reductive well anytime someone sends you a dm you get a mention would be wrong and irritating af yeah so this this is what so marco asked why can't i flag this story or what does story hiding do and i kind of brain dumped our own version of this of Is your account 70 days old? Do you have 50 karma? Is the story within the what seven day window where you can flag it? Is it above the minimum floor? Like there are all of these things. And then he actually had asked what effect does this have? And the answer is even more complicated, right? Cause then it hits other code paths and it's okay. Well, did you hide it? marcoroth_ it's just a link sharing platform
as well did you leave a comment before you hit it so social software especially is prone to this sort of thing where you end up with lots of it's just a link it looks just like reddit how much code can it have right but these kinds of polish make a significant difference changing a line or two of code about how flagging and hiding works literally like three character diffs or haha we can pull it back literally like a three character git patch that i could email myself before i merge can have a substantial effect on the vibe of the community. Because it's all communicating and feedback loops. And if I click hide on Marco's story, does Marco experience that as a punishment? Does Marco feel that that is a negative social signal? And I am assuming Well, actually, I know Marco is capable of reading social signals. Marco, the actual human. So in this example, our code is at least this complex because the thing we are optimizing for is, does Marco want to come back tomorrow? and spend 10 minutes writing an incredibly interesting and thoughtful comment. And the hardest part of it is maybe this is also a moving target. It is not just that it's people. It is that there are feedback loops at every level from what experience did Marco have in the minute he posted that comment tomorrow? yeah i messed up that tense what experience does marco have a week later when he looks back on that comment what experience did the reader have what experience does the reader have when they write their response to marco's comment and it's turtles all the way down everything you know if we drew a link of the feedback in social software There's the concept of a well-connected graph. This is a universally connected graph where every node has an edge to every other node in a circle, and they all have non-trivial weights. So that's part of why social software is so interesting.

03:15:28Well, speaking of being social, I'm going to stop being social and end this stream. Thanks for dropping in to talk about community and catch my bugs and work on the code base with me. espartapalma thank you
chamlis_ thanks for the stream!
I'm going to keep that up because it's going to run for a few minutes. andrewstwrt this isn't a 1:1 compatible comparison with lobste.rs, but i found sophie alpert's post about refactoring that slack flowchart (and the underlying complexity) interesting as well: https://sophiebits.com/2024/10/…
And hopefully, if you go browse old comments on the site, you will see that they have period accurate username mention links.

03:16:03marcoroth_ Thank you, see you around!
Andrew, thank you for the link. gabrielopesantos thanks
Everyone is wrong.

...22graefchen Ohh. I see i need to watch the video, because of the city building stufff. limesNoted
This is longer and more thoughtful than I can have a hot take on, and I do need to roll out. Yeah. It's the Ellen Ullman quote there, Grave. All right. So the next stream is scheduled for Monday, 2 p.m. Chicago time, which is, speaking of Easter eggs, as Grave did earlier, is the time zone that Lobsters runs in. All of our timestamps are in Chicago time, regardless of where they were posted from or to. All right. veqqio Oh, came in at the end. HAve a good weekend!
I hope to see you all on Monday, and feel free to contact me anytime by email, DM, IRC, Blue Sky, and otherwise, take care.