Duplication is easier than debugging
Streamed
More typography fixes. Dumps for sentiment analysis of Lobsters comments. The great MySQL to ~PostgreSQL~ SQLite migration. Checking in on database consistency PR Lobsters API and the story preview field for JSON responses. Increased risk of breaking RSS URLs. Making coffee soda.
scratch
topics
PRs
safari textarea font-size https://github.com/lobsters/lobsters/pull/1873
database_consistency https://push.cx/stream/2024-12-09-actual-bugs
issues
unread https://github.com/lobsters/lobsters/issues/1879
tags label https://github.com/lobsters/lobsters/issues/1880
story form tags text color https://github.com/lobsters/lobsters/issues/1877
nginx -> caddy cleanup
tangled
file an issue about /rss urls
admin tool for backfilling new tags
split rack::attack off into its own database
awk: ./mysql2sqlite/mysql2sqlite:130: (FILENAME=mariadb.sql FNR=111578) warning: Invalid multibyte data detected. There may be a mismatch between your data and your locale
title
duplication is easier than debugging
post-stream
stream setup notes
Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.
Recording
02:44It is Thursday.
Let's put this up.
This is Lobster's.
This is Lobster's office hours.
So let me put my usual message in chat.
pushcx Drop questions about Lobsters in chat anytime!
Questions about lobsters in chat, anytime.
And yeah, let's get started.
graefchen Howdy! limesHi
So,
I'm Peter, maintain this site.
03:20And you can tell on the Thursday streams especially, I tend to be rolling out of bed two minutes before the stream.
...40So I often start a minute late and I'm a little confused. All right, let's tidy it up. Business posts, business posts. Oh, hey, Graf Chen. So when folks don't have questions, work on the code base. That looks like reviewing pull requests Thankfully, getting a lot of stuff to merge, especially lately. And looking at the issues in this stream, maybe I'll even get to take a couple of things off my backlog. I put a couple on the topic list. We'll see what we have time for. Yeah, so I think I actually just added a conflict to this PR. yesterday because I was reading about font size stuff in the wake of all our excitement. I know there's been activity on this one, though it's not yet ready to merge.
04:54That's weird. I thought I was going to see a conflict. OK, so let's grab the commit and give Fedamp has made a bunch of front end commits a little bit more info.
05:56changes on these elements. Very good. Way too sure. System. Let's address everything you identify in this. PR.
06:40So if anybody doesn't know, FedEmp has made a whole lot of great front-end fixes recently, which is why I'm kind of, hey, you know all this stuff. So let's see, font-textarea, font-size. I'm going to say Safari because that's who's having fun with us. Great. And then we got my commit. database consistency. Ooh, if this is ready to go, this is a big, big piece of work. Huh? Yeah, piece of work is not a compliment to a person, but I hope it is a compliment to this PR, because I'm actually really impressed with how much work FPS Felipe put into this.
07:34Great. So one of the handful of things is this, this change cost test failures. I don't think there's anything that, well, there's one thing that had, so he's got this error along the way.
08:11Spec Helper. Spec Helper or Rails Helper? I think Spec Helper. Guess not. Yeah.
...33So let's grab that.
09:22Actually, I'm not sure that I'm not sure that this strictly needs to be here. Because a lot of the factories we use
10:142018. Yeah.
11:11Now we can say, create story, create associated.
...41Category name. Category one and two tags. Tag one, tag two.
12:49That's self-contained, so selfish.
13:10dhruv2038 hello!
krbackslasht Hi! Thanks for all the good work on lobste.rs! I wanted to do some statistical analysis of comments on lobsters, for example to see if comments are mostly pro or against LLMs (as part of the ongoing debate on the site), and also attempt to do sentiment analysis and see if there are tendencies in time for a "better" commmunity. To do so I would need to have access to the comments table of the DB, and maybe the stories one. Is it something you'd be willing to dump ?
You know, I should have... Hi, Dhruv.
I should have just clicked on their test failures.
Oh, hey, care backslash.
Yeah, I saw in the scroll back.
I saw your curiosity.
Let me finish my thought on looking at this PR and then we can run some queries.
I building on what some folks suggested to you there in the channel, though, I generally don't dump the entire tables because
nothing personal but like you could do anything with those so if you want to run summary stuff let's you and i work on it iteratively and you can spin up a copy of the code base and run the fake data test to have a live schema and database with all of the structure and some sample data to start drafting queries but i'm very happy to work iteratively with you here on stream to get what you're getting at sentiment analysis though
I know you'd need the text of the comments.
Well, depending on which sentiment analysis.
14:28twitchtd hi
Username has already been taken.
That's a weird one.
These are not the kind of failures I expected.
Oh, hey, Thomas.
I've got your PR open here to get to in about 10 minutes again.
So once again, nice timing.
Kara backslash ahead of you just asked a big question, so maybe it'll be a few minutes more.
Yeah, this is a weird failure.
I did not expect this.
15:31krbackslasht NW, we can go back to it later, but I'm officially at work right now, so feel free to move on to thomas if I don't reply when you get back to me :)
dlamz @krbackslasht it would be cool if you could compare how the sentiment of things like systems/mongo changed over time too
dlamz systemd*
Hmm.
16:06Let's just let's just grab the line of code.
...25Okay, so those are
...42All right, that one's certainly resolved. OK, so this is not ready to go. Why did Felipe have to do that? Maybe he started this branch before those title card images. Maybe he's creating a new step.
17:19Yes, because he duplicated the test step to make the database consistency step, so it makes sense that he'd have to duplicate that.
Yeah, he had looked at reusing things, but GitHub Actions are painful to debug.
Duplication is easier than debugging.
That's how that saying goes, right?
All right.
Come here.
Occasionally I say silly things, so I use them as stream titles.
So Kara Backslash, was there
krbackslasht Yeah I'm here !
pushcx https://lobste.rs/about#queries
krbackslasht Well, ideally SELECT * FROM comments
specific query you already wanted to run if you're free to talk about it if you're doing work stuff no worries but so if anybody's wondering what they are referring to ah great there is this open offer that i'll run queries against the prod database if folks have questions about stuff because we have enough data to be interesting and occasionally you figure out
krbackslasht But I agree that this is too big
krbackslasht so either limit it on columns, date
books figure out very interesting things yeah that's what i'm reluctant to do because that's the entire site and you sound like a perfectly straightforward person but there's lots of ways that could get misused unfortunately
krbackslasht or a subset of it with like WHERE RAND() < 0.05
Yeah, or usually we just iterate to work out what are the summary stats that you want.
So like one of them has been, I think the most recent query we did on stream was figuring out the number of comments and the number of tags and the number of flags by vote.
19:19Or we could flip it around.
krbackslasht But the issue is that summary stats wouldn't be enough, I need the text of the comments
If the sentiment analysis,
krbackslasht Ah interesting. For now I don't have any tooling in mind, I have never done that before.
tooling that you have in mind is publicly available i could install and run it is it something that is just an open source code base is it something you're thinking of writing from scratch okay
Yeah, I'm kind of doubly reluctant to hand over
the contents of the entire site for a non-specific plan.
20:16krbackslasht Fair enough
graefchen Sentiment Analysis limesNoted
But let's find stuff, because I do have stuff like olama installed on my local dev machine.
Before the video card shortage really kicked into gear, I've got a NVIDIA card with 10 gigs of RAM.
So I can run stuff locally.
And I have a whole pipeline set up for taking prod databases, dumps to my local machine, so that I do it a lot for development, just to see that the whole site works with real data.
But it's ideal for this kind of
If you want to run a Ruby script that invokes some tool on sentiment analysis, we can build that out.
That would be pretty interesting.
I have no idea what the state of the art is for sentiment analysis or what's available or what its limitations are.
So I can't help on that side.
But it is at least pretty straightforward to run something like that.
21:28chamlis_ I'm just about to head out for a bit, but maybe s/nginx/caddy in that queries paragraph?
And we can, depending what you come up with, we can hack out a Ruby script to run it or a bash script to run it.
...40Did I say nginx? Wow. Yeah, that's old. Good catch, Chambliss. Thanks for dropping in.
22:04krbackslasht My first plan was to not even do sentiment analysis, bit classify by hand comments as Neutral / anti LLM / pro LLM, and do so until I have enough statistical significance
It's got to be the last place.
Oh, no.
There are a couple of places that mention that.
All right, let's clean up a little.
...33krbackslasht But that's not really gonna work if you do it on your computer :p
chamlis_ one other quick thing that I've never been sure of - is it intended that the vertical lines connecting sibling comments don't happen at the top-level?
KR back.
krbackslasht So I'll have a look at automatic sentiment analysis and come back with a plan
care backslash it could there have been actually.
A couple of incredibly thrilling streams, where I have hand classified.
What was it that we made that whole big spreadsheet of i'd have to dig back in the archive but.
tons of stories to kind of sort things out into categories and.
think it was every merge yeah it was all the merge stories and there were several thousand of them and it was trying to figure out what are the patterns in merging so that we can tweak the feature to better support merging and present things better so like if we want to classify a thousand comments we could classify a thousand comments you know i think i even put it in a little stream announcement but
stuff is not super exciting sometimes it just means let's look at a thousand items is it intended the vertical lines connecting sibling comments don't happen at the top level channels if you're talking about comments that reply directly to a story yes so they would have you know i know you know the database structures they would have different thread ids yes they should not
have sibling comments.
We consider them to be independent rather than siblings, which is not as mathematically tidy.
krbackslasht Ahaha yeah, I wouldn't feel comfortable having you grinding through enough comments to have statistical significance. Especially because most will be neutral, we will need a lot before being confident in the pro/anti ratio.
You know, it's kind of a special case, but it just feels odd to consider them siblings.
All right, so...
24:36Care backslash that's that's a lot of what maintenance is I don't know how to say it more like. Here, where is it. extreme. What did I call it coding.
...56coding. The other kind of coding like survey coding.
25:15pushcx https://push.cx/stream/2024-12-…
must be this one yeah yeah so starting here on that's not the right clipboard like starting here you can watch several hours of me sorting stories out that's what it takes sometimes
So let's see, there was the 502.
Production is going to be stuff with keys.
That's fine.
Let's go look at the application controller.
Match this caddy config.
Match this in caddy config.
26:43so there's that i guess we could throw that in as something that just got done consistency that was 1827 and we touched on see i try and keep this running list for the
krbackslasht As someone mentionned on IRC, I could also get the same info as I was hoping to get from the dump by scrapping the website. Would that expose you to the same legal issues ? If not, would you be ok with me doing it ? If yes, with what kind of rate limiting ? (But feel free to move on, I don't want to monopolize the stream)
archive okay so thomas i saw in my email that you have made a bunch of updates to this pr but i haven't looked in until now yes
Jason strings.
27:55So carry, you're not monopolizing the stream, you're totally fine there. Yes, you could scrape the site to get that stuff. Or if you care on a forward going basis, Hi, Bigger Knee. You could subscribe to mailing list mode, and then they would just be emails in your inbox. But if you're only interested in comments under the vibe coding tag, yeah, you can pull that out pretty straightforwardly. It's not that these are legal issues. It's that they are... Oh, Bigger Knee, that's interesting. You get a timeout. it here have 10 minutes and it's there is implied consent from the user to have their comments republished indefinitely on the site, but not any implied consent to have it reused for other purposes. And I try to be I try and be thoughtful and predict what people would find surprising and dismaying and. If I give you a copy of all the comments I don't think anyone would be surprised or put off by running sentiment analysis and trying to understand. The Community norms and whether discussion changes are happening or like. how we make sure that the community is a healthy place to disagree and to collaborate. The problem is that you or anyone else who shows up asking for a copy of all comments is a rando and they could do other things with all of the comments that are less great Like, I'm going to start Lobsters 2. Oh, look, it's a running start. We have all of this content. Or I don't even know what. So the flip side of that is for scraping, like, yeah, someone can very easily write a scraper and pull every story off the site, every comment off the site. I'm less worried about the stories, honestly, because there's less. People put a lot less of themselves into a story submission than taking the time to write a comment.
30:40But also everybody knows that everyone can scrape the entire web.
So when you see those posts where people have run like sentiment analysis on HN comments or Reddit comments and everybody goes, yeah, you know, you can scrape a million comments and do that.
but it feels very different when the site owner is like, yeah, we gave someone a copy of all of the data to do this thing that you never considered we might do.
That's the part that feels just more than a little iffy.
I don't know, I hope I'm making sense.
This isn't something I've stopped and written down as like, what is our research policy?
Maybe we are starting to draft that here.
krbackslasht Yeah, you're totally making sense, don't worry.
So I do appreciate your questions because they're forcing me to get specific about what it is and what it isn't that I'm concerned about.
I hope that's helpful.
Oh, that's obnoxious.
We can't do named params.
32:19I want to double check the docs on this.
...38That's associations.
...52Where's the? OK, so it calls it array conditions and it calls it hash conditions. Yes. No. Placeholder conditions. Yeah, unsurprisingly, Thomas had the right syntax for that.
33:27Exec update. I wonder why not.
...40Let me go a different direction. Let me grab, let's go right to the docs.
...58Maybe manually manage, consider exec query instead. Using binds as the bind substitute. That's interesting. Thomas, if you're still here, how considered was it that you chose exec update over just execute? Execute I think doesn't do binds at all.
34:29twitchtd ya execute doesn't do binds
let's go browse this yeah you know i see it i was misreading that little type signature because i've been doing some you know properly typed language and so i was like oh it's expecting an array but
Of course, in Ruby, everything is dynamic.
The default is an empty array, but it could just as happily take a hash.
So I'm really puzzled by exec update being willing to take an array of updates but not a hash.
So I'm kind of farting around to see if there's an obvious reason for it.
Yeah, so it's going to call.
I have had to look this up, to SQL and binds.
So it takes arrow or string and binds.
If it responds to AST, do that.
Come here.
35:44That's a little funny. Okay. If prepared statements, what's not? What is the collector though? Besides being Benicio del Toro in the Marvels.
36:22Because if it's two SQL and binds, it's just passing through the binds.
What's actually evaluating them is the question.
timmarinin hi everyone
And how do I get back to my code?
...40Hey, Tim. Aaron in. Yeah, so this calls internal exec query. It feels like, for how many times I am seeing function signatures with SQL and binds as separate parameters, that is the data clump smell. It feels like there's a missing intermediate object that is the concept of a query that's about to have binds applied to it. Are there?
37:25twitchtd I think internal exec query is in the adapter
must be implemented in each database back end get over here how do i get the url off of this yeah that's what i'm trying to say you know reading this comment it says consider using select all oh but that takes arrow
38:03There was an update that... Yeah, the way this gets down to... This select function, as opposed to a generic query function makes me wonder if the update family of functions is on a different path. Such that it treats binds differently and hasn't implemented the hash style that would be. A surprising limitation, but I don't know the active record internals well enough to say i'm just kind of riffing on not seeing update in here. Trying to figure out how we're seeing that behavior and that limitation you're talking about.
40:08ChaelCodes Whoa! Are you moving to SQLite?
This is which function?
I'm trying to think.
This is a function that is covered by tests, right?
So if we start passing parameters in the wrong order, it'll break, surprisingly.
Yeah.
I expect it to be landing in app models story, and I landed in search.
41:01Ah, Chail Codes, howdy.
Yeah, that has been an in-progress thing for six months or so.
pushcx https://github.com/lobsters/lob…
There's, well, something we've kicked around for a while.
It's 539.
It's one of those issues that's been around long enough.
I've learned its ID number.
But the basic gist of it is...
...32we've kicked around the idea.
Postgres has, for a while, had some nicer functionality than MariaDB that we've been using.
And there was, I mean, you can tell by this, we've been thinking about it for, what is that, five and a half years?
No, I'm sorry, seven and a half years.
Coffee's kicking in slow this morning.
That we've kind of,
liked some of the potential features available in Postgres.
But what a big project, right?
Almost nobody ever migrates database functionality.
Well, in the last, call it year and a half,
Rails has really made a giant push to have excellent support for SQLite.
And a bunch of folks have demonstrated that it's possible to run very productively in prod.
And it matches up very nicely to our uses, which is pretty low writes, lots of reads, a little interest in custom functionality.
me being tired chasing active records interest in generating one plus n queries because oh my god it's it's constant and if it makes the site faster at our core stuff which half of our paid views are show me a single story view that's pretty great
And Thomas put up his hand to take on his big project.
There was someone who took a run at the Postgres conversion maybe two years ago, and they lost interest.
I couldn't tell you offhand why.
They didn't keep talking about it.
timmarinin how is lobsters deployed now, single vps?
ChaelCodes Well, that's interesting!
So yeah.
Potentially a big change.
All right, so this function, update score and calculate.
43:58pushcx https://lobste.rs/about#trivia
Tim Marin, it's on two VPSs right now.
Where's, oh, it's not in here.
Ah, trivia.
So it's one of the trivia items that we have two VPSs up on DigitalOcean.
The MariaDB is a standalone server that was set up with our old Ansible repo.
The Ansible repo is now retired, and I'm just manually playing kick the can on the MariaDB server by, well, obviously security updates are automatically enabled.
And then I manually run other updates, call it every six weeks, because it's supposed to be once a month.
But realistically, I don't get it every month.
I will admit that.
That's okay.
The security updates are automatic.
That's the big thing.
And I recently tweaked the config, which is the first time it's been tweaked since the Ansible repo was retired, to slightly lower the max RAM that it wants to allocate.
And that seems to have fixed the rare crashes we were getting where MariaDB ran out of RAM
and the server didn't automatically restart it, so then the site would go down until I could log in and bounce MariaDB.
That is one of those things where it's like, boy, I would like to have fewer moving parts in prod.
Every time we get rid of a moving part, things get better.
And there is an irony to
How all of the Ruby drama led to the solid Q and the solid cash stuff that's been really good for us, even as it's been really bad for the Ruby community at large.
Alright, so yeah.
46:16Date's going to calculate to ducks when users hide in flag. OK. Well, we at least have a couple. Yeah.
...46ChaelCodes Wait, there was a drama that lead to SolidQueue and SolidCache? I was around for that, but I must've missed it.
yeah in 2022 railsconf did not offer dhh a keynote slot and their public so like everybody knew it was related to the racist stuff that had been happening inside of 37signals but the public justification they gave for it was
ChaelCodes OMG
hey, DHH, you kind of haven't been very active in the last year.
ChaelCodes That's why they started working on it?
And so then in late 22, he put a bunch of folks on, he put a bunch of 37signals employees on making improvements for him to talk about in keynotes, in short.
And if you look at the,
ChaelCodes That DID NOT CLICK for me
yes and if you look at the rails world keynote that he gave at that first rails world because he started his own conference where he would get to have keynotes all of the features of the new version of rails are kind of half baked and he i think he calls them vaporware or he says a polite version of that
And if you watch the talks on all of the big marquee features on Rails, they're all from 37signals employees and all of them start their talks by being like, yeah, this is still a work in progress and we hope to have this ready to go in a month or two months.
And solid queue, which is my favorite of the recent features to Rails
ChaelCodes lol
rosa gutierrez gives a talk and in one of the talks she's given about solid q she describes learning that she was going to be working on solid q and when it was shipping while sitting in the audience for dhh's talk so like there is an irony to how this disaster has unfolded and the other thing
ChaelCodes A lot of good things have come out of cancelling DHH's keynote.
timmarinin how does elixir/phoenix compare to rails nowadays?
that has been really clear to me is, Oh, you can do really cutting edge, excellent, like genre defining work in web frameworks with a team of five.
DMC Forever ago, I was trying to add a bunch of postgres stuff to ActiveRecord, and heard through the grapevine (though people I trust talking to people involved at the time) that they weren't like to accept them because 37signals, since they are a MySQL user, were unlikely to accept the postgres related stuff I was working on so I dropped it (this was over 12 years ago probably now)
Like if you have five senior engineers, yeah.
I don't know how Elixir and Phoenix compare to Rails, but I have been looking at Gleam, which is in that same neighborhood.
49:48Oh, DMC, I'm sorry to hear it.
I have no idea about any kind of internal stuff.
I have made, I think, a tiny...
DMC @timmarinin At $LASTJOB, we switched over to elixir (then hired Chris McCord), they made the bet at the time
fixed to rails and contributed to one or two bugs but i have no idea how things work internally i would have assumed that the active record team would want parity between their database backends but that's not anything i know about i'm sorry to hear that you had that experience
50:52timmarinin @DMC how did
timmarinin how did it work out?
that's pretty neat chris mccord is the is he the primary author of elixir i actually have not or i'm sorry i meant to say phoenix i have not at all looked into phoenix beyond being vaguely aware of it and knowing that a bunch of rails folks decamped in that direction in
What must that have been, like 2018?
51:35twitchtd jose valim is author of elixir, chris mccord of phoenix
DMC I had added array support for Postgres in ActiveRecord (and was doing a ton of hacking on ActiveRecord to do JSON serialization in Postgres to avoid strings in Ruby hahaha
Jose Valen.
Yeah.
...42Thanks, Thomas.
Yeah.
DMC This was prior to 2016, it worked out well
This inconveniently does not say when Phoenix was started.
52:01Ah, DMC, that's funny.
DMC Phoenix was at least prior 2015
My one little bug fix to Rails was related to handling arrays in, I think it was YAML serialization.
...17Phoenix was at least prior.
Is there an about page that has like a quick history?
It's tough because you don't want that to be the first thing people read because they always want to get started.
easeout go team beam
I guess I don't need to run down that trivia.
Hey, he's out.
yeah i'm if you are just tuning in i've been getting interested in gleam in the last couple of weeks really do you run the beam in prod beam is such a funny name to me it's i cannot stop smiling every time i say it especially when i say like i'm interested in gleam and people are like what is that i'm like it's an ml on the beam and they look at me like i said magic beans or something
Just funny that it rhymes.
53:28DMC This was a lot of fun back in the day: https://dockyard.com/blog/2014/…
Thomas, I really appreciate you working through all of my comments.
This is a ton of stuff, and I'm aware stuff like put my grumpy comment at the top of the first migration is just me being opinionated, but thank you.
I appreciate it.
graefchen History pages are cool. As someone who obsess sometimes way to muhc over small things, I really love things like that. limesO
And I hope some of these technical opinions of mine are not too ridiculous.
54:29DMC Man, I used to do a lot of fun open source stuff
biggernii is twitch.tv/pushcx a good place to ask for lobster invites
no it is not if you look at lobsters chat that is a place but like bigger nil you're not off to a great start with political trolling
...59biggernii political trolling? your website is full of it
ah yeah you know we have those wild political opinions like be decent to people and have equal rights yeah that that whole enlightenment still controversial 400 years later
55:25biggernii what youre describing is me
I wonder if enlightenment, the gnome environment, is still around.
I haven't thought about that in a minute.
56:12biggernii not enlightenment though
Why rails when generating JSON responses with Postgres?
...22Ah, active model serializers. That's the thing I patched. Yeah.
...44That's funny that this is in 2014. Some of this stuff has been kicking around for ages, and it's hard to change the behavior.
57:06Oh, that's great. That's nice and short.
...18Oh, wow. Thomas, you got a conversion working.
...28That's great.
...35twitchtd yup, at least initial glance it looked like it worked
Okay.
So the backup script is.
App jobs, I think it's rustic underscore job.rb.
Let's double check that so that I'm not making stuff up.
Rustic job.
twitchtd though I think the real test is prod db
OK, there we go.
58:30All right, yeah, let's I'm trying to think I have a dump that's a couple of weeks old that realistically
is going to catch any errors that we would catch along the way.
Because it's not like we've done big database refactorings or changed encodings, collations, any of that kind of very fiddly stuff.
Yeah.
And so I could try running this.
Since this is going to have stuff like
user emails and passwords.
And I have no idea what debug stuff this is going to produce.
I'm going to do that off screen.
But let's set it up.
How do I want to do this?
Let's make a temp directory.
That's cd temp and mkdir m2 life.
Let's actually name it properly so that I recognize it when I'm like, why do I have a directory with gigs of data hanging out in it?
twitchtd btw, I can see your .tmp directory if you want to do that offscreen
And then where do I have a resource?
Some dump somewhere here.
Where is it?
Ah, here we go.
timmarinin yeah, its onscreen
So let's just move it from this folder.
2025.
No, there is a 2026.
One.
26.
Into dot PNP MariaDB.
All right, so let's go.
File size 0.
I must have started.
Let's copy the previous one.
01:00:58So it looks like that's 12.23.
01:01:14Yeah, half a gig, that's the right one. This isn't going to print to screen, right? But it goes to a file. Yeah, it goes to a file. yeah i figured i would do all of the setup stuff here and then once i actually whack enter i will move it off screen i appreciate the warnings i just wanted to let people see what the heck i'm doing and if i like misspaste this command so there is mysql all right yeah we'll just grab this
...59I should probably skim that repo at least a little to make sure it doesn't have an invocation of netcat or something in there.
01:02:11There we go.
Two and a half gigs.
Yep, that's about the size of prod.
twitchtd haha probably a good idea, it's a giant awk script but you can't be too careful with scripts online
I'm curious to see how big a SQLite database will end up being, because it doesn't have any of the insert, update, et cetera overhead.
...41Well, 289 lines, that's not so bad, but 289 lines of awk is a lot of awk.
...52Okay. Dash in file name is not supported. Does that mean any dash or just a leading dash?
01:03:08Knowing awk, it's probably any.
...25Wonder what's with this commented out stuff. This is our, we don't have any integers bigger than 64 bits, so I'm not too worried about it, but it's always interesting to see the in progress kind of stuff like that.
...48Start with three spaces separate non-argument local variables. Okay. Trigger, we do not have any triggers.
01:04:18Create view, sure. Skip comments. Skip partition, sure.
...34graefchen At least it aint the awk script for the Lil programming language. limesGiggle
Sequences like backpack, and this should be translated to N, not LF.
...47Grave, what is the little programming language? Is it a language that compiles to another language? I was talking about gleam that actually compiles to Erlang or JavaScript, which is very surprising.
01:05:10Our confidence scores do not exceed that, no.
And actually they are trivial to recalculate so I don't care if we lose precision there, because I would just recalculate all the competencies and all the story scores that's fine.
veqqio https://beyondloom.com/blog/lil…
i've been thinking about our deadlocks.
Because we occasionally have gotten some and part of that is.
If you.
vote i think it's just that if you vote on a comment at the same time as someone edits another comment or creates another comment it's locking tables in a different order because comment scores have to insert into the votes table update the comments table recalculate the confidence in the comments table
Which then rolls up to the story score and it's this cascading update pattern that.
You know, is the source of all deadlocks right.
So maybe I should just write one proper script that says.
Here's the lowest level object that changed the vote of the comment.
And now I am going to walk the whole tree or vice versa, you know, take a story and make sure all of these memoization columns are current.
I don't know.
It's gotta be one of the two, right?
graefchen An Array language, more like a toy language, part of Decker, a program similar to HyperCard, and the AWk implementation has 2k+ lines: limesO
And if it takes a story, we can maybe rate limit the jobs so that they only run every 30 seconds or something.
There is such a giant power law behavior swing between stuff that's on the front page and stuff that's not.
01:07:28Place full text key, fine.
...43This is one of those scripts where I read it, and I'm like, someone bashed their head on this for 20 minutes for each line of this. You can just feel all of the accumulated, goddammit. Array language, more like a toy, part of Decker. Ah, HyperCard is where I started, so you're close to my heart.
01:08:17Although I have never learned an array language.
graefchen The link veqqio shared says more about it. limesOks
No J, no K. one sec, I got a thing here.
01:10:02twitchtd you're not muted
dlamz not muted
timmarinin not muted
ChaelCodes hot mic!
So look at the... Yeah, there's nothing else interesting.
I mean, there's lots of interesting stuff, but there's nothing concerning happening in this script.
So then the command was,
...38twitchtd can't see your screen
Screen is still off.
01:11:14easeout screen still muted :)
There we go.
Okay, so I'm struggle buzzing.
Too many buttons to juggle.
...50So I'm going to get this started, mysql to SQLite, mysql, and then it takes the... We'll call it that because there was that thing about no dashes.
We'll say mysql to SQLite on MariaDB, and we will dump it to SQLite.sql.
This is what I'm going to pull off stream because...
timmarinin have you blogged about your stream setup?
ChaelCodes Hmmmmm. Is the vent full of lint? Sometimes that can make it harder for the dryer to dry things, and is a fire hazard.
I mean, I can read awk a little bit, but if it's going to use T or print warnings to the screen, who knows what kind of data is in there.
twitchtd I just realized the script is missing the insert into {comments,stories}_fts select cols from {comments,stories}; but that's an easy fix
Chail, that is a very common thing, yeah.
01:12:46The short version is the landlord rebuilt it. That was one of the problems along the way.
01:13:02veqqio A gear in my dryer melted a few months back, which was fun
ChaelCodes @timmarinin Hey, if you need stream setup tips, I have advice.
Yeah, Twitch, didn't you, or Thomas, didn't you write a function?
Oh, no, you wrote the around insert update kind of stuff.
twitchtd no, not that, I was thinking about the mysql2sqlite conversion script :)
timmarinin @ChaelCodes would love to hear it :)
ChaelCodes lol, do you want stream setup advice?
a gear melted in your dryer wow that's chill yeah let's maybe oh tim you're replying to tim yeah somebody actually just emailed me like a week or two because they were thinking of doing more streaming and i i sent them my brain dump on setup i guess i should shove that into a blog post let's put that in my to-do list
...52But Chael would be the expert here.
Her stream actually looks nice and probably has less talk about dryers.
All right, so this is ticking away in the background.
I did get one warning out of it.
The warning was...
File name MariaDB, SQL file warning, invalid multiply data detected.
There may be a misbatch between your data and your locale, which is the kind of thing I would expect to see, right?
ChaelCodes @timmarinin Do you have Discord?
There's always, always some kind of issue with encoding and normalization and Unicode.
01:15:10ChaelCodes I'm @ChaelCodes there too.
Yes.
Thomas, you know, with everything checked like this, I mean, the backup command is only half checked.
We've got to get that into rustic job, but.
Let me pull up my calendar for the weekend, so this kind of migration I always try and do on a Saturday or a Sunday because traffic is so much lower and I feel less bad if I break the site for an hour or two or, you know, eight.
Yeah, so I have a thing Saturday morning.
That is probably going to run until noon at least.
So I guess Sunday would be better.
Yeah, so maybe if we can get the job and this test run goes clean, we could seriously consider merging this weekend.
I think, although I do kind of see that database consistency gem as a little bit of a blocker on this.
timmarinin i have an account, but havent been able to integrate discord in my day-to-day life, im timmarinin there also
Have you tried...
If you have a second, you could try merging that branch in.
GitHub is so bad at that sort of thing.
Actually, as long as I'm just kind of letting that script run in the background, there's a thing to talk about.
I have a browser tab off screen somewhere, right?
On the last stream,
While we were finding bugs in github because I find bugs in github every stream talked a little about.
Maybe it was two streams ago talked a little about what I would want to see out of replacement get forge and folks brought up tangled again and I have played with it a little and.
I.
01:17:25veqqio I have an interview almost done which goes into tangled a bit
veqqio The workflow/ui doesn't seem to fix anything fantastically
read this post and the real exciting post about this is that it talks about the interdiff model because this is a thing that comes up a lot is we have pull requests and people edit the prs which is great because then we get a very nice git history but
GitHub doesn't handle that well, and it's never clear how much has changed since I last looked at a PR, whether that's comments or code changes.
But it's especially if somebody force pushes to improve commits.
And then.
I went and talked to somebody who's used.
Oh yeah, the other big GitHub limitation that we just ran into, which is what reminded me was.
This sort of stacked PRS where we would like this to follow the database consistency one GitHub just does not is not well equipped for that.
So I spent a while chatting with somebody who has used jujitsu on tangled a bit recently.
And they basically said.
it's young, but in a like.
It's half finished, not half asked.
So it's a work in progress, but it's promising.
And that all sounded great.
And then last night, yeah, it must've been yesterday evening.
I was farting around on blue sky and I ran into this post on the for you feed where we have become Uber mega cringe.
That's great.
01:19:26And the thing that caught my eye, I was like, why do I know that name? It's like, oh, it's the co-founder and CEO of Tangled. Cool. So I don't think they're really interested in having us as users. And I'm going to punt on that one. But it is at least an addition. And I've been meaning to edit this line to take off the parentheses. Super mega cringy. Did I have the, where was my, there we go, that's the URL I want.
01:20:36All right, so there's that. We did the cleanup. The awk thing is still running. If I had been really clever, I wonder if I could just WCL it. All right, that'll give us a rough idea, right? PMP, MariaDB.
01:21:03All right, so this is... What is that? Call it 9 million. And then this. OK. That command is going to run in a while. If we did all of that and we're not even 10%, that's got to be running 10 minutes or so. All right. So launch edition 60. Might as well be like 20. This is a fast command. Alright, well, we can come back to that but there's our little progress meter when this number gets up in the neighborhood of 9 million it'll be done. that's gonna be a second. Maybe it'll finish on stream.
01:22:14DMC I need to start playing with jj and I'm keeping an eye on where Steve Klabnik just joined
DMC Yea
ChaelCodes 🌶️🌶️🌶️
spicy stream today between rails history and tangled oh yeah east river source control he's only like in his blog post about moving over and i think in one comment on lobsters he said a couple of things that sound like maybe i'm optimistically reading too much into it but it does sound like they're thinking about
stacked PRS and the interdiff model and having new workflows that are really customized towards jujitsu.
And that's the thing I would really want because changing forges away from GitHub would be really painful.
And I think on a, maybe two streams ago, somebody asked what it would take.
And the answer was all of our issues and PR comments.
And something nicer than the GitHub PR model.
Because I don't want to just see that with a different color scheme.
And then the wish list item, of course, is some kind of...
veqqio I interviewed him 1-2 weeks ago. They're still in stealth mode for a while. He mentioned the elevator pitch is sort of bringing big tech approaches to monorepos etc. to people at any scale.
The nice thing about GitHub right now is everybody's already logged in.
If everybody is already logged in to...
East River Source Control or Jujutsu Hub or whatever it gets called, well, then we're still getting open source contributions.
Oh, you interviewed him.
Big tech approaches to monorepos.
That's kind of cool.
01:24:04Well, fingers crossed for them. I hope they make something real cool to use. Yeah, I have done the big tech monorepo thing, and it can be nice. I do wonder, like Perforce has best in class support for partial checkouts. I haven't even looked to see if Jujutsu has started thinking about partial checkouts and shallow clones, although shallow clones are such a subset of partial checkouts that GitHub, or GitHub, Git got shallow clones and never got any kind of partial checkouts and it's frustrating because it like sucked the oxygen out of the room and it doesn't really solve the hard problems. I don't know, I'm just kind of riffing. It's possible that they've burned enormous amounts of time on partial checkouts and I'm just oblivious. That's going to take an hour or two. All right.
01:25:26DMC The way changes get packaged inside amazon is independent of commits/repos, and I wish more changes were managed like that (one code review can encompass multiple repos and commits, and you can redo all your commits and create a new code review and diff between the two without walking through commits)
So I think this is just my comment is the last thing on this one, right?
Yeah.
All right.
So let's look at issues.
...44Renew top comments. That's a strange one.
...58Since I've scrolled through this. This one is me doing a feature request.
01:26:14We've at least seen these. So let's go through all of these recent issues.
...27Oh, this one is funny. So I added a DMC. The way changes get packaged inside Amazon is independent of commits and repos. Create a new code review and diff between the other two without walking through. Huh, what's the code review in that context? Or what's the tool for code review in that context? Is it something custom?
01:27:05DMC Yea: it's internal amazon systems
DMC I'm pretty sure
Yeah, managing.
Yeah, managing changes that have to happen
approximately simultaneously in multiple repos is a big limitation of a lot of tooling and i think that's a big chunk of why so many big tech went to like let's just make it a mono repo it's fine we can chew 20 gigs on every developer's laptop just so that we don't have to deal with multi-repo operations
...44do not have a lot of experience in big tech though so grain of salt so this one i wrote up an issue for aux format and one of our chatters jd page has spent a minute kicking it around and it looks like it's in reasonable shape especially for our needs and It was funny, there was a comment here and I got the email about the comment, but by the time I loaded the PR, the comment was deleted. It took me a minute to find them, but I think they were a drive-by committer who just wanted to throw Claude at it or something because on their actual profile, everything was Python and Java with zero Ruby. And zero rust so this feels like a very odd choice, but they did touch a bunch of other stuff that said goes first issue, so I think they were just watching. Someone has aggregated a feed of things tagged goodford first issue anywhere on github and they just threw in a response without actually reading it. And then you know after their response they read it and they were like oh I can't do that. Very strange thing. So what kind of bugs do we have? Your account appeared above the unread indicator. That's a little odd, actually. So I get what's happening is code is written to replace the comment form with the newly rendered comment let's put this in the scratch come here
01:30:09And then my windows are all out of order. One second. There we go.
...39Where's story show? So it's the top comment box gets replaced by JavaScript. And where's the little unread indicator? Here.
01:31:15It can't be right. No, this is the bit that's at the end of the byline. Yeah, so here's comment thread. So here's our render of comment box. And I think it really, I don't want to put the form above I want the form to stay above this line, right? It'd be a little weird to print that above an empty comment box. So I guess it makes sense to, instead of replacing the form, remove the form and make the rendered comment the top thing.
01:33:43But be aware that this form and emotionality are use the reply for comments.
01:34:38There's a pointer for someone. I'm trying to, like, I could hack that one out, but I try and have these small issues in so that people see that they can contribute small issues and small fixes. Visit Stories New, click on a URL and the text input is focused. Click on Tags and nothing happens. That one's small enough I could maybe just take that on. Let's take a look.
01:35:15Stories new renders stories form. This is the user form. There is a label title. There is a label tags.
...35Oh, but the, so the Tom select JavaScript component, I think it replaces this select object right finds the id story underscore tags and then it renders OK, yeah, we customized the option in the wrong thing.
01:36:21Let's take a look at this.
...34Is that stalled? Is that the same number that was last time I peaked, 547,000? 538. Well, 538 is an easy number to remember. All right. So let's look at stories. So if we click title, yes, we get focused. If we click text, we click tags, right? All right. So let's inspect. Let's make this bigger.
01:37:17Label is for story description. And here there is a div. Where did my label go? Label for story tags ts control. Story underscore tags dash ts dash control. Story underscore tags dash ts. looks correct huh nothing in the console that's a weird one
01:38:25ekstwo are there duplicate ids ?
Are there duplicate IDs?
Good question.
I can do selectors here, right?
So if I say story underscore tags dash ts control, I just get the one, one of one.
But that's what you'd expect out of a structure.
If I search for the string, no.
Stop autocompleting.
Two of two.
The other matches the label, right?
Yeah.
pushcx https://github.com/lobsters/lob…
Well, EKS2, good idea, but no, that wasn't it.
Here, if you want to grab the issue, because I was going to hunt on it.
01:39:51Let's just copy and paste so I don't paper this.
01:40:05Right. And it says input ID. Yeah. Like what else could you need? Oh, wait a minute. Is the, if this is a select multiple, this is the hidden element. Not where's the input text. Cause this. The thing that's still visible is this div. I bet you this event is passing the click.
...55Why can I not see the things I'm typing?
01:41:05That font is a little tough. That's my setup, right? We're not actually that unreadable in prod. Now the input. How to complete off. I thought there was also going to be a text input here and it was hooking events, but I guess it's a select multiple with very clever styling.
...38Hmm.
01:42:26ekstwo ah .. needs login, am a lurker myself
That's an odd one.
Well, EKS2, I look forward to your fix.
Please.
All right.
Needs login.
Well, you can still clone the code base.
Do you know Rails already?
...47ChaelCodes Yes!!!
ekstwo can clone - no rails, but will give a skim..
Oh yeah, Chael, you've spent a lot of time recently on setup instructions and dockerizing and dev containers.
One of the small nice benefits about using SQLite is that is one or two big steps that come and just disappear out of the whole setup.
So this one is us talking about font sizes.
ChaelCodes you'd have just one docker container.
Did I get the last one in the scratch?
I didn't get any of these in the scratch.
01:43:55ChaelCodes I was thinking about that as you reviewed the PR.
Yeah.
Yeah.
And I remember you had some coordination stuff between the two.
And we just had that database consistency PR had a commit along the way where more MariaDB setup had to happen.
I think in its
because it added a GitHub action for running the database consistency check as part of the build.
And they wanted to extract the common database stuff out of the test action.
And they tried to do that, and they hit a wall.
And rather than beat their head against that wall, which I got the impression they lost an hour or two there,
They just punted and duplicated the database setup, which, yeah.
01:45:07The stream boss has come around, but I think he wants to play rather than settle down in his nice sunny spot so that he can be on camera.
...22Yeah, that's Safari. All right. So we got that fixed. Yes. Okay. So no activity in this one, but I am very hopeful that Earthbound Kit will pick up because her description of font ladder and fixing line heights is basically exactly what we need to do.
01:46:31All righty. This one, this is literally the bug I just saw. Well, that's definitely a real bug.
...59Tom select. How did this not come up before? We must have, well, maybe it's the font inherit that I just added. Yeah, let's take a look at that one because this one is basically unreadable.
01:47:39Do I see that font inherit in here? Yeah, that's the one I just added for the size issue. But no, that is not it.
01:48:01All right, so if we just get rid of that color, can I set it to color inherit? yes all right so let's just find that one and smash that fast 547 538 i think that awk has stalled out because that's the exact number it was like 10 minutes ago when i went past this tab i'll leave it running in the background because it's not hurting anything but i wonder if i look at h top I wonder if I look at HTOP big enough that I can actually read it somewhere. Yeah, so it is pinning one of my CPUs. So it thinks it's doing something. It must be in the comments table. Because that's, you know, half a million records in is fairly early, and comments is lexiographically first in the SQL dump. I'll just leave it and see how it goes.
01:49:26Is it tsinner? tscontrol. Yeah.
...36A, B, C. Let's go.
...47ChaelCodes Meeting time, I'll try to remember to come back this time.
You know, given that we already had that, can I explicitly just say inherit?
Maybe we can fix two bugs with one stone.
I mean, the second one's not a bug, but I don't love
duplicating the font stack.
Have a good one, Joe.
Thanks for dropping in.
All right, so that didn't fix a dang thing.
So we're dealing with specificity, of course.
01:50:22I put that in. TS control, not TS control input. So I put it in the wrong place. Yeah.
...40So let's say we will pull this out. Can't type story holder. You know, this tab indentation on the CSS and the JS is not a considered style choice. It's slightly smaller on the wire. But this stuff gets Gs up. There is no difference. Still don't like that.
01:51:40TomSelect gets loaded after. Even though I added the story holder, somehow specificity is not overriding. Let's filter color.
01:52:06TS Control input is wrong.
...14Is it not in the story holder div? It is. All right, what's the typo? TS control input story holder.
...33All right, let's put something obviously wrong.
...49And it's not visible.
01:53:00Now, why would my font family show up, but not my color? And you know that's only the font family when it should be the whole font, because that text is too small.
...24twitchtd I'm going to take off. Cya
It's just color.
Let's hit it with the bigger hammer, see what happens.
...44So it's got the right font, but it's got the wrong color. I was not at the right element focused.
01:54:21What was with that hidden span changing?
...35Because this color is set on TS Control, and that span that shows me the word Lang.
...56kaiso_bak_bak yo
Hey, Kelso, welcome.
So where's, let's add it to TS Control.
01:55:26kaiso_bak_bak so what are you building
Kelso, there's a link in the, or Kaiso, sorry, my font's a little small.
pushcx https://lobste.rs
There's a link under the video here on Twitch, but it's a website called Lobsters, which is also an open source code base.
And the GitHub link is over on the, if not under the video, it's on the archive page.
...55chamlis_ had a quick investigation into the tom-select label issue, I think it might be a side-effect of the form being laid out with a float; the tom-select wrapper div covers the label and blocks the click event from getting through. if the form gets gridded that might fix it, or I've hackily fixed it with pointer-events
I am currently wrestling with, I guess, CSS specificity.
It's an odd one.
TomSelect label issue.
I think it might be a side effect of the form being laid out with a float.
TomSelect wrapper div covers the lib.
Ah-ha-ha.
That's an interesting one.
Oh, I see it.
Channels, do you think it could be slightly less hackily fixed with a z-index?
chamlis_ good idea, I'll test that locally
Because that shouldn't change how anything floats, but it would put the label on top.
01:56:47Thank you. I appreciate you taking a look.
...58so if i put let's make sure i'm editing asdf asdf when i search for it how many instances are there there is one this secret span that is shoved off screen secret span not fan all right so what's the what's the difference then
01:57:46Something... I really like the result of TomSelect, but it has these couple of things that are a lot of magic. It was a hassle to get it styled correctly. Like that JavaScript invocation I went by a few minutes ago was a lot of struggling. But I guess that's the promise of headless components, right, is we would be writing our own from scratch instead of tweaking theirs.
01:58:32Like, if it has all this to show it way off screen, yeah, it's not my thing. So the thing I'm typing to is getting copied to that span. You know, I'm just looking at what changes here in yellow. And it's so strange that I don't see the ASDF appearing anywhere else in the DOM.
01:59:28At least I got the right font size now.
...38chamlis_ looks like you can't z-index the label in front because it's floated, if I z-index the wrapper behind you lose the ability to click the field itself, which I can't seem to reset back like I ended up with on pointer events
What do we think?
...46You can't see index label in front because it's float. If you z-index the wrapper behind, you can't click on the field. You can't see the reset back. OK. Thanks for taking a run at it. Pointer events are widely available.
02:00:19chamlis_ I think I should prioritise making this form a grid and seeing if that fixes it
I mean, it would Tom select would be replacing only things in the grid cell instead of things that float on top of each other in clever ways and break in Safari once a year, right?
Hmm.
...52chamlis_ enough of that optimism
The inspector must not be updating the DOM here.
02:01:01Because that's where the second ASTF ASTF is.
Enough of that optimism.
Yeah, I mean, shouldn't I be, like, right now, getting suspicious of optimism around how easy it is to fix front-end issues?
chamlis_ premature optimism is the root of all evil?
And you know, ChemList, there are,
I don't remember if the user story editing calls this form still or if that got duplicated.
And then the mod one is its own separate form.
So there's a couple of places for this.
...52Why is it using my input? Oh, right, because tomselect doesn't allow partial input.
02:02:08Honestly, I'm tempted to just delete it out of our vendor, copy to the tomselect, and quit fighting with selectors.
...36What's it called? TS control input. It's right here. It's not nested.
...58All of this would be improved if I just deleted this block, right? So changing vendor code.
02:03:14Let's at least see that that fixes it. And then I can decide whether I want to be bad. Oh, no. That breaks a bunch of stuff. Cool. Cool, cool, cool. All right. Let's just delete color and see where that gets us. How is this this broken? Let's look at my diff. I must have changed something that I'm not spotting. Is this invalid CSS somehow? No. The semantic diff here is a little wrong, but All right, hold on.
02:04:15Put you back. Reload. I don't see how that affected. There must have been a typo and I've been chasing my tail. because I accidentally created invalid CSS, and so it was ignoring rules. But this sure looks correct.
...41If not correct, valid is what I'm trying to say.
02:06:09All right, just typing in the chat room for a second there. I don't love tweaking vendored CSS, but I also don't love the site being unreadable.
...35If I'm going to tweak it, let's just Let's be serious about it. How is line height load-bearing infrastructure or font size load-bearing infrastructure to this page layout? Oh, boy. All right, we'll do just color. My ambitions have been adequately curtailed by the reality of CSS.
02:08:421877. All right.
02:09:17With a specificity selector in CSS. Didn't work, and this is vital functionality.
...41Get that pushed. Not great. Not a satisfying fix. Let's get this.
02:11:07All right. The chat room is chewing on me. Read me and what forge do we use?
...37Inbox navigation showing for non-registered users. Oh, that must be in the sub nav. Well, that one's at least an easy bug. FedApp is clearly auditing the entire site, every page.
02:13:09chamlis_ I'm really seeing just how bad the twitch latency is for me when your IRC messages appear before I hear you start typing them
So let's go fix subnav.
Must be the settings.
What is it called?
...25Yeah, Chamlus, I am sorry to hear it. Sometimes that can get fixed with reloading the stream, but it's also possible it's on my end. I hope not. Hasn't felt too bad today. Like everyone is responding very slowly. I don't know.
02:14:09chamlis_ I've tried that, I think most people call this issue "The Atlantic Ocean"
Ah, there's the messages.
No, there's not.
Actually, this shouldn't be here if you're looking at an individual threads page.
Why would that be there at all?
...43Rendering, rendering user threads.
...51And that renders the messages sub nav. Yeah, that's just an error. Why did I do that?
02:15:09I remember this refactor.
...19That just shouldn't be there.
...43The Atlantic Ocean, huh? Well, you know, if you ever want to really guest star on a stream, you can drop into Chicago sometime. Actually, in seriousness, if you would like to call into one, we've had a couple of guests like Chael and Joel and Beirut. If you would like to voice guest on one of these... You could make up an itinerary for a show and we could work through whatever you'd like for a couple hours. That could be fun.
02:16:39chamlis_ haha, maybe one day, I'll have a think
I don't think there's anything better to say about this one.
chamlis_ I think as things stand anything in-person would have to be in a neutral country
Yeah, the mysterious issue I had with Chael where I couldn't get her audio in the last time we tried to talk about the Modmail PR has just quietly vanished.
So I think I'm just going to chalk that one up to the fun of a rolling release.
Distro.
Yeah.
Without getting into the politics, yeah.
Although, yeah.
Where's my.
02:17:25So.
02:18:03so how's navigation showing this should be i didn't put the dang did i push that yes i did wasn't thinking
02:19:02graefchen But politics is fun. And as software developers you have especially the right to have an opinion about everyone and everything, disregarding your qualifications /s limesNodders
This one was a discussion we had in the chat room.
...43even labeled it all right so where's this one is feature request the first issue so a user was trying to find their art s feed and they kind of looked yeah great especially we don't have to read the docs which i guess in this case are you know the laws the history etc read the docs that's what i've got clawed for
02:20:30all right so where's so the when you are logged in you have an rss token that'll show you comments or stories and it applies your user filters
...59and it's only in the headers. So if you know that RSS feeds appear in HTML headers, great, you're all set. If you don't know that, there's no way to find the feature. So I figured we should add it to the filters page. So let's first find the link, layout, application, RSS, yes. So it's in the home controller. User token link. OK. So if we go to the view filters, this will save. This is saved to a cookie browser, which is the next line if they're not logged in.
02:22:29So let's just swap this around.
02:23:12Let's be a little more consistent.
...39Let's back up. to apply your filters and your user access link that includes your RSS token in the URL. That includes your RSS token.
02:24:17heypushwhyisthesitebroke i can't believe a stream has been going on for two hours and i was doomscrolling instead of knowing about it
there's all stories and yeah well if you wanted i could have broken the site so you noticed although i don't
Yeah, haven't actually broken site this stream.
But there's still time.
I typically go for about three hours, so there's about 30 minutes left.
Plenty of time to accidentally break things.
And all comments.
Can I just?
That's not what I want.
heypushwhyisthesitebroke hear me out, what if you "accidentally" break the ability to post things to the vibecoding tag
heypushwhyisthesitebroke just for a few years
Can I just lean on the helpers more?
02:25:30olexsmir 30 minutes is more than enough to accidentally destroy production db
Because I should be able to just say comments path, right?
...44Alexamir, that is not the kind of query I have offered to run. We talked about running queries against prod database earlier. Happy to run the ones that start select, less so update and delete.
02:26:05So let's see. Routes dot, let's say, comments path, and then format colon RSS. Well, I guess we could say colon RSS, right? Yeah, that's what we wanted. All right. And for ease of copying, these all should be URLs, not paths. So let's say comments URL. And then what gets me, I guess, root? I don't like specifying that one as root, though.
...57olexsmir i remember i once ran DELETE and noticed that it took little bit more than usual
But I guess I'm going to start liking it.
So if I said, routes.rootpath format, colon, RSS, that would not get me what I wanted.
Did we special case that one?
Yes, we did.
So that one just wants to be routes.rss URL.
Yeah.
OK.
So.
02:27:58There's going to be more of those, aren't there?
02:28:15Yep. There's newest.
...25Humanoidism transactions are a beautiful thing
And I'm
Hi, humanoidism.
Yes, they are pretty dang handy.
Are you just coming by to preach the acid gospel?
02:29:12Humanoidism Like we did it at 90s raves!
I've been meaning to update these ones in the header to URLs instead of paths because they're easier to copy and paste out for people who are just doing view source.
So save dot RSS.
So this should be saved URL format RSS.
...40You know, in the 90s,
American acid mostly came from one guy.
One of my favorite stories, there was like one chemist who was responsible for like 80% of the US supply of LSD.
And once that one guy got arrested,
Humanoidism Haha that one dude
LSD stopped being at all popular.
So this one's already a URL.
Good.
heypushwhyisthesitebroke it got more expensive, too
Yeah, I don't remember his name.
I'm sure somebody could find it.
olexsmir classic bus factor problem
But this single tag.
02:30:26Yeah, I wonder what his forge was. He probably wasn't using GitHub.
...43heypushwhyisthesitebroke he did it all in an abandoned missile silo that he bought for very little iirc
heypushwhyisthesitebroke which is the coolest thing possible
Humanoidism I'm from DK, but there was always that one guy who had the goods
sitting down oh of course abandoned missile silo that's that's a pretty cool forge i mean i would
put our issues in an abandoned missile silo if I could.
Humanoidism Almost in a trenchcoat
All right, so here we want to say tag URL for at tag.
These things are so polymorphic that I just have to see.
All right, so I can pass it as a keyword or as a positional.
or as a string or as an object.
All right.
So we will just say the object comma format colon RSS just to be as high level as possible about it.
02:32:05I don't know. I also am not programming in a trench coat because this is not the matrix. Well, this one is just the same dang thing. Oh no, it's the multi tag. Let's double check here.
...28Yeah.
So it calls its parameter tag.
Can I, let's see, routes.
olexsmir @Humanoidism there's always that one guy
This routes module is the nicest bit I have added to Rails.
It's such an obvious bit of missing functionality.
multi-tag url for, let's say, plt, comma, oh, we were talking about Erlang.
02:33:05Yes, that's what I want. So we will just do that.
...29heypushwhyisthesitebroke hey pushcx can you run a totally innocent sql query for me real quick
AtreidesNuts @Humanoidism deleting the database in a transaction just to feel something
Is it domains URL or domain?
I never remember these.
Domains URL, let's say example.com.
Yeah.
You know what that needs is like, can you use general select expressions, I guess just general expressions on a commit?
Because you could Russian roulette that, like, you know, commit if rand is less than, what would that be, 0.16?
02:34:26olexsmir hey pushcx can you run a toally innocent `sudo rm -rf /*` for me real quick?
Oh, how fun.
Humanoidism rand() < 1/PI
Twitch's auto-moderator detected your command, Alexamir.
But I'm running a reasonably modern distro.
It's in the last 10 years, so you've got to have that long switch that's like, yes, I am intentionally deleting root.
Oh, no, you said slash star.
I guess that would go through.
It broke onto another line at the start for me.
olexsmir i think /* will do
This is one of those... Yeah, I think it'll work too.
I'm not going to test that one, but maybe you could fire up a Docker container and test that one.
All right, that's all of them here, isn't it?
Let's make sure there aren't more, but...
02:35:33This is one of the dusty corners of the code base, is that there are a lot of manual URL generations that aren't leaning on the path tooling. And I've slowly been converting them. This feels like enough of a justification. You can see one right here. We're slowly getting them.
02:36:09Can I just say that like this? Let's top URL for, I think I could just say one week, right? It helps if I don't typo. Okay. Yeah, I get the right URL out of that. So let's say top URL with
...44And then up here, go ahead and do the same thing. I'll path my colon one week. I'm going to RSS. I'm touching enough stuff that I touched a dozen things. One of them is going to break, but still got to do these things. My comments controller is next.
02:37:26This one is just predating the helper. All right, it was user token link. Yeah. Comments URL. Format. Bomb wrap. Format.
02:38:00heypushwhyisthesitebroke so if you set banned_at without setting banned_by_user_id would it break the site?
Humanoidism italics for strings is on another level
heypushwhyisthesitebroke if so i have a great query for you to run to break the site for us in this stream
possibly user show yeah i would have to check for where banned by user id gets checked but it might be used in a context where
It checks that band add is set, and then it assumes that that field is set.
So that's possible.
...52heypushwhyisthesitebroke give it a try, couldn't end that badly: UPDATE USERS SET banned_at=1769708134 WHERE USERNAME='simonw';
Where's my user token link defined?
02:39:03heypushwhyisthesitebroke i think users might need to be lowercased i don't know how modern sql works
You know, that joke gets funnier every time you don't tell it.
...22So where's the diff? Looking good.
...51Humanoidism SQL Is the same as it ever was fortunately
What's the right way to say your browser should be showing you feeds but isn't?
02:40:15chamlis_ available in all good browsers
Available in all good browsers.
heypushwhyisthesitebroke here's a nickel, get a real browser, kid
All right, thank you for rolling out the Apple of Discord there, Aris.
Thank you.
All right, so.
...34And more feeds appear in page head tags, I guess.
...42Grab the site.
...50heypushwhyisthesitebroke and then you use an href=firefox dot com
I guess that beats nothing.
...57Let's actually see if the specs run or if I have a typo. Every once in a while, just to shake things up on stream, I remember to run the build before I commit and push and deploy. Got some actual failures.
02:41:20What do we got?
Humanoidism F to pay respects rspec
Undefined method user token link.
Where was it defined?
I bet it's up in home controller.
Yep.
Let's just lift that up.
...47QRST. Those are not quite in order, are they? Let's not fix them on this commit. The application controller becomes such a junk drawer. Let's fail fast because something is still bugged. Incidence of from app filters. Oh, it's got to be a helper because I used it in the, yeah, I used it in the view. So from one junk drawer to another. Q-R-S-T-U-Y is divider tag down at the end. This one's new, so I'm just going to put it in order.
02:42:54Who's broken? Pagination.
02:43:18Alright, that first one looks like a real bug. These other ones...
...30This one's over specific.
I'm fixing this.
All right, so let's go.
Let's do the easy one first.
Or was it?
Controllers and controller specs to 50.
So this one expects.
pick up this URL stuff.
heypushwhyisthesitebroke it's weird that ruby is such a real language. like, what's all this "actually nice debugging tools" it has going on; that's not supposed to happen in dynamic languages
This is an improvement, the one I'm trying to do.
This one picks up the same path.
02:44:35Yeah, I'm not a big debugger guy, but I do like the PryA and ByBug and the other stuff. Some of the new stuff that Marco Roth has done is really excellent.
02:45:03heypushwhyisthesitebroke i am very jealous of the idea of a dynamic language that doesn't just crash and burn the second you make a typo
It's putting the format at a slash instead of a dot.
Do both of those work?
curl dash i hps colon slash slash lobsters top one week slash rss rep status.
Get a whole lot of nothing instead of redirect.
...35No, headers are all lowercase this century.
...46Yeah, so I got RSS.
Let's see status in here.
And this, ah, because it's just the first line.
I am still getting RSS.
veqqio Many lisps have good debugging information, Janet's is pretty useful even!
Yeah.
All right.
So we're going to just go ahead and say dot RSS.
02:46:39I don't love having two URLs for the same thing.
And you can kind of never break an RSS URL because people put them in their feed readers and keep them for 20 years.
That feels a little risky.
heypushwhyisthesitebroke you have a very empathetic way of writing software
like i'm not actually breaking anything but i'm setting up the conditions for not knowing that there are these slash urls so i gotta file that as a bug -huh did that finish that so thomas if you're still here
olexsmir breaking rss url is a good way of prompting users to forget about your site
This definitely bombed out because... Oh no, it seems to still be going.
Okay, I don't know why that WCL failed, but it's still going.
I see the process.
All right, it must have just been a strange refresh there.
All right, so we want to file an issue about...
02:48:09heypushwhyisthesitebroke veqqio: janet's stuff is super cute and useful and also every time my grammars have a bug it gives me a completely useless error because it does not have meaningful support for debugging grammars :3 but that's pretty minor, i'm enjoying it
How are some of them forget?
...38Does it make sense to ask for an RSS feed with a page two? Not. Oh, but yes, somebody does check this. I vaguely remember this bug.
02:49:24Oh, we already broke this once. Is there a bug 1629? See, this kind of thing is why I would like to start getting issues and PRs out of being locked up in the GitHub silo. Because this is precious info.
02:50:19heypushwhyisthesitebroke https://github.com/betagouv/git…
Let's keep the issue open for a sec.
...44heypushwhyisthesitebroke > Migrate GitHub organization repositories to Codeberg with full history, branches, issues, PRs, and more.
Oh, that's pretty neat.
The other repo that's really interesting for this is called git-bug because it has a two-way sync.
And two-way sync is super useful for easing over.
So rather than being a hard cutoff, it can be a...
Both tools can be in use at the same time.
The other thing is if this tool puts things up on Codeburg, it's just sort of swapping one problem for another.
I want all of our issues and PR comments and such in our repo or somewhere we control because
It doesn't make a lot of sense to get out of one silo and just get right back into another.
02:52:30heypushwhyisthesitebroke codeberg is open source! and so the export tool will work just fine with forgejo, the 2008-era github clone that it uses :3
veqqio @heypushwhyisthesitebroke https://github.com/sogaiu/small… is good for that!
heypushwhyisthesitebroke i assumed you were just meaning self-hosting
yeah like that's all fine but that's still a silo even if it is an open source silo and honestly because it's one of those things that's a backup that i don't have to use i almost don't care if it exports to like xml
It's just got to be a regular format that is easy to parse and recover data from in most any language.
veqqio iirc he wants something considerably better in workflow to justify the migration
And whether that's JSON or YAML or TOML or XML, just something that is reasonably humanly readable so that we can skim stuff.
Yeah, that's my point, too, is I want something that really supports jujitsu well.
With mutable commits and stacked PRs and interdiffs.
02:53:50I'm going to find the one of these that broke and just revert it.
02:54:01heypushwhyisthesitebroke veqqio ty for the link
Must be top, right?
So what did I change there?
...40There's the line number here, 322. All right.
...58Which one of these? I see here's the line I tweaked, but it can't be the one Because there's no mention of pagination.
02:55:35That's the opposite direction I want to go.
add everybody, and then go in the home controller.
veqqio Maybe not that one, but sogaiu has a crazy number of useful projects for such stuff
And let's pop out the one that's closest to 322.
02:56:26What's the number of that guy? 1868.
...35So now if I jump back to TPW, still fails. Oh, because I did revert the one thing, but the test is still updated here. So this one goes back to being path. And then where's the other one? This one goes back to being a path.
02:57:35heypushwhyisthesitebroke i still haven't figured out how to deal with escapes in a meaningful way in PEG grammars
And also the dot goes back to being a slash.
...54So I don't understand how, but it was that one. So let's go real fast in case there's more of these.
02:58:08OK. So the one that was reverted was 322.
...37heypushwhyisthesitebroke i think i know Why I'm Having the Problems I'm Having with them but i also have no idea how to actually deal with it
Somehow the pagination must be shoved into that length.
And I don't understand it, but I don't want to keep tinkering with it.
...57veqqio The wizards in https://janet.zulipchat.com/ can help!
I've played with writing a couple of peg grammars, but never had to deal with escapes.
I mean, I guess we have the one in our search engine, but that's outputting escapes, not importing.
Hey, Zulip.
02:59:19All right. So where was that one? Let's just throw that away.
...35Push this fix up.
Kick that out the door.
And so I'm going to throw on the last call banner, because I'm going to write up that issue that I wanted to, and then I'm going to wind down the stream here.
timmarinin created a small pr for posting under unread
OK.
03:00:40heypushwhyisthesitebroke PEGs are really quite fun, definitely the most new fun thing i've learned with computers this year
heypushwhyisthesitebroke given most of what i write are parsers it's always fun to get a new trick for them
to take special care when we break RSS URLs because people will pay them into their feed readers and forget about them for a decade.
We break those URLs, our site just silently disappears
disappears from readers more or less suddenly.
03:01:33Top slash on a week slash RSS line two standard Others that end in slash RSS instead of more familiar dot RSS.
03:02:04Odd bit of behavior up in, what's the number here? 1602. that we support slash top slash one week slash page slash two. Is that the... Let's get that right. Don't need to make this more confusing.
...38Top one week slash page two slash... All right, yeah. Wrong key.
03:03:59dzwdz brb adding /top/1w/page/2/rss to my feed reader
Yeah.
03:04:13Do it with your user token so I can recognize it's you and ignore you. Just kidding.
...41dzwdz it seems to 404 for me
dzwdz did you already ban my user from accessing rss feeds
That's odd because the last test in that controller slash home controller spec really sounds like it's supported.
So Dizzy, you found a complicated bit of behavior.
If you want to puzzle that one out now to comment to this new issue in a minute, I'd appreciate it.
03:05:26dzwdz maybe it's just not the correct link, https://lobste.rs/top/1w/page/2…
dzwdz also while i'm here - is there a way to get story summaries via the api?
dzwdz it doesn't seem like there is
dzwdz yup
dzwdz
stories summaries like the the previews you mean they may just be missing from the json and then there's kind of the question of what do you want in the case that it doesn't have one so you said story summaries which makes me think of the story underscore text column but you want
Okay, so not the current preview display.
veqqio why page/2
dzwdz no, no, i meant the story previews
Yeah.
Let's... Why are we doing little stories?
dzwdz that "yup" came on a delay i think
In fact, because it's a weird thing that the...
03:06:23That the URL seems to support.
Yeah, DZ, I seem to be having a lot of lag to Twitch today.
Sorry about that.
Yeah, I think if you just... No, wait, there's the description.
Oh, right, it's description, not story underscore text.
Sorry, I've been streaming for three hours and I start making real easy mistakes towards the end of the streams.
dzwdz fwiw i'm not sure if it's a good idea to include it by default
You're thinking specifically of...
dzwdz it's a lot of text, it would make e.g. the front page json a lot larger
heypushwhyisthesitebroke what kind of energy drink and or coffee do you use to stream for three hours?
preview field which uses this description if possible and then adds well i'm definitely not adding like a url parameter to possibly add this not so much like obviously we don't have that schmancy new css line clamp but we could give you the first
200 bytes, 300 bytes.
03:07:30Coffee or tea. I have coffee or tea some days.
...40So there's all this.
So yeah, DZ, this would be where you'd add it.
And there's a function up here somewhere.
But if you give it the first, I don't know.
400 bytes, 300 bytes, it's not too bad.
dzwdz start selenium, check how much text is displayed, and return that
I'd probably take that PRU.
03:08:30heypushwhyisthesitebroke i wish i could find carbonated energy drinks around here
dzwdz maybe i'd need to take a screenshot and ocr
With, yeah, and I'll just pass it off to Claude and say, give me the text that appears underneath this headline.
...45dzwdz oh, right, ocr is obsolete
This is a, I guess it's a feature request.
03:09:23heypushwhyisthesitebroke non-carbonated energy drinks are fine but just don't hit the same
heypushwhyisthesitebroke honestly, i'd probably like coffee more if it was carbonated
heypushwhyisthesitebroke i wonder if someone makes that
What did I use in debugging?
Was it top?
03:10:27dzwdz well there's https://lobste.rs/page/2.rss
Oh, thanks.
dzwdz https://lobste.rs/top/1w/page/2…
So it was yeah.
...54AtreidesNuts @heypushwhyisthesitebroke this cannot be real
Thanks, DZ.
Looks like I got confused between the ones that end in slash and the ones that end in dot.
I appreciate you puzzling that out.
03:11:45dzwdz @heypushwhyisthesitebroke you can carbonate any drink
All righty.
That's probably good.
...56Here, Dizzy, I'll put in a note for you.
03:12:09For these to exist.
heypushwhyisthesitebroke @AtreidesNuts i want it to be real in my soul
Here, let me put this up here.
...21It would help if their specs included on explaining, you know, that reason so we don't forget in the future.
How's that for you, Deezy?
dzwdz https://www.jameshoffmann.co.uk…
You know, you mentioned there are the, what are those called?
What are they called?
Okay, Amazon.
The home coffee machines or the home carbonation.
Boston_Mass sodastream
heypushwhyisthesitebroke coffee doesn't light up my brain in the same way that drinking an overpriced carbonated energy drink in packaging that is obviously marketed toward children does
There you go.
chamlis_ in my *wild* days I tried mixing coffee and coke, which I wouldn't recommend
Yeah, so there are these things that you can use to make your own sodas, right?
SodaStream, Boston, thank you.
That is correct.
That's the one I was trying to remember.
Doesn't this guy, is James Hoffman the guy that does all those YouTubes?
dzwdz he does indeed do youtubes
Yeah, I know this face.
There you go.
heypushwhyisthesitebroke i once tried one of his coffee recipes
So it sounds like that's exactly where I got of, didn't he say, I just saw the word SodaStream, didn't I?
Yeah.
03:13:47So there you go.
There's your carbonated coffee soda.
heypushwhyisthesitebroke it looked very nice but tasted okay
And I'm guessing by this face, this was not a wildly successful experiment, but maybe he just looks like that for clickbait.
heypushwhyisthesitebroke ty pushcx i had not thought about this
dzwdz i think he usually looks like that
I don't know.
heypushwhyisthesitebroke now all i need to do is find a way to funnel it into monster cans
In any case, good luck with your coffee carbonation experiment.
I think he usually looks like that.
Not bad.
Funnel it into monster cans.
You know, home brewers have home canning things.
I've seen them.
You have like a, it's like a little press, right?
Home soda can.
dzwdz drinking carbonated coffee from a baked beans can
No, these are, I don't remember what the verb is.
I knew somebody who was into home brewing.
What if I said home brewing can?
Yeah, so you can buy the empty cans.
veqqio https://www.homebrewfinds.com/2…
So there's got to be a way to buy the machines that puts the cans on top or the lids on top.
dzwdz i mean i can sell you an empty can too
heypushwhyisthesitebroke i simply need my carbonated beverages to look like they're marketed toward people who are very silly
I just don't know what that's called.
03:15:14Seems like a legit URL.
veqqio seems dead :'(
Taking its time loading, though.
dzwdz TIL that i can turn in energy drink cans for .50pln a pop
dzwdz which is like 20% of the price if i get them on sale
auto canning machine canning machine that's no this is like canning vegetables all right doesn't want to load for me but there you go all right so unify rss routes
...53veqqio "can sealer machine" is the magic term
comprehensive tests.
All right.
We got to kind of an odd place with the carbonated coffee at the end of this stream here, but that could be a fun project.
And if you wanna let us know how your experiment goes,
veqqio https://www.amazon.com/LPLYAA-M…
heypushwhyisthesitebroke veqqio: now i know what to do if i ever start a tech startup
heypushwhyisthesitebroke i mean i'm moving in like, a few days
heypushwhyisthesitebroke so probably not a while
heypushwhyisthesitebroke but i will try this sometime :3
in i mean you could probably get there in a week or two right without really rushing cool oh commercial in the url tin can seamer machine well there you go that's it that's that's the gadget i was thinking of although those look i can't tell if they're see-through
dzwdz ah yes, transparent tin
Aluminum alloy cup closing machine.
03:17:06veqqio It's weird but
Oh, you notice the warning in the image says no carbonation, huh?
Boston_Mass kaboom
Might get a little exciting, you know.
veqqio There were some for 600 with mechanical parts
All right, well, there you go.
There's your gadget.
heypushwhyisthesitebroke if it explodes i think that'd wake me up
heypushwhyisthesitebroke so it'd work fine
olexsmir exiting kitchen cleaning
For $143, you can have the carbonated coffee can of your dreams for, you know, as many as several seconds before it becomes a very interactive experience.
Let me know how it goes, but, you know, make sure I'm out of the blast radius, please.
chamlis_ thanks for the stream!
Alrighty.
veqqio The home brewers have the knowledge
Well, I'm going to roll out.
heypushwhyisthesitebroke losing a finger because i'm addicted to childish marketing gimmicks
Boston_Mass o/
I hope everybody has a nice rest of their day.
heypushwhyisthesitebroke thanks for the stream!
dzwdz thanks for this interactive experience
AtreidesNuts autobots... roll out
veqqio Market to yourself!
The next scheduled stream is going to be Monday afternoon for Chicago at 2 p.m. Hey, thank you, Chamos.
veqqio Have a good weekend push!
And hopefully we didn't break anything on the site today.
timmarinin thanks for the stream!
dzwdz were the fonts messed with
Didn't seem to catch on fire.
All right.
Take care, everybody.