The UK government has a secret list of prohibited sex acts
Streamed
Wrote my last planned update on the UK OSA. Showed Zulip, a chat platform Iโm experimenting with for supporting sister sites a bit more; maybe as little as being able to make security announcements. Adding an icon and count after titles when they have stories merged in.
scratch
topics
PR review
merging high contrast PR https://github.com/lobsters/lobsters/pull/1454
merged AR wrap https://github.com/lobsters/lobsters/pull/1441
UK OSA update
emailed wyden
write comment
secret
zulip experiment
https://lobsters.zulipchat.com/
note on /chat, readme
domain? nope, not on free supported plan
wiki
story merging ux
UK OSA update
I contacted the [office of US Senator Ron Wyden](https://www.wyden.senate.gov/), who has been involved in most of the laws around the internet for the last couple decades.
I asked if they could get the US Embassy to the UK to help correct the jurisdictional overreach.
US politics are currently very busy (in off-topic ways) so I think chances are low this comes to anything.
If I do hear back from them I'll advocate for them to get involved in some way, but otherwise I have exhausted the actions I can take on this issue.
I still think the most likely way the UK averts disaster here is that Parliament [doesn't approve](https://lobste.rs/s/ukosa1/uk_users_lobsters_needs_your_help_with#c_la8nls) Ofcom's guidance, which is needed for the law to go into effect on March 16.
This would buy time to revise the law and guidance.
If you are a UK citizen, please continue to contact your MP.
I can also offer one last idea: The UK government has a secret list of prohibited sex acts.
No, really!
Ofcom is the regulator tasked with implementing this law.
They stonewall people who ask questions about the OSA that have politically embarrassing answers.
Like how @aphyr [asked how they define "extreme pornography"](https://blog.woof.group/announcements/letter-to-ofcom-regarding-the-online-safety-act#4-what-exactly-is-extreme-pornography),
which they demand be censored.
But [Ofcom's definition](https://www.ofcom.org.uk/siteassets/resources/documents/online-safety/information-for-industry/illegal-harms/illegal-content-judgements-guidance-icjg.pdf?v=387556#page=160) is nothing like detailed enough to implement as policy, and aphyr's questions are only a start.
You can see the level of detail needed from things like [this Facebook policy leak](https://www.theguardian.com/news/2017/may/21/revealed-facebook-internal-rulebook-sex-terrorism-violence) a few years ago; realistically actionable rules are hundreds of pages.
Ofcom won't acknowledge questions about this (or what international law gives them censorship power over the world) because the answers are embarrassing.
Their list of prohibited acts is a secret.
I know the UK tabloids love their sensational headlines, so as long as I've been forced to deal with UK culture, there's my last contribution to this disaster.
Maybe UK citizens can ask their MPs and journalists for these secret rules around which sex acts are permitted and not under the OSA, and that question itself is embarrassing enough to get things fixed.
merge plan:
split the tree of comments by which merged story they're on w _listdetail header
on a merged story, no top-level comment box, one in a <detail> for each
refresh display at top of single-story page, clearer metadata
cross-link stories - footer w backref links to stories and comments linking here
cross-link comments - details/metadata w backref links to comments linking here
don't cross-link if source comment has a negative score or mod soft-deletes the link
refactor the db into headline and stories?
stories.stories_count will need a migration to recount; it's # stories merged in, not total # (so: off by one)
story submit: submitter can choose to merge into existing story (and is encouraged to when correct!)
refactor user suggestions into 'draft posts' rather than per-field tables
user suggestions can promote top-level comment with unsubmitted link to Story
user suggestions can merge and unmerge two stories
vague/misdesign: hidden stories or hidden links; same for save, upvote
write up a AboutController page explaining merging
title
if it rhymes, it's true
I feel like I am entitled to have at least one or two crank opinions as an author
The UK government has a secret list of prohibited sex acts
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:28So let's see what I have lined up for today.
JordiGH I ask stuff anyway on IRC.
couple of things, the usual pull request review, try and keep the code base moving along.
JordiGH Well, I guess technically Twitch chat is still sort of IRC.
I'm going to be some sneezing cause I touched the cat and then some small updates on the online safety act, which is a censorship bill out of the UK that claims to apply to the world.
and then i'm experimenting with zulip oh hey jordy i just saw your note about that one guy who's been low grade irritating the last couple days and his nick so i just nudged if in the moderator channel if one of the moderators could take a look at getting him to change his name so i can't i can't keep half an eye on irc there's only so many
chat rooms I can juggle at once.
03:35We'll see how that goes.
...42I'll get to these tabs in a minute, but otherwise I'll start with pull requests.
Anyways, nice to see you here, Jordi.
JordiGH Eh, it's not really that big of a deal, he's not an outright twit. Ofcom seems more interesting to talk about.
Someone has claimed to me that I know Twitch used to allow connecting to their thing via IRC, and someone a couple months ago made the claim that it's still IRC under the hood, just lots of custom extensions.
I cannot imagine if that's actually the case or not.
Frici Not really. It's been moving off of IRC for a while now
It seems really unlikely to me, but I don't know.
For their amount of scale, I guess you could partition pretty well by size.
JordiGH You can connect to Twitch chat using the IRC protocol, but it's got some stuff on top.
JordiGH My IRC bot still works on Twitch chat.
Yeah, speaking of moving off IRC, I've got Zulip up here to talk about in a few minutes.
04:42Huh.
Maybe I should make a
See, I've wanted access to the Twitch API for a while, and you can't do that unless you give them a phone number that's not warped.
So you basically have to enable SIM swapping so people can take over your accounts.
It's a very weird change or a very weird choice on their behalf.
Frici Hi btw ๐ it was indeed a frankenstein's monster of IRC + extensions for a while though and tecnically you CAN connect with IRC still but its very messy
And I guess if I could make an IRC bot, that would be tempting.
I don't remember if there's any, I think I looked at this a year or two ago and it didn't seem like there was an actively maintained IRC bot framework for Ruby.
JordiGH IRC is such a dumb protocol, does it need a framework?
Yeah, last release seven years ago, more, where's there?
05:58JordiGH PRIVMSG and PONG is all I need.
Doesn't look like anybody's awake.
That's a shame.
Like IRC is, it's one of those plain text formats where it's really attempting to just jump in there and hack it out, but then you spend forever with random things.
I don't know.
I don't actually want to maintain an IRC library.
I'm okay with an IRC bot, and I've mildly wanted to replace Mock Turtle with Ruby just to be able to not have JavaScript in production, but there isn't a nice framework.
I feel like every time I do that, like, oh, it's just a plain text format, I end up in
some kind of hell where it's like, oh, there's this odd encoding issue or, I don't know, just some subtlety of the protocol I couldn't have guessed.
Like I'm not parsing it correctly or there's some legacy thing.
Like I believe in email addresses, it's been a few years, but, you know, everybody has the regex where it's like letters and numbers, hyphens and underscores at, and then that same thing again, it has to have a period in it.
Like that's roughly where everyone has arrived, but there's still like, I think you can have parentheses and quote marks.
And I know you can actually have an at sign in the part we usually think of as left of the at sign.
So that's the local address.
The spec permits having an at sign in that.
And nobody actually does this, but it's especially funny when folks get grumpy about the
Like, oh, you're not following the spec by accepting my .wiki email or my plus left in the local address.
And it's like, well, actually, the spec is bizarre.
And it gets revved every 10 years or so, but it doesn't really drop backwards compatibility for some of the really odd stuff that's in email.
I don't know.
JordiGH Oh man, remember when you could have multiple chat channels per Twitch stream? It was helpful for having a spoiler chat to talk about the game without annoying the streamer.
That's the trap that IRC is in, that it's so thoroughly distributed with different stakeholders that it can't revise itself.
Multiple chat channels per Twitch stream?
No, I had no idea.
I've actually not watched much Twitch streaming.
Frici oh gosh yes I remember that... so messy so glad it's gone
I've actually streamed more than I have watched streaming at this point.
Yeah.
I probably switched over that line maybe a month or so ago.
It's fine.
09:07Split it out. Light contrast. I'm looking for the... So this is a pull request to add a high contrast. set of color schemes by clemeth who fixed up our light and dark color schemes for whatever that odd version of chromium browsers and other less common browsers was and it's a shame to not have the css just in one file that's psychologically satisfying to me but all right oh That's clever. I'm glad CSS is just expressive enough for this. So if you don't prefer dark or if you prefer dark and not okay I'm not gonna make him alphabetize that list it's already not alphabetical actually I don't know Clements gender excuse me trying to be good about those gotta make cheat cards at some point so yeah folks can feel free to pipe up with questions about lobsters whether that's the site of the codebase at any time and otherwise I'm going to run through pull request review and then do some other less Cody things before I get to improving the user design around or user experience around story merging, which is having hacked it out a couple of streams ago or thought through all the moving parts is going to be, well, let's do some UI things. that's the exciting part anyways and then build towards the database migrations and the more fundamental changes to reduce the bug factory effect why is this one okay that's fine oh they get their own section section All right. That seems fine. That's well. So one of the things I'm trying to avoid is infinite bike shedding of the CSS. Because I've seen public style issues go that direction. The If you look back on the poll request where Kevin introduced the dark mode, I gave a bunch of comments that were like, speak now or forever hold your peace. And touching and breaking the dark mode already prompted a wave of bike shedding around style issues. So I think I will take this and then merge this down. Yeah.
12:56This draft thing that GitHub has added has really been confusing the last couple of weeks. Where everybody who isn't familiar with it keeps submitting draft PRs because that's the default state.
13:31get this kind of chaos where it's useful for some people but not everybody knows about it and so i have to guess whether they mean for it to be draft or not it's a little frustrating all right so i got that merged let's pull that down
14:09Frici I haven't had the chance to see it yet, what is different with draft PRs?
The thing that's different with draft PRS is that they say their draft you saw that little bit of interface, I had to click through to merge but.
Mostly it's.
I thought there was a section for it up here where it said whether.
I think it's also missing.
twitchtd draft PRs cannot be merged
so it's a state that pull requests can be in but they haven't named the non-draft state and so if you don't see something here that says draft you know it's not a draft pull request but they didn't call it anything so it doesn't say mergeable pr or ready pr or and i feel like that's one of those places where trying to document something would have told you
you needed to workshop it a little bit more.
Frici ohh i see.
Because when you can't explain what something is, and the UI can't explain that this is a non-draft PR, I don't know.
15:22pushcx https://github.com/lobsters/lob…
So my best guess on this pull request was that Clemeth is unfamiliar with the draft thing.
But if you look at the other pull requests that are open on lobsters right now,
rahul who has most of them does use the draft pull request strategy and does use it to deliberately indicate whether he believes something is ready for a review and so i just have to juggle the state of whether people understand draft prs by inferring it from their prs it's not my favorite game to play
i'm gonna pull in the notes here merging high contrast pr and then i'm gonna all right i'm gonna hack on that real quick for the settings settings because i feel like having the color settings as its own section invites
having more discussions about the color scheme.
And I was already mildly irritated that we had a whole thread about it instead of just a bug, that we had a bug.
All right, so let's move that in there.
17:06and i was tempted to do the merge at the command line and just put it in the merge commit but sometimes when you do that sort of thing github doesn't recognize that the pull request is merged and then i have to manually close it and the ui is just wrong forever because if i
tweak it in a way that it doesn't automatically recognize, there's no way to tell GitHub, no, I actually merged this and you should consider it merged and show that merged UI.
There's only, you did it in the interface, you did whatever the right invocation is at the command line, you can't fix it otherwise.
Maybe this is weird rant about weird GitHub limitations day.
Everyone's favorite holiday.
yeah it's programmers favorite holiday because it's every day that ends in y github does solve a bunch of they have a really really challenging design environment where they're used by opinionated little projects run by cranky old dorks like me and then they're also used by
hip design firms and then also used by the biggest enterprise firms.
It is very hard to make a UI that satisfies all of those very, very different attitudes towards tools and use cases.
So like I whine about the things that don't exactly match my use case.
They are mostly pretty good.
I will continue.
I feel justified whining about the bugs.
I think I showed it on stream two streams ago where you saw I had that merge interface up.
If you open the tab to show the command line instructions while a build is finishing, every time one section of the build gets checked off, it closes your instructions.
Happened on stream and I about started cursing.
That one just felt like a bug.
All right, so this, did this one get mature?
Oh, that's what it was.
Hold a whole lot of...
dpk0 moin
So one thing that's been a minor issue with Rahul is that his pull requests sprawl a little bit where... That's fine.
So I get tempted to...
I would probably break this up into multiple crests.
One is these very easy...
Frici Hey dpk
little turn strings into symbols one could be the wares that are more complex and then where's the did he close the active record oh hey TPK I was just thinking about you I don't actually know your name last name but I know you're Daphne and I ran into
There's a woman who writes a lot about American legal issues in free speech, Daphne Keller.
Oh, you're Kendall.
Cause I'm, I'm auto-completing your GitHub there.
Preston Kendall.
Yeah.
I think her paper was titled lawful, but awful.
pushcx https://cyber.fsi.stanford.edu/…
Yeah.
dpk0 hash collisions
so every time i run into her name because it's almost dpk it's daphne keller i have a moment of dissonance this was a if nobody has seen it this is a really nice article from a couple of years ago in kind of the current legal understanding of
moderation and american free speech laws so there this came out of american law enforcement in maybe 2015 and lawful but awful was stuff like it came out of policing where they said well sometimes
dpk0 i thought Will Clinger (long time Scheme report editor) and Will Byrd (inventor of miniKanren and some other Scheme stuff) were the same person for a long time
we have to beat someone up we're trying to arrest and that is lawful but it looks awful and they talked about ways to manage the pull request or pull requests the i was thinking pr like public relations and then because i was just talking about pull requests on github i crossed over there
And the term jumped over to moderation and free speech in like 2019, because honest to God, I think people just see rhymes and it sticks in a way.
And so people just assume if it rhymes, it's true.
But there's this whole class of speech in the American moderation context where there is
dpk0 stream title: โif it rhymes, itโs trueโ
Lawful but awful speech like like fight videos like gross out videos like animal cruelty If it rhymes it's true, oh I actually Thank You Daphne.
That is a good title.
I Actually have a better one that I'm teeing up And if you got the twitch announcement that I was going live I
You saw the first draft of it.
dpk0 i just got back home from FOSDEM and am totally exhausted
So this kind of pull request, I think of it as shotgun refactoring because you're just shooting bird seed and it hits, I can't see the summary right now, but 18 files and like three code spots on average.
23:40dpk0 no, his talk was quietly removed from the schedule
oh how was fostam hey whatever happened with that did jack dorsey end up talking did he get heckler vetoed did he get protested i assume that was not the only interesting thing happened there and oh yeah so i asked for this
Looks like he...
Okay, so he hasn't made this change.
I don't want to take it on.
So I think, especially given that I know Rahul uses draft PRs and this is not in a draft PR state, I am going to go ahead and take this pull request and merge it.
Because even if it's imperfect, it's a big cleanup.
dpk0 i think mostly because tef (who was not even going to FOSDEM) posted that thread where he said if someone wanted to do a really effective protest against that talk, they should just pull the fire alarm when itโs due to start
All right.
24:58Frici oof no.
dpk0 at which point thereโs a risk someone who saw the thread might actually do that
Oh, that's...
25:09David Price- deaf needed to post that on lobsters.
dpk0 on Mastodon
David Price- Or was that on master or something I feel like I would have noticed a pull the fire alarm post.
dpk0 not on Lobsters, no
dpk0 haha
David Price- Because I was on master okay not my problem.
Frici Jack is a massive ass but that's a big risk and a whole thing that can bring a host of issues, especially to bystanders
David Price- Not to be cynical about it, but that one.
David Price- I was all over that thread and I missed one I was embarrassed by that actually there was.
So there was a longtime user who made a pretty gross comment that was a dog whistle for protesters should be beaten or killed.
And I saw it in two comments, which was part of what made me realize, oh, this is a dog whistle.
plus I got a user report from someone who pointed it out and I went, oh, I was thinking that was weird writing.
And then I missed.
a third comment where he repeated it, and so I just, if you look in the mod log, I think the first word is belatedly.
A couple of days ago, I was like, oh, belatedly, I just realized I missed a third comment where he was repeating the dog whistle.
26:52dpk0 FOSDEM was great. i was hanging out with the Spritely crew most of the time. i start my NLnet-funded project for them in two weeks!
dpk0 y
dpk0 yes
Is Spritely... That's the one Christine Lemmer Weber is involved with, right?
Where she draws all those little goblins?
Yeah.
dpk0 oh wow
Yeah, I don't know where she is now, but I knew her 20 years ago here in Chicago just because...
Despite all appearances of being a 9 million person metro area Chicago is secretly a small village and we pretty much all know each other.
27:36So i'm not really involved in. I haven't followed ActivityPub or Spritely or any of her other work, but I've, you know, followed her on Twitter or Mastodon or something forever. I don't know that we've had a conversation in ages. This one... I'm hovering over Merge because it feels risky. Like the build is green, but I know we don't have 100% test coverage. Am I going to deploy? I'll have some code to deploy towards the end of the stream. So yeah. Most.
28:41Yeah, we have a, so there's a, without generally opening the topic of politics and one's opinion on politics for new stream viewers, the former mayor of, or I'm sorry, the former governor of Illinois is a guy named Rod Blagojevich.
And if you don't live in Chicago and you know his name, it's probably because he went to prison for trying to sell Barack Obama's Senate seat.
So when Barack Obama was elected president of the US, his Senate seat was vacant and under Illinois law, the governor can appoint someone and the feds who were investigating different corruption tapped Rod Blagojevich pretty crassly talking about selling the Senate seat.
He described it as a golden ticket.
And,
dpk0 i know someone who was born in Illinois who says when they grew up they just thought it was just normal that when a governor leaves office, they go to prison
just saw him running in my neighborhood the other day he's really he's like a marathon runner maybe an ultra marathon runner so it's sort of weird to see the felon former governor of chicago or former governor of the state trotting around like down my block but that's chicago
It's actually a small town.
That's how we are.
Oh, yeah.
So that's not a joke.
So there's a federal prison in Joliet, and we joke about that prison having a governor's wing.
The current one doesn't seem to have committed any felonies, but there's still time, you know.
There's so much more opportunity once one is in office, but I want to say a couple of years ago, the stat was like four out of six of the last four governors had gone to prison.
We have some corruption issues in Illinois sometimes.
All right.
twitchtd pritzker is rich rich, he probably has a team that tells him what's legal
So where did Rahul's other pull request go?
Actually, there were two others that I think he closed.
so twitch yeah and we're it's so some of this stuff you know you just get nerd sniped by how gossipy it is there was a whole big public story when pritzker was running for governor that when he was remodeling a mansion he had the toilets removed because if you don't have toilets in a house
It is legally uninhabitable and you get a tax break on it.
And then it was unclear.
twitchtd if it's legal, why not get the tax break
I didn't super closely follow this story to have an opinion on it, but it was unclear whether they just unmounted the toilets because they actually were remodeling the bathrooms or unmounted them so that he could get this big tax break.
And I guess it wasn't enough of a scandal to keep him from becoming governor.
32:04twitchtd sounds like smart
So Twitch, I think it's one of those things that comes down to intent.
twitchtd oh i see
If you are actually remodeling the house and it is uninhabitable, you're entitled, but you're not allowed to make the house uninhabitable to get the break.
But we're getting way off of where, like, I don't know Illinois tax law super well.
I just pay Illinois taxes and try not to commit any tax fraud because I don't want to go to Joliet.
twitchtd meh, anyways, hows it going, glad to catch your stream early
pushcx https://github.com/lobsters/lob…
so let's see i thought he had oh this was nice so this actually i'll mention it here on stream dreg who's a a regular viewer an occasional chatter yeah good to see you twitch fixed a bug that caius caught in moderation which our pagination logic is duplicated caius has talked about
working on pagination, but doesn't seem to have been active on it.
dpk0 ah yes, the โfill in your tax return in with fear and tremblingโ approach to paying taxes
dpk0 iโm always terrified iโll accidentally do tax fraud
And then Dreg made this really nice little fix for the moderations controller having an off by one by writing a nice little helper.
Do I have a little salute emoji?
Can I put the salute emoji in there?
No, I don't.
Wait, DPK, I thought you lived in Germany?
And you were from the UK?
dpk0 yes, correct
Maybe I'm misremembering or I'm remembering somebody else.
dpk0 if you are freelance you have to do your taxes :-)
Or, because I thought the US was the only country that worked on the model where you have to file taxes and they already know the numbers, so you just sort of have to reasonably guess the number they already know for you.
If anybody else in the world looks like that, that's news to me.
If you are freelance, you have to do your own taxes.
All right.
More projects.
This is the one I just merged.
dpk0 or if you buy a house. that one was really complicated. iโm sure we put in the wrong amount there
I thought he opened one for the recursive comment table expression.
dpk0 because we live in an apartment building we had to work out the fraction of the overall floor space which is ours, plus a corresponding fraction of the communal floor space
yes where did this go so we talked about the materializing depth but i want these things all right because
If you buy a house, that's really complicated.
Oh.
Oh, that's really complicated.
Yeah, the US tax code, because it's a major instrument of domestic policy, everything is encouraged with tax breaks rather than direct subsidies for complicated historical and economic reasons in the States.
And so there's a lot of that.
like what percentage of your house is your home office that you exclusively use for work versus might also do other things with, it gets very complicated very quick.
I had one year where, so we have to file both at the state level and at the federal level.
And I had one year where I moved from the District of Columbia, which is sort of a state,
to virginia which is definitely a state and i worked in virginia and what was the other one alberta canada and so having to file taxes in i didn't actually have to file canadian taxes i don't think if i was supposed to i sure didn't do it and we're far enough past the statute of limitations i'm probably not in trouble about it
dpk0 oh yeah. iโve never bothered even trying to reclaim the tax on my home office supplies and stuff. just too complex and risky with all the stuff about what stuff can then *only* be used for work, what stuff can be used outside of work etc.
And I said that year that there is no way I filed it correctly, but hopefully it was correct enough that they wouldn't come after me.
And it's been, I don't know, almost 20 years and nobody came after me about it.
So at least my mistakes were small enough.
I got an angry letter from the state of Virginia, like two years later, where they demanded I pay more taxes because they assumed that I hadn't left the state.
It was a strange one.
All right, so I didn't grab the pull request number for the notes.
So that was, no, that's the contrast.
Where's the, oh, it's not sorted in the right way.
Now it's just going to make me cry all the time that this is not the default.
Maybe if I bookmark it, Firefox will complete.
All right.
Yeah.
37:48Speaking of things that are complex and risky. Thank you, Daphne. Let's talk about the UK Online Safety Act. So there is one short thing, which is I mentioned maybe two streams ago that I was going to email the office of US Senator Ron Wyden. I did that this morning. Ron Wyden is the US Senator who has done the most internet-related stuff. I'm not... I'm not super optimistic anything will come of that. Because as probably everyone who has access to news notes there's been a lot of politics in the United States in the last say two weeks. So I was going to make a update to the osa thread. With what's happened because it's been a couple of weeks. not logged in right not logged in i will write it here and then move it over so
39:36This wasn't a super substantial email because I sweated a bit.
dpk0 i well nigh had a panic attack while the Spritely crew were going through US border control on the way back
I wanted it to be good of, hey, there's this weird complicated situation and he publicly came out against the Kids Online Safety Act, which is the American version of the UK Online Safety Act.
And it's by the same primary
dpk0 since theyโre trans and there is unclarity about accepting the passports of trans people :-|
And then... What was I going to say here?
40:24You had a panic attack. Oof. Yeah. Yeah.
...39I can see that being really unpleasant and it sucks to worry about folks.
dpk0 there are decades where nothing happens, and weeks where decades happen
dpk0 i would like there to be fewer decades in my weeks
We've got, we've got a lot of trans people on lobsters and I don't know, basic decency is important.
Ah, that's a great line.
That's one of those where
It's attributed to a famous person, but actually nobody knows where it came from, right?
Fewer decades in my weeks.
Yeah, it'd be easier to sleep at night, right?
41:49Frici Basic decency and Border control are hardly a thing in the same sentence i've found...
dpk0 i think probably it is one of those types of quotes. let me check Quote Investigator and the Yale Book of Quotations โฆ
yeah i just had one of those quotes what was it oh there was that there's that great quote where it's attributed to picasso and the quote is that critics and dilettantes spend all their time talking about meaning and metaphor and the epic heroic journey of being an artist and real artists talk about where to buy cheap turpentine
Turns out not Picasso.
And the originator or the earliest quote that someone has found for it was someone attributing it, I think, to their dad.
But then no one has found that the dad actually said it anywhere.
dpk0 possibly Marx, possibly modelled after a biblical quotation https://quoteinvestigator.com/2…
Even though dad was a public figure.
So maybe it's like three levels of made up at this point.
Possibly Marx, possibly modeled after a biblical quotation.
That's very literature.
Oh yeah, now that I see this, I've seen it attributed to Lenin.
43:09Oh, hey, I know this name.
...23all right yeah along the lines of if it rhymes it's true there's also that parallel construction where people write if a then b b then a you know anything of that form people are like oh that's also true I think there's just something in people that is wired for if it's really catchy, it's true. I'm a little cynical, but I do actually have an English degree and spend a lot of time thinking about writing. So I feel like I'm entitled to have at least one or two crank opinions as an author. That's actually not bad.
44:55I am pretty burned out on this topic, but I don't need my last comment to yell about it. I just had, just before stream, somebody lecturing me on Mastodon with the most did-not-do-the-reading take on the situation, and that was kind of irritating. So... So, right commenting is this thing. Secret is the thing that's in the comment. So I had an idea. And I want to lead into the last idea. So let's...
45:58I want to link down to that comment about approval.
47:53pushcx https://blog.woof.group/announc…
So I talked on the last stream about an excellent letter by Kyle Kingsbury.
I have it.
Yeah.
So if you haven't seen it,
Kyle writes under the name a fear runs a master instance called wolf group for.
i'm not going to try and summarize this master on instance let's find their exact words.
I feel like that image is probably a good hint.
Mastodon incidents focused on LGBTQ plus leather people, folks who are into leather slash kink, BDSM, fetish, etc., and generally file outside the straight cisgender norm.
We're aiming to be a social space analogous to an inclusive leather bar where sirs and boys, goddesses and girls, envies of all stripes, cuddly leather daddies, and hard-ass trans dykes... Alright, I'm not going to read the whole list, but they are a very sex-positive mastodon instance that talks a lot about sex.
And, you know...
I think both trade and make pornography.
dpk0 brb making a soundboard of snippets of you reading that
I'm not gonna pull them up on stream lest Twitch toss me for breaking their rules.
So, a soundboard of snippets.
Wait, is a soundboard like the thing that techno musicians have where they have the little grid of buttons?
dpk0 right
like the the stream deck and then they push that to be like yeah right okay great i look forward to the techno remix of lobster's office hours that is mostly about me
dpk0 so i can have a button of you saying โsirs and daddiesโ, etc.
naming sex positive groups.
So.
So Kyle had this excellent letter.
Sirs and daddies.
Oh, if you need to hear me say that, you have to come to Chicago.
So.
Kyle asked this question.
Where do we want to start?
So first off, Kyle sent this to Ofcom a week or two ago, and of course, they've completely
if you'll pardon the pun, they've stonewalled him.
They absolutely have not and will not respond to this, is my prediction.
And I say they will not respond to this because some of their regulation and the law's claims of jurisdiction over the world are not justifiable.
And the rest of it is politically embarrassing.
51:03dpk0 โextreme pornographyโ is defined by the Criminal Justice and Immigration Act 2008
So Kyle here has a list of things that Daphne would like me to read that I am not going to read, apparently, if I'm going to be on a soundboard.
But you can look at these two paragraphs.
dpk0 haha
Daphne, you can read them in your best Lobster's Office Hours mental voice.
But he asks about a list of specific sex acts and types of pornography
and asks whether Ofcom would judge them to be extreme pornography.
And extreme pornography is unfortunately, so there's the US term extreme sports, where it's like, it's not just regular sports, it's like jumping off a mountain with a parachute, or motor biking on a skyscraper, or I don't know, anything you can see on like ESPN 19, way down the dial.
So Ofcom had this guidance where just casually on page 159 out of 457, they start talking about priority image-based adult sexual offenses, which means you have extreme pornographic images, which prompts the question,
dpk0 https://www.legislation.gov.uk/…
What is possession of extreme pornographic images?
52:38dpk0 that ^
Are you playing the role of ARH where you jump ahead on what I'm saying?
Because they actually have it.
So they like define image, which, okay.
If the content in question involves adult nudity or image-based sexual content, service providers should first ask whether it amounts to an extreme pornographic image.
And then they say, what is extreme pornography?
And I feel like this definition is more readable and clear than the one that is in the actual Online Safety Act itself.
But yes, you are linking to the right place.
And I want to say they footnote it
somewhere down here.
pushcx https://www.ofcom.org.uk/siteas…
dpk0 okay, yes, that basically seems to summarize the 2008 Actโs definition
But the gist of it is this section on page, I should share this link so anybody has it too.
So we're on page 160 of this PDF now.
And so it is extreme pornography if it is pornographic, is grossly offensive, involves people that are real,
I'm skipping some of the detail here portray one or more acts that is like I guess dangerous and dangerous can mean serious injury and Kyle points out that this definition is not explicit enough to be actionable because Ofcom is saying we consider these kinds of pornography illegal and
If you scroll down a little, I want to be clear.
They do say if you have, where is it?
54:31Like encouraging, assisting in conspiracy to possess, like this is crime talk.
They're saying extreme pornography is just illegal.
And this
even as explicit as it is is nowhere near enough detailed enough to actually turn into moderation rules and if you have never tried to moderate the difference between just get rid of the bad stuff and keep the good stuff like that's the the maximally clueless way to say it and then this is the like
slightly more clueful way to say it, but it's not useful.
And then Kyle here is, here is a list of sex acts and pornography.
I need you to list which ones are allowed and which ones are extreme.
And Kyle's list is not detailed enough because you actually need to include a list
A definition, a very clear definition for each of these things.
And I don't know, I don't want to be childish about it.
dpk0 yes, possession of extreme pornography is already a crime in England and Wales since 2008 (definition significantly extended in 2015 and 2016), because the UK works on a system of governmen by a succession of moral panics
There's always jokes about pornography or specific sex acts, but if you are going to moderate at scale, like Ofcom claims to censor the entire world, you do have to be very clear about it.
dbk i think that's redundant i think that's pretty much every government not to be too spicy but i didn't realize that possession of so u.s free speech laws are very different and because we don't have that idea that parliament is sovereign it is possible to have
We call them unconstitutional laws.
So laws that are passed at one level of government or even at the highest level of governments can be found to be impermissible, that the government cannot make a law against some specific thing.
And boy, there is 250 years of jurisprudence about this, a lot more than I can summarize in a couple of minutes, but broadly, almost all pornography is legal in the United States.
57:14pushcx https://onlinesafetyact.co.uk/
So I had a conversation with Neil Brown and Neil Brown is the person who wrote this website.
He is a UK lawyer who is not giving you legal advice, but this is, I believe the best available
Info on the UK online safety act because of comms guidance is not particularly useful and it's not written to be useful and is not written for small sites and the law is not written for small sites so Neil here is doing humans work.
He made to me the point that.
There is a structural issue that.
Ofcom is tasked with enforcing this law.
Ofcom cannot revise this law.
So if the law says something bad and unenforceable and stupid like Ofcom is now the censor of the entire world, structurally, Ofcom is not a legislative body.
They cannot push back against that.
They cannot say,
well, obviously we're not going to go and negotiate international treaties because we are a regulatory agency and domestic at that, let alone international negotiators.
And so when I and others have asked them, what gives you the right to censor the world?
They have said, this law gives us the duty to censor the world.
So structurally,
Ofcom is forced into this ridiculous position, but the position is more ridiculous, and it is ridiculous about positions.
Ah, I must have said something true.
Parallel construction.
So, Kyle's letter gets at this very big problem of to-do moderation at scale,
you do actually need all of these things defined with very clear lines between them and a list of what's acceptable and not acceptable.
And we know this is true because Ofcom's own guidance references it.
And it's both in the law and it's in their guidance that there is this idea of
extreme pornography.
So where are we going with this?
Actually, maybe Daphne, can you save me a Wikipedia lookup?
dpk0 Labour
Which political party is in power in the UK right now?
Because I know Ofcom is headed by a political appointee.
Labour?
Thank you.
All right, so now I am getting to
the spicy version of the stream title, I guess, which is...
The UK Labour Party has a secret list of unacceptable sex acts.
I know the UK likes its tabloid journalism, so there's your headline.
The Labour Party has a secret list of sex acts.
that are prohibited and allowed.
dpk0 political appointee but not in the US sense where it changes as soon as a new government is elected
dpk0 the current one was appointed by the Conservatives
Because Ofcom, which is led by a political appointee, which is appointed by the Labour Party.
Yeah.
Oh, no.
Oh, no.
I'm totally wrong then.
I didn't know that's what that meant.
So I saw because I didn't learn what Ofcom was until this ridiculous law.
And I saw on Wikipedia that it was described as having a political appointee.
So it's a political appointee in that it's appointed by the government.
Is it one of these where it's deliberately off cycle?
Does the party still... How do I say this?
In UK terms, does the government formed by the current party exercise authority over Ofcom?
Because I would say yes, whether or not they've replaced the literal head.
Where are we?
This page is so long.
01:02:18Yeah, they get a four-year term. It was appointed two years ago.
...30So from this side of the pond, it's all the same to me. But the gist of it is still that the UK must have these answers, right, if they're effective regulators.
01:04:01Does this... I'm looking at the page. Is there a... Yes, there is. Convenient. I'm going to grab the... Can I grab the... I'm trying to grab the link to this exact question. There we go.
01:05:46So many issues at once. And I want to say all nine issues.
01:06:40so there was a once or twice there have been leaks out of facebook around i don't remember which site this was the oh this is Yes, please show me the question. Not at all easy because you're showing me garbage about current news instead of the actual thing I'm searching for.
01:07:27There was an example that's leaked out of Facebook of how incredibly detailed your rules
of a general purpose moderation team have to be, where... Was it... Who was writing about this?
I think Mike Masnick wrote about this.
chamlis_ https://www.theguardian.com/new… ?
No, he's talking about how there will always be people who are unsatisfied with it.
Frici https://www.bbc.com/news/techno… is it this ? CaitThinking
Oh, Shamless, I think you found it.
So let's look that up here.
01:08:40yeah this is what i was thinking of this is exactly a shameless thank you for doing that
01:11:14Frici ah yes the source is the link chamlis_ mentioned.
dpk0 okay, iโm gonna head off and collapse into bed and probably fall sound asleep as soon as the light goes out
dpk0 hope your latest idea works
dpk0 will do
take care dpk rest up if you see any good roundup posts about fosdem please do share a link i know there's a ton of videos that come out over the next couple of days and weeks about it but oh man i already have 200 talks in my queue to watch i try and watch one a day but the list never seems to get shorter
01:12:10dpk0 bye!
I'm gonna do this one off stream.
So there is a term in the U.S. called missionary position.
That is the, yeah, thanks Wikipedia.
It is the sex position where a man lies on top of a woman on her back.
And it is so called because...
Christian missionaries argued in favor of it as the only acceptable one.
I don't know if that's a...
I think that's probably an urban legend, but it is at least a ubiquitous enough one to name a sex position.
And I'm pulling up the thing off stream because, you know, like all good Wikipedia pages, it includes an illustration above the cut.
I guess at least it's a drawing rather than a photo.
I wonder what Wikipedia's policies are.
01:13:16Apparently, Wikipedia says that Alfred Kinsey accidentally invented it. Huh. He was a very popular American sex educator and sociologist in the 60s.
01:14:12So let's grab these two missing links. One of them is from it's about
01:15:16There's my stream title, by the way.
Since I was wrong about the political party being in charge, I will just go ahead and say government generally.
And if anyone complains that I'm using it wrong, I will just explain that I'm using it in the American sense.
And if they don't understand cross-cultural issues, I don't know, maybe they shouldn't be trying to be king of the world.
Actually have a king.
So weird.
Where's my comment box?
I need the link for Ron Wyden's office.
I don't think I found this.
Here we go.
chamlis_ playing with fire, keeping that tab open
Don't know that I've seen a picture of him before.
01:16:19oh yeah the missionary position one that might be too spicy for for what it's worth i would scroll down a page or two unless you're saying that you know senator ron wyden and his internet policy is so attractive that twitch would see that as worse than a hot tub stream
01:17:11This is redundant. To implement, this can be the Facebook link.
...59Okay, be consistent.
01:19:16I get tempted to list off all the things I've tried, but it feels just very self-aggrandizing. given that there's no result it's also just depressing all right so if we go to my threads page i can throw the link for this comment in the chat
01:20:06pushcx https://lobste.rs/s/ukosa1/uk_u…
There we go.
...13So yeah, we're down around what, 40, 30 days has September, yeah, about 40 days left. So as long as I was writing that comment, I was going to review the Notice about it. Wrong shortcut. Man, you use Z once.
01:21:06There we go.
...12so this all right so this is just the warning so one thing i realized after we did this page caching thing to fix the performance problems created by the uk osa was i realized this is the level that needs to be enforcing the geo block because otherwise we have the exact same issue of whoever fills the cache fills it with either the geoblock page or the regular page. And so that would just be chaos. So I do need to copy that down here, which was up in application controller. Yeah, there we go.
01:22:21Oh, it's a shame we missed Daphne. I meant to... Well, not missed her, obviously, but I meant to highlight to her that she had criticized this writing, and I improved it based on her criticism, and I wanted to highlight that to her. I don't think there's a... Can I check the date and time?
...56can get them that's terrible i'll just deploy on the 15th rather than try and write more of these nginx config is very performant but the expressiveness is limited to achieve that and i don't really enjoy writing these and i would rather put off having to write the next one so then the last task was I've got to pull up that IP database site that likes to link. The link was literally right here, wasn't it? No, it's in the helper. It's in the application layout.
01:23:57Here we go.
pushcx https://db-ip.com/db/lite.php
There's the URL I want.
So if anybody is curious, we are currently using this light database and I'm going to update to the current version of the database because it gets released every month.
And then if we do get to
01:24:28March 15, I'm going to actually purchase the commercial version of this database because this one has reduced accuracy and a number of people have reported that it's not particularly accurate. And they say, oh, I'm seeing the warning banner, but I'm not in the UK. And some of them, I think someone in Germany said they saw it. And then What else do we have? Someone in Northern Ireland said they saw it. And then someone in, I think Scotland said they didn't see it. So some of that is these databases can only be so accurate. Let's put this file in place.
01:25:27Sorry, I'm just tidying code. There we go. So we've got the... Oh, that's... Let's move that back. That's the... That's the recording that OBS is making of this very stream. And I don't think moving the file would mess it up because it just kept the open file handle. I meant to move... It was just the latest updated file. Cause it's getting touched a couple of times a second.
01:26:06There we go. Yes. So copy that over to lobsters and then unzip it. And I don't remember the name.
...37Really, I don't have that light bulb. And I guess to use it, I'm going to have to bounce both Nginx and the, yeah, Nginx and Puma.
01:27:11So let's go and do that.
...28Where's mine?
...35I don't know if reload is enough. I'm going to restart.
...42just because if I reload, it might hold the file handle to the old one.
...53So new month, new IP database. That's the next topic. All right. So did pull request review, did the online USA update. So just to call out, because I've been going for a minute, this is Office Hours for Lobsters, which is the site that is linked from the description box right under the video if you're on Twitch. And when folks don't have questions, which you can ask at any time, I work on the site in community. So one of the things I've been doing is this incredible disaster, the UK Online Safety Act, and then this... zulip experiment so i talked about it with there was a idea of whether we should migrate to postgres and then i had joel draper as a guest on the i guess that was the last stream he made a pretty hard pitch for sqlite instead of postgres
01:29:14The pull request I just merged earlier on stream to wrap more things in Active Record should make it easier to port to Postgres or SQLite.
I don't have a real strong feeling about that.
So I emailed Rahul, who's the person who started a bunch of the Postgres migration stuff, and he gave me a brain dump on his opinion, which is generally that he likes SQLite and has a lot of experience with it too.
pushcx https://lobsters.zulipchat.com/
But one of the things that came up in that whole thread around the idea was, oh, what a big migration it's going to be.
And there are other people who are using the code base.
call them sister sites like sister cities and I don't actually have a way to get in touch with them I don't even have a list of them so there's a wiki on github but I don't know that this is anything like up-to-date
Someone's crossed some of these off.
I don't recognize all of them.
Yeah, don't need the cousins.
01:30:41And a bunch of these are crossed off because starting a community site is just brutally hard.
...56All right.
So...
pushcx https://push.cx/discord-vs-irc-…
A while ago I wrote up this post that was notes from a couple of years of discussion that we've had in the IRC channel about the limits of IRC.
And I guess it's been six months now, so I published this back in July.
01:31:34Yeah, it's been six months and I don't think anything has changed on IRC, which is kind of the problem because almost nothing has changed in IRC in six years or in the six years before that. Whereas Discord, as much as I feel kind of dragged into using it, it is not my favorite platform as a user.
01:32:02At least it's maintained.
Ah, that's too catty.
IRC is maintained, but it's not improving.
It still does not have anything like a good new user experience, and it is not changing and growing.
twitchtd discord works if you don't mind the walled garden
It doesn't have any kind of process for adding new features or addressing old, missed designs.
And all the time, I bump my head on
some irc decision that was maybe justifiable in 1994 and is not anymore and you can see this list here of things discord does that would generally be nice see works if you don't mind the walled garden so i listed some downsides in this post and
some of these are not just the walled garden like discord is very slow and it's been six months and i still see issues where i have said very flaky about marking channels is red and it's worse on web than mobile this is still the case i had two days ago i had an issue that was with a server where it was constantly marked as
having activity even though none of the channels had activity and I clicked like mark the whole channel as red and this persisted both across the web and across mobile apps I tried on both because I figured maybe they have their own independent caches and one of them is correct and one is not but no Discord is just flaky on top of it being slow and so
There's the, like, are you okay with the walled garden?
But really, there's just a fundamental culture clash between lobsters really want something that's hackable, low overhead, and Discord is not that.
I guess the other concern about Discord, and I mentioned it way down towards the bottom, is...
Oh, no, I'm sorry.
I mentioned it near the bottom.
Because Discord is a single service run by a VC-funded business, everything funded by venture capital cares primarily about growth metrics.
chamlis_ I dodge some of the client related issues with https://github.com/mk-fg/reliab… - probably not relevant for lobsters itself though
That's how these things become valued as unicorns.
They have a growth rate.
It's not necessarily that they do a billion dollars in revenue or they have a billion dollars in the bank.
It's that
they have a growth rate that puts them on track for those things yeah shameless that's the second paragraph of that readme that you just linked is the other
I noted it here that Discord is actively hostile to third-party clients, and this readme notes, while I wouldn't call this a bot or automating standard accounts, there's very much the Discord blocks the hell out of third-party clients.
They don't want to be extensible, and I understand the kinds of abuse they want to avoid because of their ridiculous scale, and the kinds of
chamlis_ yeah, it's absolutely a risk
maintenance work they don't want to do but i don't know as irritating as the discord client is and it is enormously irritating to me with all of its janky animations and broken activity and upsells
twitchtd have you looked into matrix? I don't use it but I've heard of it
and intrusive nonsense and limited configurability.
I don't want to get banned off of Discord because I used a reasonable client.
So TwitchD, if you Control-F this post for Matrix, you will see Matrix used to bridge to the Lobster's IRC channel and their bridge went so poorly that I think they got booted off of Libera.
twitchtd got it, nvm
entirely it was a very unpleasant introduction to matrix and i understand it has some pretty strong fans but it didn't really make a good name for itself so no i haven't seriously looked at it
01:37:20Before I moved to the Lobster's channel, I would give Matrix a look because it keeps coming up.
But I don't attribute any special weight to it being open sourced.
I do want to be able to run our own chat network rather than depend on something run by venture capitalists that's eventually going to turn a lot more extractive.
twitchtd ya, discord already pushes me to spend money on it
Because that's, I mean, that's obviously the future for Discord is at some point someone will say, oh, to keep this metric moving up into the right, we're going to have to make every server subscribe or put ads directly into the client, you know, more than they already have ads.
Yeah.
Well, you know, there'll be like Reddit style where one message in 10 will be actually an ad, that kind of thing.
Because it's hard.
Frici oh there is already some upselling and apparently they plan a LOT more
It's brutally hard in B2C to keep a valuation up because everybody wants stuff for free and doesn't value anything.
If I could just...
They plan more.
I'm unsurprised.
I haven't heard about anything planning.
I just know how B2C works and where their incentives are.
I don't have any kind of special knowledge.
So...
I wrote...
If I could just pay 50 bucks a month for like Discord without the upsells and for the other issues fixed, that would be great, but I can't.
And it seems like even if you pay for Discord, it still puts upsells and ads in the user's clients because I'm on one where somebody does.
It's irritating.
Frici can confirm I pay for the higher tier specifically and i get 0 slack when it comes to upsells i see them all
And because they're always going to be an intermediary between someone who's running a chat group and the users, they're always going to be tempted to turn around and double dip on both.
01:39:33chamlis_ it's gotta be nigh impossible for them to be profitable given they operate functionally infinite storage/CDNs for every user
So when I threw up this blog post... Yeah.
Yeah, actually, my Discord experience is kind of...
broken right now because I've just ad blocked some of the upsells and stuff and a GitHub bot integration just prints blank messages now and I don't want to spend the time toggling off
until I find whichever thing.
Yeah.
pushcx https://lobsters.zulipchat.com
So Zulip is a chat service that I used when I was at Recurse Center.
And at the time, it was a very
It was not a reliable web client where like if I went up and down selecting messages, I might end up selecting the wrong thing.
Or if you, if I opened the menu and I changed messages while the menu was opening, it would leave the wrong message highlighted, or these things would trigger on the wrong message or the wrong thread.
And then on top of it, everything was just kind of slow.
And they've done something in the years since.
twitchtd oh zulip looks good
Some kind of major performance work, because now it actually feels very nice and very snappy.
So as an experiment, this morning, I set up an instance of Zulip.
Frici Zulip feels very forum-y instead of chat-y from what i've seen.
And I don't love that this is Zulip or lobsters.zulipchat.com instead of, I don't know, Zulip or chat.lobsters.
Yeah.
It's kind of forum-shaped.
You can do live discussion.
01:41:40It's very...
I have seen some...
Well, I've worked at a job where the rule in Slack was you always start a thread.
mjiig Yeah, I've used zulip only a tiny bit but got a threads rather than rooms vibe, which I wasn't a fan of
And that feels very much like a hacky version of what Zulip is out of the box.
Because in Zulip, every discussion is a thread.
And it has a bunch of the nice features that...
01:42:15twitchtd looks like you can selfhost zulip as well since it's ... opensource! https://zulip.com/self-hosting/
mjiig But that's very much a matter of taste
we liked like a good new user experience a gui a mobile app not this streaming thing which obviously i've sorted out yeah for taste it also has the web ui has gotten significantly better in the last couple years just lots of and it's not enormously different than i use but it just has
twitchtd chat.lobste.rs maybe ? :) assuming you would want to selfhost zulip
little bit better spacing better icons and the responsiveness is so huge i keep coming back to it because i spend all my time in terminal uis where you know i hit a key and 16 milliseconds later i see it on the screen and then i have to use these web apps where i click on something and 160 milliseconds later i see a change so that zulip is snappy now it's very pleasant
So I'm going to experiment with it for these things.
Yeah.
Chat lobsters.
So because it's very experimental now, actually, if you click on that link, the Zulip chat link, you should be able to sign up and join.
So I'm going to experiment with it for the sister sites, and I'm going to note it in, I think the read me and the wiki and say,
Hey, please come by and at least loiter here because I would like to at the very least have a security channel so I can tell the sister sites if we should have any reports of vulnerabilities.
All of these sites are open source.
twitchtd I get: You need an invitation to join this organization. for the lobsters zulipchat
It would be nice if I could warn them before I'm pushing a patch to Lobster's public repo.
Frici How is organizational permission granularity to it ?
So if I could get them in one place, that would be nice.
I need an invitation to join this organization.
All right, let's figure out how to turn that off.
I appreciate you testing.
So the organizational settings look like this.
Permissions.
Who can email?
All right, so members can.
Ah, there we go.
Let's turn off that.
All right, so if you reload, you should be able to sign up and join this right now.
And I added, so this is nice.
This is one of those things that Discord does not have.
It's not authenticated.
I could build a bot to authenticate it, but I can do the really easy thing of, hey, you have a custom short text field to fill in your Lobster's username.
So if you go look at my profile, here, I can preview it.
look there's a field where i can just write in my lobster's username discord doesn't have that irc seems unlikely to have that this decade i don't know there's so many little quality of life touches that says some folks who share open source aesthetics and culture have worked on this oh i should reload because one
One interesting thing is they have plans.
01:45:52So Zulip is an open source project.
Zulip Cloud is the version of it that they host.
And you can self-host it for free.
mjiig Completely off topic, but somehow I've never noticed your avatar is baba but seeing it with grass in the background made it obvious instantaneously, how odd
But on the cloud, if you are an open source project, you can ask them to upgrade you to the standard thing for free.
And I emailed them this morning or I filled in the form this morning and I said, hey, we're a open source organization.
Oh yeah, my avatar is Baba.
I really like that game.
pushcx https://store.steampowered.com/…
If anybody doesn't know, Baba Is You is a wonderfully good puzzle game.
I fell in love with it a couple of years ago.
It's Sokoban, but then it's also kind of meta.
The rules of Sokoban,
Frici Absolutely love Baba is You
are objects on the screen i don't know for 10 or 15 years i had an avatar that was a fibonacci spiral because on the first post on my blog so my blog is pushcx it's a reference to the second assembly language or second language i learned which was
assembly, I remember what that slug is for that post anymore.
But the first post on here is I had a little example of assembly, and it was calculating the Fibonacci sequence.
So I use the Fibonacci spiral.
But I have a programmer's eye for design.
And so it was just like a gold spiral on a brown background, and not very good avatar.
And since I really liked Baba is you, I just made that my avatar.
01:48:00These guys still up? Great. All right, so y'all are welcome to join this experimental chat, but I was going to basically just build it out as a place to... So I've been reluctant to run the code base as an all-purpose... Oh, hey, look. thomas here has made the first post and i don't remember what your twitch username is so i can't call you out by twitch username but hello and welcome so we've got that dimension
01:49:01I think I'm just gonna stick it at the bottom.
...48Not the right link, huh? Well, it could link people to Baba Is You. That's a different kind of puzzle game than New Chatworm. Alright. So one of the benefits of the chat room is that it makes Lobster's invite system a little more permeable, where almost every day somebody can come by I should say somebody does come by and ask for an invite almost every weekday. If you don't already know someone on the site, it can be real hard to join. And it's not about the invite system making us the best of the best. You have to be elite. It's just about... Oh, you get so much spam and abuse if you have open signups.
01:52:13Just wanted to save, not delete that line. All right. Let's grab the wiki link to put in here. Not sure what else there is to say. I should put it in the readme.
...37I should put it fairly high up.
...52Bye.
01:53:58It feels pretty good. All right. That's one to add it to chat and read me right domain. Oh, yeah, I was researching. I think to run it on a custom domain, so I was wondering if we would get this. Addition to the. OK. So I applied to be on their community sponsored plan. And I know there was stuff in here that I saw that was grayed out. And I wondered if there was, yeah, like I couldn't replace the logo. So that's this guy in the upper left. Let's just go notes. upstairs we'll just do the same logo for both and then what i was hoping especially once we moved up to the supported plan was oops excuse me thomas i think you had the setting on for your email should be public if not ah that's what i get for clicking around as a moderator so i was looking to see if i could customize the domain name and set up dns for it but it looks like no and i don't love that I realize what a ton of work that is on their front, but I want it because I want to own our domains.
01:56:14So I guess I can't do anything there. All right. So I'm going to make a list of which of these sites are up and try and contact their owners. I have his email.
...45Frici i'd be surprised if they didn't have something unless they kinda want you to use theirs as a form of "free ad/least intrusive ad"?
I should put it on this page too.
Follow on Twitter, that's been dead for over a year.
01:57:04I think it's just a missing feature.
...16Only available to organization owners. Change the organization URL. Yeah, so this is just your subdomain. Ah, so here it is. You have to be on their Zulip Cloud Plus plan, which is not... The community-sponsored one is called something else.
...49I can't type. My sleep got a little messed up, so my typing is falling off a lot faster than previous, right? So if you get the community sponsored, you get moved up to this standard plan, not the plus.
01:58:14Yeah.
...19The other thing is,
So it's not called out here, but if we switch to self-hosted, one of the nice features of Zulip is it does have a mobile app.
One of the limitations of the way mobile apps do notification, push notifications specifically, like someone messaged you when you haven't had the app open in 12 hours is to avoid
draining batteries from a dozen apps polling in the background, Google and Apple have both made the decision to centralize notifications.
So your push notification goes to Apple or Google centralized single service, and then they send it out to the phones.
And if this sounds bad for privacy, it's because it is.
So for example,
The US government has used warrants with gag orders against Google and Apple To get searches of notifications or to watch new notifications go by Which effectively allows them to read notifications because as far as I know Google and Apple have not
fixed that with any kind of end-to-end encryption from app servers to customers' phones.
So one limitation
of self-hosting is because this is a whole whole big setup for Zulip that even if we self-host our mobile notifications have to go through Zulip centralized service because Google and Apple don't let
They don't really think in terms of third party services, I mean to them it's a third party service, but they think in terms of.
The APP wants to send notification, rather than the APP as a service.
So.
it's a little bit privacy invasive unfortunately.
But it's better than irc where you don't get any motive mobile notifications and you can't stay connected without a third party service.
I just spent some more time this morning and last night looking at whether I could set up a bouncer for my IRC channel or for my IRC client.
And I can, but the WeChat client that I use treats it as a whole separate server.
So then anytime the bouncer goes down, I would get disconnected from IRC.
and it can't automatically fall back and connect directly because the way IRC has put SSL or SASL on top, you have a single identification for the server rather than multiple for each host name that you could connect to.
twitchtd thelounge + selfhosted vps + tailscale = persistently connected solution that works for me
So it's just one limitation after another with IRC.
I have a small shell server I pay a couple of bucks a month for, and that's what I receive from, but I don't want to.
The lounge.
Oh, I've heard of this.
02:02:18Yeah, so Twitch, it's the self-hosted VPS in the middle of your solution that I would like to get rid of.
because I don't know, it just kind of is annoying to pay for IRC.
It's one thing to pay for a service or a system and it gets better over time.
twitchtd true
IRC doesn't get better, unfortunately.
...54twitchtd got it
And I don't,
Well, it's actually funny, because it's Tailscale that caused this problem indirectly.
So I mentioned Tailscale in my recent TV setup blog post.
Where was it?
Yeah, I said, you know, Tailscale, on the off chance you don't already use it for your home network, because like all of the nerds I know already have installed Tailscale.
Almost everybody, it seems.
It's incredibly popular.
gtfrvz fake nerds. real Gs use tinc
There's HeadScale if you really don't want to use their service, but their service has more features and it's quite nice.
And it has that benefit of you pay for it and it gets better over time.
Tink?
I don't know what that is.
Is that an IRC thing or a networking VPN?
Oh, so this is the hair shirt version of TailScale, huh?
Yeah, it is.
I mean, if it talks about being capital F free, capital S software in the second sentence, yes, it's the hair shirt version of something that works.
And so I said, Tailscale continually impresses me with its features, reliability, and polish.
It solved a ton of hassles that have come with multiple devices and working remotely.
So I have had a...
like a personal $5, $8 VPS for how long?
Maybe 20 years just for a round number, 15 to 20 years.
But with Tailscale, that's optional now, because I don't need a box with a public IP that all of my personal computers can go talk to as like a bridge between all of them.
Tailscale just makes me an intranet between them and it does all the nat traversal.
And none of my personal stuff has to be exposed to the internet.
And so over the last year or so that I've had, and it was the TV that really pushed me to get Tailscale set up.
But over the last year, I've moved everything over to it and I've
got my personal devices all directly talking to each other.
So I don't need a self-hosted VPS for anything.
And my IRC client is the last thing on it.
And especially after doing it for file sharing and for DNS and for having an exit node and all of these kinds of things,
If all of that together was worth $8 a month, IRC alone feels very much not worth $8 a month.
02:06:08And so then this morning I looked at, no, it was last night, and I asked in the WeChat room, how do I set it up so that I can connect to a server both directly and through a bouncer? I'm either connected to it from my desktop, and that would ideally be in the bouncer, because I put my desktop to sleep at night. Or... Yeah, I guess the or there is, or I am connected through the bouncer, but I don't have anywhere the bouncer would be up 24-7. And I would almost put a bouncer on one of the Lobster's VPSs and use that directly. But one of the primary uses for having a bouncer is when I am restarting the Lobster server and explaining the upgrade or the outage that has taken the VPS offline. It feels like the one really high priority place where I'm on IRC anymore. I just want this stuff to work. I'm tired of dicking around with it.
02:07:42twitchtd no silver bullet for chat :(
Well, I don't know about no silver bullet.
Zulip feels close.
I have some...
There's some minor stuff I don't like, but... You know, I draw up the mental list, like that Discord post, and Zulip checks pretty much every box.
What did I just do with that tab?
Come back here.
02:08:51gtfrvz store lobster users in ldap and then selfhost zulip with ldap auth
pushcx https://www.recurse.com/
recurse so in my head i learned about zulip from recur so i keep typing it the two are really tied up in my head because i was on lobsters and that's where i heard about recur center and really considered going and decided to go was talking with someone on lobsters about it and then while i was at recur center which if anybody doesn't know it
It's a great way to spend a couple of months.
It's like a writer's retreat for programmers.
And while I was doing this was when JCS posted his Passing the Torch announcement, and I immediately leapt on.
Hey, I have already told you because I can see you burning out.
I've already told you that I would run this site.
Please let me run this site.
And so in my head, the two Recurse and Zulip overlap and Recurse and Lobsters are pretty deeply connected.
02:09:57So as long as I'm writing here, I think I'm going to clear out the inactive. Let's do one at a time.
02:10:15So there's that.
...22And let's get this committed.
...31Didn't mean to accidentally commit the database. They probably have a thing in their license about not independently redistributing it. So now it's just in my local git history indefinitely. Well, it's not. I know git garbage collects. Let's push this up. Yeah. Because I merged stuff. We'll pull it down. And then I'll push that up.
02:11:14We now have a chat page. Oh, OK. So that doesn't need its own anything anymore. And I think I can just drop this. There is no delete button.
...31Frici there is on the edit
You must be a couple seconds behind for each.
I found it just as you said it, but thank you.
All right.
So we don't need that anymore.
Just have this.
twitchtd instead of crossing them off maybe try having a defunct section, or not grouping them with the sites that are up
then are these ones that are not crossed off all up no also no also no so this is this thing where you know
half of these are crossed out and half of the ones that are not crossed out are also gone is part of why I'm so careful about site norms is it is really hard to build a living community and keep it living.
And so I'm careful around the things that could kill us like
Like Peter has a really bad day and decides to ban everyone who disagrees with him about what the best programming language is.
That'll kill your community.
Even if I'm objectively right about the best programming language, and I am.
So...
02:13:51I'm sort of a completely missed middle bit, because I see that it's a description of my physical location.
02:14:05So for folks who don't know US geography, Chicago is not terribly far from the geographic center of the United States, maybe only 1,500 kilometers away.
We have a big country.
Frici missed one. on kind and green news
most of the population is on the west coast or really most of it is on the east coast and so we get overlooked sometimes so which two was it commons okay so it was
This one I couldn't read and the machine learning one were gone on kind and green.
Thank you.
02:15:08Oh, you're saying I missed the slash.
Not that I missed bringing it down.
All right.
Thank you.
Frici Yes sorry HahaSweat
And then all these up.
So I don't want to Yeah, so some of these don't have a lot of activity.
No, it's okay.
It's just really hard to hold a conversation over lag.
You know, you're rough when people go to other planets, and they have 30 seconds of lag.
Because that's, yeah, this was the one that was gone.
...59All right. So Game Dev City just came up in the Lobster's chat room the other day. I've talked a bunch with the person who runs this, whose name I'm completely blanking. Oh, they also went to the front page of HN this weekend. And I gave him a hand getting set up with the code base and Game programming is part of what got me into programming. So I wonder if this is my bug.
02:16:47I do have the minor hesitation about migrating databases because for these sites that are already not huge, Or also, I don't know. It's tough because you've got to be real technically savvy to run this code base. It's not really packaged for use. It's mostly available for transparency reasons. I don't know. If there was a way... Yeah, I have had a pipe dream about running lobsters as a service where people could pay me a couple of bucks a month to run instances of the code base. And there was, if you dug back in the README years ago, there was a note about me trying to do this. This is like, I think 2018, maybe 2019 I did this. So hot minute. And I talked to... maybe 15 or 20 potential customers about it. And because subreddits are free and Facebook communities are free and Discord is free, and they were mostly kind of young folks, but they were shocked by the idea of web hosting that might cost $10 or $20 a month.
02:18:29I wonder if, you know, if we did port the database to SQLite, that might be low enough that I could get rid of some of the overhead to running a site.
And that would make hosting it a lot more attractive.
Because that for me is kind of a pipe dream.
Like I could hack on lobsters all day.
I'd be pretty happy about it.
But I've been very reluctant to even take donations for lobsters because adding money just changes so many expectations and social dynamics.
You know, when the site goes down, I mean, you've seen me, I've taken the site down on this stream today to make sure that that IP database thing deployed correctly.
And that was a what?
60 second outage.
but I could just boot the server and it's not a big deal.
On the occasional, very rarely someone comes in pissed off that the site is down and they're like offended about it.
Usually people have really good expectations about free things.
Every once in a while someone comes in grumpy about it and I ask them, hey, please quote the SLA in your support contract and we'll make it right for you.
Donations would change that and a lot of stuff.
let alone paid like Metafilter or something awful.
Hmm.
I don't know.
It's still a fun daydream.
It is a terrible business idea.
MutableHuman o/
And so I like entrepreneurship and I was just linking this to someone the other day.
Where is it?
So if you want one of the hands-down... Hey, mutable human, welcome.
gtfrvz how do you do search again? that might take a bit of work to port to sqlite
pushcx https://longform.asmartbear.com
If you want one of the hands-down best blogs on entrepreneurship, this guy, Jason Cohen, has his blog, SmartBear Software.
Oh, searches.
Yeah, I don't know about SQLite search indexing.
02:21:04so we have two classes for searching and i should put that one over there and the here we go so on the left we have a search parser which takes a search and generates a abstract syntax tree it even works correctly that's a nice one took some hassling and then
On the right side, this search model turns the AST into a SQL search.
And because ActiveRecord under the hood is string munging, ActiveRecord does not support the MariaDB search syntax.
So we have to, and this gets scary, we have to drop down to raw SQL strings.
So there's a bunch of escaping, there's a whole lot of tests to make sure we're not opening SQL injection.
It's one of the things that's promising about, if you saw last stream where I talked with Joel Draper about Plume, which is the SQL parsing engine that he and Steven Margime, Fractal Mind, are writing for
sqlite databases that allows the code to that's still very much a work in progress but they are getting to a ruby library for databases that actually very deeply understand sql in the exact way that sqlite understands sql and porting from active record would be oh my god a huge project but i would stop being scared of this code
Because, come on, you see me doing string munging next to this and then we're slapping it together into the SQL database?
I have kicked the tires on this code a whole lot with so many tests and so many just manually tinkering with stuff and very...
If this...
If somebody gets a 500 out of this, I get an email instantly because I'm scared.
This has got a SQL injection in it.
It just feels like such risky code.
And if I could get rid of it, I would.
The previous code for the search engine was actually a little, it was more limited in ways that made it safer, but
it still had the same structural issues.
gtfrvz in my personal project i simply allow the sqlite FTS syntax))
So this, where we have something pretty well defined that's transforming the AST into a query, was a lot more testable than the previous version that was just all strings.
and it feels sort of like the drake equation for a vulnerability of how many features are there times how robust is the parser times how robust is the emitter times how robust is the test you know and any of those things can add up to a sql injection you know that's your final percentage chance of a sql injection vulnerability
And so I slightly increased our intact surface by adding some features, but I greatly reduced it by being a little more rigorous around string generation.
So I feel pretty good about that.
Yeah.
I don't know SQLite FTS.
So I have toyed with... Are we talking about this FTS5?
Ah, full text.
What is a virtual table module?
This is a thing about SQL where I'm reading a doc and I click on something and I see the C interface.
This is not super useful.
gtfrvz you dont have to care about the C side
I wanted a description of what a virtual table object is, not the C signature of the function or the data structure, I guess.
Yeah.
Yeah, theoretically, I don't have to care about the C side, but then...
I'm looking at a doc and literally the first link in a doc just dumps me into some C code.
It's not even labeled as being something separate.
So they have a pretty low level view of their database that I don't know.
I'm a web programmer.
I don't even know what a type is.
02:26:18MutableHuman lol
This looks like it would support, is this all the functionality?
Hold on.
Full text query syntax.
So we can say match prefix.
Sure.
Initial token.
Can we do quotes?
because if we can do multiple quoted terms.
02:27:01Okay, so we have the basic Boolean operators, which if anybody wants to hack on our search code, we have some mentions of adding not syntax. And there's some stubs in there, but I didn't actually do it the last time I was touching the search code. Okay. Yeah. So they're doing quoted terms. This looks like it has all the functionality that we use.
...44So. GT, are you saying, is your personal project Ruby or is it something else? Do you parse?
...58So I thought they, did they have the, yeah, the BNF. So do you parse it as BNF or is your personal project something where you don't have to care about security so you can just let yourself write this syntax raw.
02:28:26pushcx https://longform.asmartbear.com
The neat thing about that plume is they are working on porting this kind of BNF explanation of the SQLite syntax to Ruby so that they have
a complete matching parser.
gtfrvz yes, raw. should still be safe since it's still inserted via the normal escaping api
It is a big project, but potentially a very nice project.
02:29:02Can you say what your personal project is?
If it's private, no worries.
And I'm down into the C API again.
gtfrvz indexed my physical and electronic books and have a search intrface over them
all right this really does look like yeah all the functionality we'd need because i'm kind of below the screen i can see the you indexed your books oh nice
...43Yeah, so you saw my TV setup post earlier.
I use Calibre, which is a very popular open source ebook manager that has a very 2000 UI.
on top of it i think it's qt in any case just tabbing around it is a little painful but i keep my book collection on my desktop and i mostly read it from my ipad and i say mostly because when i want to get it books like pick a next book and if i'm on my ipad say i'm sitting in the coffee shop
I open up Calibre via Steam Link because Steam Link is for playing games out of Steam, but you can add any app to it.
I just want to get stuff done sometimes.
pushcx https://longform.asmartbear.com…
So here it is.
02:30:53Before I rabbit-hold onto SQLite a little, I was saying Don't sleep on this blog if you like entrepreneurship, especially if you wanna bootstrap a business, especially if you are a programmer. And this talk from, it's labeled 2012, but I thought it was 2013, is one of the absolute best talks I have seen for developers who are interested in entrepreneurship and what it means to run a business. Yeah, see, they tagged it as 2013.
02:31:31Thanks. It's basically about how you want your business model, how do you charge your pricing model, really, to reflect the constraints of running a bootstrapped business. Jason Cohen's work has enormously informed my entrepreneurship and led to a lot of success for me. Nothing like his success. That's the guy who started WP Engine. I'm pretty sure he's a centimillionaire at this point, but that's part of why I think that lobsters is not a great business because it's selling lobsters. Obviously I'm saying community sites running forums is not a great business because the customers are unsophisticated. They don't have a business need. They don't know what things cost. And they also have to complete a huge difficult project, like a thousand hour project to become a successful customer. Because realistically, I do think it would take something like a thousand hours of work to set up a community site that is self-sustaining because there's a necessary critical mass of people interacting and making it a habit to come back to a community site and so it's sort of a pathologically bad project to host forums you can sort of get away with it if you're reddit and people will give you tens of millions of dollars for runway but as a random indie guy no
02:33:27So I got the Zulip thing done. I got the read me updated. I got the wiki updated. So I'm at about two and a half hours. This all ran. I swear every time the online safety act comes up, it runs. 45 minutes longer than I think it will. Because I was like, I'm going to bang out a comment in five or 10 minutes. No, if I went back on that, that was 45 minutes to an hour. So I've only got a half an hour left-ish because I usually go for about three hours. So as a reminder, this is office hours for lobsters. If you have any questions about the site or the code base or about or why i haven't approved your hat because i forget to approve hats because they're their own little cue we can talk about whatever you would like when people don't have stuff they want to talk about well you just saw it i work on things like updating the docs setting up things and story merging was on the list okay make a fold here i don't remember it usually the syntax folding i guess i could do one of these so story merging is our unique feature for merging stories Because often it happens that a bunch of links get submitted around the same thing, same topic, or can't type. Really can't type. Maybe I shouldn't be writing code if I can't spell basic things or type. So here was one where. This guy. So many deep sakes.
02:36:09This is the one I was thinking about, so it is three links together and. There's a bunch of work to do, because the database model is a bug factory. I'm going to start with doing some UI improvements. And I did all that to find a story that's merged, and I forgot that's not local. And I don't want to actually develop on prod. I tend to minimize that, as exciting as it is.
...49You know, I'm going to have to think about that. Maybe SQLite changes the balance of running a forum to the point where... Because one of the hassles with running a forum is provisioning databases. And it's not so much that you have to write the script to do it as a moving part. It's that migrating databases between hosts to load balance is real expensive. And it's much cheaper if... The site is just a file on disk. Hmm, I didn't think about that one.
02:37:35gtfrvz well it's all a question of scale i guess
All right, so that header at the top of each page is called list detail and it's complicated AF.
...58So I want to improve the UI there and I think one thing I want is a counter cache so that the parent can say how many stories are merged into it because people are very often surprised by Oh, I didn't know you know I read the first deep sea coast, but I didn't know that more got merged in well that's very there's no way to know. So let's memorize that it's and i'm gonna say memorize because there's the counter cash thing. Stories to called.
02:38:53That's reasonable. And then on the story model, I could just run that now, can't I? Good. One more attribute on the got object. I don't think I actually have any.
02:39:21Why am I getting yelled at about SQLite? in local development, because I have been using MariaDB in local development.
...37The test database uses SQLite, and it has to get migrated as well.
02:40:04I just clone it and move on, I thought there was a.
...19But there was a way to just tell rails to clone. The dev database over to the test database, but I guess that got dropped over the years.
...51It's actually really weird. OK, so this is something new about the setup for our cache.
02:41:21That's a pretty incomplete file.
...35What overwrote that?
...50I feel like I'm missing one of those things that's going to bite me in the ass in like an hour of coding, where something mysterious happened that shouldn't have happened, like dbmigrate overwrote that file. And I didn't see it happen. Yeah, see, it just did it again. What are we mad about? Yeah, it truncated it. That's great. So running migrations blows up. both this file and my test database. I guess ActiveJob is not as mature as hoped. Well, this isn't even the job. This is the cache.
02:42:39These fucking Unicode issues.
...49So this is the correct one from prod. But these other ones sneak in because MariaDB is updated and had to rename its collations and all that kind of good stuff. Yeah.
02:43:14Here's that. Now we're going to add a counter cache, which that's what I was coming over here for. It's the first one in the database, right? We've got an update counter. Got one counter cache. All right.
...54already want to tinker with that migration so i wrote merge stories count i don't actually want it to be the number so i'm going to put on the title the merged story icon and then the number of links unless the number is one because there's nothing merged So you will always see two or more. I guess there's the question of, do you wanna see the total number of links or the number merged into this? And I think it makes the most sense to see the total number of links if greater than one. Because when you click in to a thing that says one, and then you see two links, that's pretty weird. Yeah, that's exposing the database structure a little too much. Database structure should only be exposed by bugs. Wait.
02:45:33So I'm immediately driving right into that ambiguity between am I calling a story number of links or stories? Yeah, I'll call it stories count. Because a story can be a link or it can be just a text, so.
02:46:01That feels pretty bad, but. It's Rails. Okay. New to me. Did you blow up that scheme again? Oh, it's because I renamed it so I can't. I know there's a nicer way to do this, but then.
02:47:02So we'll just manually revert that migration and then run it again. And that's going to break this thing. Whatever this bug is, that's going to get real tiring.
...44so how do we tell it so what we want is for all of the children to touch the stories count which is almost the counter cache but i want to specify the actual query because i Need to add the plus 1. But I guess I can't do that. All right. Can I name the counter cache?
02:48:51Because I want to tell it the column is called something else.
02:49:01If not, I have to do that migration again. Yeah, here we go.
...12So that'll be just stories count. And then here, It's going to have the off by one.
...33Where do I leave the comment explaining this? Put it in your notes.
02:50:36So I want to print the merge icon and then otherwise I print nothing. And where's that? I think it's on the comment.
...59Yes.
02:51:36See, this is one of those things that I liked about Flex is I don't feel like I'm having to keep track of a lot of string munching, jumping in and out of different syntax languages. Say nothing of the indentation is proper. All right, so there's that. Migration.
02:52:33See, I can never remember this because there's update attribute, update column, update all. And I want to say, can I just tell somebody has written this code, right?
02:53:08Yes, I want the nice active record.
...23I don't want to think about it. Aha. Really? Loop them individually? We have 100,000 stories in the database. That's not appropriate.
...54That's also not.
02:54:05That's also a lot
...13This is one of those places where Rails' disregard of the DB really leaks through. It would be nice to be able to do this correctly. But I can't really express it, I guess.
...47So let's bring zeal up here. What's the one for update all? Yes. Yes. OK. So it's story.joins merge stories.
02:55:29Where's mine?
...59I'll just write the damn thing out.
02:56:12That's what I want to run, given that I have a fewer than a billion rows in my table, but more than 10. Do I need parentheses? for the subquery.
...38You don't like merged into story ID? I thought it was called merged story ID. which has been a source of confusion. There we go. So if I was in SQLite where n plus 1 is free, maybe I would have just done the active record version with findEach, but come on.
02:57:54And let's grab the stories count. I guess this didn't actually run.
02:58:53no rows affected no warnings yeah but there are 760 that should have all right now we play who spots the bug because if you can spot whatever this bug is before i do you get to be a channel vip And you receive laudatory praise if you are already a VIP.
02:59:33This totally seems correct. no this so this stories is referring to the inner stories that's what it is right so if we said stories inner where
03:00:03helps if I spell these things right, though.
...16Oh, I bet it's inner is actually like a reserve word, isn't it?
...29Ha ha, 579 rows affected. Take that, database.
...42I guess I'm in here all night.
No, I'm not.
I'm actually only here another few minutes till I get this working.
And then I will roll out, because I usually do about three hours of stream.
So if you have any last minute questions for the stream, now is a great time to get those in.
MutableHuman no questions but that's for streaming!
All right.
There we go.
Let's grab this guy locally.
03:01:24Thanks, Mutable Human.
You're new, right?
These are not usually wildly busy streams.
I've got to do more hot tub streaming to get popular on Twitch.
MutableHuman i am, been lurking on lobste.rs for forever though, and also sub to the RSS on your blog
And this, I do not see the code I just added there.
So what's missing?
I've been messing around so long with the migration, I might not have saved the file.
So let's save.
...59What's wrong?
What if I say, ASDF, am I editing the right thing?
Frici PRs and Hot Tubs, the popular office hours.
I am not.
03:02:18I think I'm getting myself with heinous inline partial. Yeah. Let's bounce the server.
...37gtfrvz you're on prod?
No.
I was sure it was going to be heinous.
Oh, yep, there you go.
See, now you get the effusive praise.
Thank you for spotting the obvious thing that I'm tired enough not to spot.
We don't see development changes in prod.
There was one stream, I don't know, a week or so ago where people were horrified that I was logged into prod to mess with nginx config.
But it was the only way to get a short feedback loop.
gtfrvz nginx is safe
I was running nginx-t, not just blindly bouncing the server.
gtfrvz reload all day
I need to call stories.storiesCount.
03:03:26Yeah. You know, I'm just a little paranoid about nginx because I don't write so much that I can feel confident in it.
...41You know, this time it might be heinous inline partial getting me. And so that's why I've been manually calling nginx-t to test.
03:04:03So for folks who know Rails and are puzzled why I'm doing this nonsense, it is because we have a piece of code called heinous inline partial that does heinous things to keep performance good. And it does mean that there are a handful of things that I can edit that in templates that don't properly do this. All right, so I should be seeing this, and I'm not. OK, so it's actually printed here in the CSS or in the markup. But where does it appear? It's this icon? That is not the merge icon. Oh, I get it. It's the merge icon with a three on top of it. Cause I'm, I'm putting text in there instead of, all right. I was thinking I was confusing it with the tiny avatar for the submitter. So I didn't visually recognize. All right. All right.
03:05:34Now I've saved the file and I'm seeing the old version. Oh, there it goes. That's not better because I said open span instead of close.
...58The bold is a little much.
03:06:12Spacing is a little wide too.
...21Alright.
This guy has padding to the right of it.
That's why that's wide.
So that merge icon gets used down here in the comments.
I'm trying to find an instance of it.
But it's not showing.
But it should be in here, I thought.
Oh, yeah, here we go.
It's left.
I always look in the wrong direction.
It's funny.
I read the site so differently as a moderator that I almost don't know the regular UI sometimes.
If this icon moved
twitchtd got a stupid question cause I just came back from being afk, do you even need a story count for merged stories? I feel like the merged stories under the main story is easy to interpret
Well, that's the exact thing I'm going to mess with next stream, so I will leave that alone.
What if I just moved that?
03:07:26So it's not a dumb question, and I'm glad you asked it because I didn't explain it. All right, that's fine. And that's nicer. So it's mostly for the lists of stories that I'm doing this. It's actually not particularly useful on the single story view, but it is consistent. And so the direction I'm going is that this top headline that appears on the story page may not be one of the exact headlines there. And I want to repeat this list detail down in the comments to split up the comments by which one they're replying to, because people are finding that confusing. And then this overall thing is going to change. So this is just kind of the small first step, because there is lots to do, as you can see from the plan.
03:08:38And I don't think I even listed it. I guess this one goes onto the metadata, but it wasn't broken out as a specific task. All right. So Hunter was, yeah, we don't need the browser. Gonna commit. So what did I touch? I touched padding, counter cache. That's a weird indent.
03:09:19So something in my Vim setup is really, yeah.
...31Tab stop of eight? It's something weird about HTML. I'll have to tinker with that some more, because that shouldn't be anywhere. Since I did that, let's bounce the server so that all of the heinous inline partials are updated. Because otherwise, I get that as conflicts into everybody's diffs, which makes nobody happy.
03:10:08So this is the one I edited, and then this is where it gets partialed into. My view is up to date. This is the migration I wrote, which is fine. This is the schema where there are the car set changes that are spurious, but that one's not because that's the migration. So that's everybody I actually want to commit.
03:11:07And then this, I'm going to just revert. All right. So I am going to hit the button on deploy. And we are going to see whether my migration decides to blow up in prod, which I don't think it will because prod is happy about solid cache. Whatever that solid cache issue I was seeing seems to be specific to test. I just don't want to beat my head against that on stream because as you can tell from folks getting quieter, when I get deep into code, there's not a lot to talk about.
03:12:01I should just, you know, so one hassle I've had is with this list, I've been maintaining it in my Scratch. I'm going to open an issue about this. There we go. All right, so the migration is running. And let's go to. Issues, new.
...53Hey, it blew up in prod, great. All right, let's finish this. Prod's not down. When migrations fail, they just stay on the old version of the code base for a minute.
03:13:38Not author, submitter.
...49What else was I going to fix?
03:14:14So let's put that first, mostly because I started it first.
...26And this is design. This is definitely not good first issue.
03:15:26That's I don't know the issue number.
03:16:30Let's assign it to me just to say this a few ways. You know, I said my to do list, but someone might help, especially Rahul. I don't want him to get distracted. All right, so now that resizing the terminal is throwing away most of that message. Totally readable error message, right, Ansible? Connection not established, connection refused. unable to connect to database server what are you unable to connect to the database server all that ansible and what it's running is git pull and bundle exec rail rails db migrate i mean effectively on other deploys it might also run bundle install or assets pre-compile but database isn't down right so it's not down i would be getting paged so it's not down this feels like it's mad about something in the config it's actually not so it's nothing about the thing being done it's it failed somewhere along the way and it didn't notice that it created a last comment at in prod i'm making sure there isn't anything else off all right so let's go look at prod
03:18:22So stories does have a last comment that field and does not have our new stories count field.
...36So your migration name is. This.
...59And pretty easy to tell that it's not in there because it starts with 2025. I hate insert syntax. Is it version values like this? OK, I got it. All right, so now I run the migration. Will it blow up again? Why are we blowing up? Unknown column S inner merge story ID. Did I write that migration wrong? Because I didn't copy and paste. And every time I don't copy and paste, I get something wrong.
03:19:55Yep. Typo right there, that enter that I kept doing.
03:20:07Of course, I just fixed that on prod, didn't I? Let's run it, and I'll do it again on local.
...22It's correct local? Where did I just edit?
...32I must have done local. Yeah, so I don't log into prod. That's a lie. I log in all the time. There's a lot of stuff that just happens in the logs.
03:21:03Now what are we mad about? Duplicate column name stories count. Because you ran, but then you didn't
...25So these Rails migrations don't always run in a transaction. It depends on the database when DDL and table level migrations can happen. Good. Good. All right, so that's deployed. Just bouncing Puma for that. Because we do have to bounce it, not just reload it for the schema. And then that will appear in prod. It may even work. Oh, god. There has to be an award for, Peter, you tried to deploy code without even running the tests. I feel pretty good about the tests, because I didn't add any for this title. Standard RV because it ran. Why do you think that hasn't run locally? Because I edited... Oh, God.
03:22:46Rails is punishing me.
...54twitchtd yolo changes :)
So did it run or didn't it?
Yes, it did.
Is it in the migrations table or not?
03:23:13Yes, it is. So are we happy now? why n no because test is messed up did i not run db reset you have one pending migrate it's not pending Shut up about pending. I ran it. You liar. And if I run it, you just blow up your shit.
03:24:48Why is Rails trying to talk to a SQLite database like it's MariaDB? And it's not because it's going through the SQLite gem. Maybe I have something weird in my local database.yaml.
03:25:20now they're each labeled as being trilogy or sequel light three i'm gonna fight with that later i'm gonna take a break that's done all right i'm gonna wind this down no last questions or anything
This has been Lobster's Office Hours.
twitchtd thanks for the stream
I will see you all Thursday for the next usually scheduled Lobster's Office Hours.
That is 9 a.m. Chicago time and a different time in other lesser time zones.
Frici Take care pushcx ! thanks for the office hours stream, catch you on thrusday ๐
Thanks for folks who hung out and asked questions.
It is always nice and improves things.
I will see you on Zulip maybe or I will see you on IRC or I will see you on the website or I will see you on GitHub.
I especially hope I see you on GitHub, because obviously I could use help.
All right.
MutableHuman baai
Have a good one.
Take care, folks.