Invading Russia in Winter
Streamed
Docker dependencies PR and the mystery of clang. Fieldset and legend PR. High contrast arrows PR. Tag list PR with accessibility improvements. The popover API, widely available baseline, linting, distrust of js dev ecosystem. Daydreaming about writing a programming language and web framework; Domain specific languages vs macros. Ruby drama continuing weekly for six weeks. Reorganizing the profile settings page. Limiting username changes (1y) and reuse (5y).
scratch
topics
PRs
fieldset and legend https://github.com/lobsters/lobsters/pull/1792
high contrast arrows https://github.com/lobsters/lobsters/pull/1780
divider_tag https://github.com/lobsters/lobsters/pull/1806
tag list https://github.com/lobsters/lobsters/pull/1800
vote hydration https://github.com/lobsters/lobsters/pull/1748
backfill mod data https://github.com/lobsters/lobsters/pull/1805
issues
filed HatsController mod https://github.com/lobsters/lobsters/issues/1807
tags field again https://github.com/lobsters/lobsters/issues/1801
failed jobs queue
telebugs reporting from failed jobs
specific missing comment that was reported
file or fix rest of the failed jobs
clang dep for docker https://github.com/lobsters/lobsters/pull/1808
if time: more headline work
actionmailbox exception:
Type TypeError
Message text must be UTF-8 encoded; got ASCII-8BIT!
/home/deploy/lobsters/shared/bundle/ruby/3.4.0/gems/commonmarker-2.5.0-x86_64-linux/lib/commonmarker.rb:21:in 'Commonmarker.parse'
/home/deploy/lobsters/releases/20251117214446/extras/markdowner.rb:39:in 'Markdowner.to_html'
/home/deploy/lobsters/releases/20251117214446/app/models/comment.rb:333:in 'Comment#generated_markeddown_comment'
/home/deploy/lobsters/releases/20251117214446/app/models/comment.rb:275:in 'Comment#comment='
/home/deploy/lobsters/shared/bundle/ruby/3.4.0/gems/activemodel-8.0.3/lib/active_model/attribute_assignment.rb:69:in 'Kernel#public_send'
/home/deploy/lobsters/releases/20251117214446/app/mailboxes/inbox_mailbox.rb:7:in 'InboxMailbox#process'
second actionmailbox error:
Type NoMethodError
Message Can not decode an entire message, try calling #decoded on the various fields and body or parts if it is a multipart message.
/home/deploy/lobsters/shared/bundle/ruby/3.4.0/gems/mail-2.8.1/lib/mail/message.rb:1895:in 'Mail::Message#decoded'
/home/deploy/lobsters/releases/20251023174351/app/mailboxes/inbox_mailbox.rb:22:in 'InboxMailbox#required_info'
/home/deploy/lobsters/shared/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:361:in 'block in ActiveSupport::Callbacks::CallTemplate::MethodCall#make_lambda'
send webmentions:
Type ArgumentError
Message wrong number of arguments (given 0, expected 1)
/home/deploy/lobsters/shared/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/core_ext/object/to_query.rb:14:in 'to_query'
/home/deploy/lobsters/releases/20251111162914/extras/sponge.rb:189:in 'Sponge#fetch'
/home/deploy/lobsters/releases/20251111162914/extras/sponge.rb:260:in 'Sponge#fetch'
/home/deploy/lobsters/releases/20251111162914/app/jobs/send_webmention_job.rb:72:in 'SendWebmentionJob#perform'
title
post-stream
fix archive pages
Transcripts are generated with whisperx, so they mistranscribe basically every username and technical term. They're OK but not great, advice appreciated.
Recording
01:59Shovel shit.
pushcx Drop questions in chat anytime!
But then we all get to enjoy a nice garden.
So should probably rig up some kind of bot.
I think the IRC gateway is not protected by an API key.
I took another run at contacting Twitch employees, and they were like, well, it's just kind of the
Same tier one support thing of, well, what if you used a less secure thing, then you could pass the verification.
Well, then it would be less secure.
No, I'm not going to pay five or 10 bucks a month for the privilege of streaming basically one day a week.
Come on.
All right.
03:03I don't have, all right, let's get the scratch file set up. Kind of a late start here.
...28We did that now. All right. Topics, title, post and stream, or any old topics or PR and issues. And then I was working on. Username UI and story merging UI. I've been because we've had so many excellent contributors on bug fixes and things, I'm kind of shifting into just doing high-level user features that touch on sensitive moderation issues, which is a really great way to use my time, actually. All right, so let's take a look at pull requests. I saw that Chael, who hosted this stream last week, responded a bit on her PR. And then otherwise, FedEmp replied on these things. He's got a lot open.
04:39What happened two days ago? Oh. Well, skip this PR is pretty short, but of course I'm not capable of skipping anything. I have to look at everything.
05:14OK, sounds like she wants to. Yeah, she moved it back to draft, but I'm really curious because I asked a bunch of question about why does. Why particular components were there? Like what is clang for?
...34And then passing in the make file. Wait, make file?
...46Why is there a... Why do we have a make file? I sure didn't see this.
06:05This must've been part of his pull request related to adding Docker. Yeah. I remember this commit.
...29Epic_Ninja_Elephant Oh hai, happy Thursday!
How strange that Docker depends on make.
Hey, good morning.
yeah it's a good one but it's a busy one for me it's you know there's parkinson's law that work expands to fill all available time have like chores of expand to fill all available time and it's like the adult chores where the bank is like
Here, we're going to mail you a paper letter.
Jump through this hoop to do blah, blah.
Epic_Ninja_Elephant My day is just winding down. My partner is getting ready to cook early dinner.
And it's just like, great.
All right.
So all I'm doing is losing 60 minutes chasing paperwork and then putting something on my calendar for three days from now to make sure they accepted the paperwork and all that kind of stuff.
You must be either you are living the dream or you are very far east of me.
Congrats.
I run south.
Huh.
08:18Epic_Ninja_Elephant I am living the dream very far east of you.
Well, congrats on living the dream.
Yeah, you know, I gripe about chores, but I have a pretty good life.
And I am currently... Oh, big boy.
I am currently sharing the desk with a cat who is living an even better life asleep in the sun with his tum out.
Yeah, big guy.
So this is going to be a stream where I don't use the mouse much because he's kind of got his big butt over to it.
And then he gets antsy if I touch his butt.
Things we do, right?
10:11Did she leave? In my email, I thought she left. Okay, I guess that is three comments.
13:19I don't know how to say that better. It's a little tricky to maintain something I don't know well, so I should probably learn Docker a little better at some point, but honestly, seeing the dev containers thing puts me off from it because it feels like the tooling is in a more immature state. One of the reasons I've stayed away from JavaScript and Python is just how much churn there is, especially around packaging. It's just kind of like, all right, well, I don't want to waste my time here. This is not the thing I want to follow closely and put a lot of time into marginal improvements. I will wait till they sort themselves out.
14:38Use one list element to group them all.
...45Epic_Ninja_Elephant I feel like people drooling over containers just don't know system administration. I have nothing polite to say.
Federico has
A lot of ideas about I think that's maybe a little uncharitable about drooling over containers.
You know, if I had a magic wand
My solution would probably look more like some kind of declarative package management.
15:27But I do see the value of containers. They're just the learning curve that its users have gone through of Like every project goes through this phase where it's seen as the magic wand and then there's a lot of like oh it has these drawbacks and you know the one of the ones I saw go by with containers was. figuring out that you really wanted to keep them small and I don't remember what they call the checkpoints for when you mutate things in the steps that you know you want to keep those small and maybe common between your containers but.
16:16They do solve a real problem, especially for folks who don't run a UNIX OS.
...30graefchen Hewu do ~ limesHi
Why?
These are tag underscore, aren't they?
Hey, Griff.
...46Oh, yeah, OK, these are underscore.
...56Actually, wait, what is this? The ID is tag. Why add an ID?
17:22Because I'm not seeing that he's using it as an anchor, is he? Oh no, okay. Tag, dash, tag.
...45Fixing the display. I swear, someone early on at GitHub must have been really into Python. that showing whitespace diffs is the default. And seeing that
18:25So we have a tag dash title. What help is this? tag link, this is going to break everywhere, isn't it? Because that's the helper. Yeah.
20:17So we're adding that div.
...31There are like three different things rolled into this PR.
21:07Yeah.
22:23It's the polite way to say, yeah.
23:52graefchen Adding Accessability is always great. limesComfy
Oh, yeah, so here's a standalone change.
Yeah.
24:12Great.
...36Let me just... This... Did this button text change to say rebase and merge? I swear it used to say just rebase. The description is the same, and it's what I want, but why is the word merge there? Because if I rebase, it's literally not a merge. There is no merge commit, like it's conceptually a merge. I don't know. This is one of those like, you have to be very deliberate about changing core UI like that. And GitHub has really lost my trust in the last year.
25:48Current patient production on page load, Olga said, leaving form entry. Comments selected, radio button. Proposal on page list says form search. query entry, the field is named query, so that's fine. I tab into the radio buttons, it says search panel, comments, selected radio button.
26:39All right, let's...
...50Let's fetch that.
I want to see this because FedMP has made a number of contributions, but there have also been kind of loose ends and details, and we don't have any JavaScript testing.
We don't have anything like visual snapshotting
graefchen What I also found interesting is that on one website by a blind person (they have gone more or less *viral* on lobsters for there 'i want to love linux' blogpost) and how it is only text, which I later then realised that it was obvious. limesO
So I have to put eyes on more of these.
Let's look at the diff again.
Some comments aren't visible on the classic files changed.
Switch to the new experience.
Been so burned by GitHub.
I do not want to see a new experience.
28:28Ah, it says search query because he added a label.
...56Why did div get deleted? Ah, the box line.
29:57Okay.
30:10Okay.
...51Yeah, breakpoints.
31:12SVG can't be modified if not inlined. What if we ditch the image in high contrast mode and just use CSS generated? For context, I mean high contrast by OS, not from site preferences. Again, with this distinction.
...39But can't read anything in order on GitHub.
...54Thank you.
32:39Grafchen, yeah. Makes you wonder about Dan Liu, right? I'm just teasing. Dan Liu has a popular programming blog and is very opinionated about having minimal styling on it as opposed to any kind of like max line width.
33:07It's a meta-conversation that comes up almost every time this blog gets posted.
34:02Let's grab this.
...19I got to come back and look at these PRs between, because especially now that one person has like four open PRs and I'm asking kind of, The same questions repeatedly I need to shorten the cycle time on these so I get answers and get these things merged because. One thing i've really learned in the last year is the longer PR is open, the less likely it ever lands.
35:00So what's so there hasn't been any changes in the last fuck pending again. Do I have GitHub, you have to tell me I have forgotten these comments.
...59graefchen Dan Luu's website just looks like a average maths prof. website limesGiggle
It's literally been hanging out two weeks because of that GitHub UI.
That's kind of fair.
I was looking at the... Who is he?
Benjamin Pierce's book on types.
And he's a CS professor, but...
Honestly, there's only a distinction between CS and math for historical reasons.
And it very much has the I coded this myself in Emacs vibe.
36:50chamlis_ heyy, types and programming languages
olexsmir i coded it myself in ed type of vibe
Okay, so there hasn't actually been an activity there.
Yeah.
Yeah, Chanlis, I've been daydreaming about writing my own programming language.
And I guess what I mean by daydreaming is taking the notes I've been writing for years and organizing them and thinking about whether it's worth a multi-year project
37:32pushcx https://cs.lmu.edu/~ray/notes/l…
Along those lines, and speaking of computer science professor websites, I found a very good one on language design.
I hadn't seen this before, but did I submit this to lobsters recently?
I should have if I didn't.
Let me check on it over here too.
Firefox, what are you fighting me about?
38:16I did not submit it. Oh, let me.
...32unless i did but there was an issue with this tilde because i'm thinking of where i copied the link from and i was talking to someone who had a hassle with the encoding great all right so submitted
39:12sir why so mournful i don't know if you can hear this but the big boss is prowling around very loudly anyways the distractions of things like submitting links to lobsters aside this is a really useful long page with
more design than most professors but it talks about hey here's some things you should know about programming languages if you want to design your own and then here's some more things to study and then here's a set of questions you should ask yourself about
your parser, your intermediate representation, how you handle lots of things.
It's full of interesting questions to consider, and I really, really liked this page.
I have only spent, I don't know, a half an hour with this page, but if I was going to get serious about designing a language, I would absolutely just
copy and paste this list of questions into my notes and come up with an answer for each of them as part of making the first draft for a language.
olexsmir it looks like good start for designing a language
There is reading this was kind of an unending set of like, oh, yeah, I remember learning about this when I learned a programming language that did it differently than I'd ever seen, or when I've
did basic language implementation in college or when you know i played with racket or when i played with haskell or when you know it's just there is so much good stuff on this page that's one of the best things i've read about programming in a hot minute anyways glad i remembered that to come back
Why did this show is having activity in the last two days if nothing has happened?
chamlis_ do you have some bold ideas you want to try out or is it more you'd like to round off the rough edges from existing languages?
Because who knows with GitHub?
All right.
So I'm going to try something and just delete that bookmark and use this one.
Speaking of polls, let's delete that one and that one so that the first thing is poll requests properly sorted.
42:07graefchen I am going to save that link limesNoted
chamless no it's it's bold ideas i'm i may have given this rant on the channel like a year ago but i am really you know there's there's a saying in military history that's something like you know the classic blunder of invading russia in winter because
A number of civilizations have attempted to invade Russia in winter, and it really never goes well for anyone.
chamlis_ something something land war in asia
Russian chart.
There's the famous image.
pushcx https://socks-studio.com/2014/0…
Yeah, here we go.
That, yeah, something something land war in Asia, because there is a lot of Asia.
So this is just a classic infographic on when Napoleon tried it and the width of it is the size of his army.
And so this big ass army sets out.
This much smaller army reaches Moscow and this greatly reduced army makes it back home.
So time kind of runs left to right and then changes color and runs right to left.
Which, because it's all overlaid on a map, you kind of get it.
And then he compares these dates on the way back to the temperature.
Because, well, the short version is a lot of people died crossing rivers.
So I think in the same way that invading Asia in winter is a mistake,
Writing a programming language that is perfect for your one problem is a classic blunder in computer programming.
olexsmir as Ukrainian i can confirm that winters in this part of Europe are brutal :)
And I want to do it.
So my justification of why it's different this time, which is the classic phrase from finance,
graefchen I would disagree with that programming language stance. limesD
It's different this time because I want to make a web framework that scales down to shared web hosting, to bargain basement $2 a month shared hosting.
And
chamlis_ the PHP backend
take on wordpress which runs more than half of the web and is very long in the tooth and secondarily i also want to replace high level frameworks like rails because i think if you do the low level thing you also solve a lot of the problems we see at scale with
popular web frameworks like Rails, Django, Laravel.
olexsmir sounds like you might like go :D
Yeah, Gravechen, I don't want to rabbit hole too much, but I think that's part of why Nix has, I'm picking my words carefully here, why Nix has had so much struggle and so little adoption.
is a very academic thing to do when writing one's dissertation that you write the programming language you want to solve the problem in and then you solve the problem and that is very much what happened with nix haskell exists literally to stop people from doing that and nix went ahead and invented its own declarative programming language that looks very much like haskell anyways and it has held the link the
whole operating system and tooling back enormously in my view because there is so much more work you have to do to maintain a compiler in a language or an interpreter and write documentation for it write tooling write editor integration and syntax highlighting and all of these things
46:54graefchen I disagree mainly because of Domain Specific Languages. They are fine. But they 100% are not like generic languages. limesLurk
And I haven't just seen it with nix there's a bunch of things i've even seen in commercial projects.
47:07yeah and I think domain specific languages, I think there is a lot to learn there.
One of the reasons Ruby has done very well is that it's well suited for creating domain specific languages.
but until the last year has not had macros.
And if you have macros, you can break the surly bonds of your programming language syntax and do all kinds of wild, surprising things.
And then you're off into the Lisp and Scheme territory, which is beautiful in its own way.
But one of the reasons Lisp and Scheme
As lovely and satisfying and mathematically pure as they are, one of the reasons they have not succeeded in industry is you end up with a programming language for every program.
And that's very painful for long-term maintenance.
You end up with these incredibly beautiful jewels, and the second the original implementer leaves, you can't maintain it.
olexsmir yeah bus factor in lisp projects
which is why all of these list programs in the 2000s, like Reddit, like got acquired or did a fundraising round or got some amount of traction and immediately rewrote away from the Lisbon scheme.
There are some other things about the runtime, but I think it is very valuable
A big chunk of where I'm putting thought into in the language design is how do you get the really good parts of supporting domain-specific languages without the bad parts of macros?
Because I know there's all these things about hygienic macros and specific implementations and all these kinds of things.
But when I'm saying the bad parts of macros, I mean the part where
you don't have an expressive API, you have a whole new programming language.
And all of a sudden, every program has its own programming language.
And that's...
I'm keeping this graphic up because this is what you look like is, you know, you set out with all of this energy and by the time you get to a self-hosted compiler, everybody's dead.
There we go.
50:15graefchen Sometimes restricting the programmer is better for the programmers sake, even if he does not know. limesO
an even best case scenario where I actually have, you know, so let's assume for a moment, let's grant me, oh, Peter has come up with and has correctly invented an interesting place in the language design space that is not well explored and he's just ignorant of why it failed, right?
Let's imagine that I'm right.
which is a big thing to grant me.
Well, great, creating a language just is, you know, a full-time job for one to four years.
And then after that, I get to start on the web framework I want, which is another full-time job for one to four years.
And, you know, realistically, these things overlap and one feeds the other.
But it's a huge thing to take on.
And it's very tempting.
But it's also very daunting.
And obviously, one of the contributors to wanting to do that is the latest round of stuff happening in the Ruby world.
And
olexsmir ruby drama never ends?
Since I am moderating lots of conversations about those events, I have tried to stay out of it.
But we'll see how that goes.
51:59Okay, so when it says two days ago, it's actually three days ago.
Ruby drama never ends.
Kind of correct.
graefchen It is complicated. limesO
There's... Yeah, I'm gonna stay out of saying my personal opinion on events, but the short version is if you look at the Ruby tag, we've had one big merge story every week for the last,
Six, I think, and I do not expect it to stop anytime soon.
53:37Yeah.
I don't know, Ruby.
So let's look at this PR.
graefchen In better news. Yesterday we found something in the daub we are sorting and it looked like straewberries, but apparently its peach cores, but it is still *exciting*. limesYay
Or actually, no, this is the issue about the popover API in older browsers.
Oh, actually, Chamlus, that's probably interesting to you.
You were involved in our decision to adopt the widely available baseline, and it came up here because we shipped a feature that did not meet the widely available baseline.
chamlis_ that's a shame
on older browsers it immediately blew up and this one person filed but i want to say i heard about it from two more people because you know sometimes people just dm me on irc or they email me rather than filing a bug and yeah it is a shame i really liked the look of the popover api and i would like to use it when it reaches widely available
But this kind of broken display is very broken.
And...
55:22The thing I find myself wishing is that there was some way...
That we could link or test our CSS to know that we are not leaning on any features that are not widely available.
and The data is there in mdn and can I use calm.
chamlis_ eslint does it I think
But i'm not aware of any tool that attempts to do this.
chamlis_ but that's an npm dep
and
Even if there is one, it's almost certainly written in JS because people keep writing CSS tools in JavaScript.
And yeah, there you go.
You're 10 seconds ahead of me.
It runs immediately into my distrust of JavaScript and NPM and how much pain I've had there.
57:28chamlis_ I might try and set it up for a one-off scan, even if it's not in CI
graefchen I like js, but i sure as hell does not like npm, or strictly other package managers. even if I need to use it more while I want to lear vue. limesSit
what's the polyfills man teaching the dictionary a lot of jargon today chamlus yeah you could take a run at it but
58:02I'm kind of thinking to myself of like, well, I have kind of joked about writing a Ruby linter just for the of CSS for the tab indenting thing that comes up like 25% of pull requests that touch CSS.
...27If ESLint would handle that and this foot gun where like reading between the lines on Federico's comments here, he sounds justifiably pretty frustrated that the work he put into implementing the Popover API got reverted. It's just frustrating to throw code away for a misdependency. And I care a lot about not frustrating and burning out contributors because they are so incredibly valuable. Are they more valuable than me getting frustrated and burned out by node issues?
59:21I don't immediately know how to make that trade-off.
01:00:57Yeah, the gear has not turned this crap off.
01:01:16Nice CSS there, GitHub.
Everything is so React that I can't actually target shit.
This is how you end up with your site.
See, the thing is, if I hit create on this, which is the default thing to do of, Jesus, get this landmine out of my face, then the page is going to break when they reorder things or they add another div.
Epic_Ninja_Elephant I always have to use Preview these days.
And they're going to be like, oh, we're mad that extensions are breaking our site.
No, your lack of semantics broke your site.
01:02:14like these two dumb identifiers they're going to change these three days from now when they build and my rule is going to break and i'm going to see the landmine button again fingers crossed for east river source control and flirt right why did this say updated if it wasn't updated github
...59Shit. This one's wrong.
01:04:05chamlis_ here's what I got https://pastebin.com/WWN68gq1
Where was that commit?
That was this.
...34Yeah, my spelling is pretty bad this morning. You can tell I'm burning the candle at both ends. All right. So what do we have? Can I?
...58I was hoping that would increase the width.
01:05:08Oh, ho. Oh, Chambliss, that's excellent. Honestly, that's exactly the kind of build feedback I would like to see because that's the kind of thing I can put in continuous integration and in the instructions and Someone gets a reasonably clear error message if they open a PR and this fails.
...44That's great.
01:06:05chamlis_ I haven't managed to get it to parse the multiple stylesheets so there's a bunch of missing variable errors as well
Missing variables.
Oh, it's...
...18chamlis_ (it doesn't see the --color-* variable declarations)
It sees them separately, and so the ones that... Yeah, I follow.
I wonder if it would work if you said, like, cat...
the style sheet with the colors, space, application CSS, pipe, ESLint.
Because then you're just running them together.
I mean, you'd lose the line numbers, which is pretty dang handy, but I don't know.
Or maybe just name multiple.
In any case, that is nice.
01:07:03i realize i'm being inconsistent but boy do i want to let those sleeping dogs lie what is position try used for the streaming setup i can't horizontally match these things
...38Huh.
The line numbers are already wrong.
At position.
chamlis_ oh I might be on an old commit
There is no instance of position try.
Is it in a... What am I missing?
Ah, you're on an old commit.
Oh, I bet you're on popover stuff.
Right?
The...
01:08:29Yep, that's what it is. So that's a kind of a accidentally very vivid example of how this would have been a benefit because it would have immediately caught the issue that broke the page layout.
01:09:037.58, we might open.
Story content open.
Oh, this is the detail summary stuff.
That's also a recent addition from FedEmp.
Let's user select.
chamlis_ :open being that new is really annoying
Preserve selection mode elsewhere when clicking.
Yeah, I wonder if instead of using colon open, we could use colon visible on something.
Maybe that's new too.
01:10:02chamlis_ or maybe foo[open]?
Maybe it's not a thing.
Focus visible.
Maybe I made up a pseudo selector I'd like.
Yeah, I think I'm just daydreaming.
Visibility visible is current aligned.
No, no, no.
Where's the...
...32No, this isn't even what I'm thinking of. Maybe it flew open? I couldn't tell you.
...55Text size adjust and resize.
graefchen css do be cool. but also hard limesFeels
Oh, that's a weird one.
I think of that one as having been around for a while.
01:11:16Big Sur.
...35I think we're gonna get a treat here. Let's tweak that. I feel like I should play God Save the King or something, because here's the boss.
...57He finally decided to join us.
01:12:05So there actually weren't really issues to do.
So I could look at the username editing UI.
I should probably mention that this is going to be a short stream because I got so much going on.
So just to reiterate, this is the Lobster's office hours.
This is Lobster's.
You can throw a question in chat anytime about the site or the code base.
And otherwise, I just work on it.
dlamz random question, is the lack of pagination on the user comments page intentional?
And you can look over my shoulder as I spell things wrong and make very easy typos.
...42It's kind of not, but everybody is used to it. You're thinking of slash username slash threads. The way it displays threads, queries and arranges them is pretty old and predates me using recursive common table expressions because it predates MariaDB supporting them well. And I have wanted to change that page a couple of times, but what's happened is people have settled into reading their own threads page to catch replies or growing discussion out from their comments. including sibling replies so oh all right short tenure there sir big baby he is so fussy this morning thank you sir
01:14:35Okay.
01:15:23So this is so what am I what is my goal here with the username ui so a recent change was kind of fixing our data model around usernames and keeping track of old ones.
...48And I think I want a couple of things, the first one is. I don't want people to be able to rename to a username that was used in the last year or so. I think also I want a cool down on changing your username of something like a year.
01:16:34yeah and i think also i want to like it is a little silly that username is literally the first thing here it's paralleling the public profile but how often do you change your username the answer is you don't or 98 of users
01:17:07Should I make a username controller? Is there enough functionality? It's a little tempting, but I don't know.
...26The way password is shoved into this form is also not great.
...41So this is not generically, this is not account settings. Wait, where is this? H1.
01:18:21Oh, it's the title getting printed. So let's get rid of that. We'll do it inline so we can get the layout we want, which is this is your public profile. Better? No. That doesn't match with the subnav. We want to change this to profile information.
01:19:11And then username can stay put. Let's get password off into its own field. or its own form, which yeah, all of these things are one big form.
...56I'm going to roll the TOTP stuff in.
01:20:11wait there is already a security section setting what form is this under under the same one of course all right fine
01:21:04Let's see. This is so split up.
...25I really like having the word public there. And then isn't there a show my email? to other users setting? Yes. This one should come up out of miscellaneous and go to the public profile because that's what it's about.
01:22:02In which case, this is semi-public profile. Close enough. Is the about thing so short? Because it's just a default size, isn't it?
...35Let's encourage people to write a little more. Where's my height? Sir. I'm not helping, sir. Fuck, I turned this shit off in a personal browser.
01:23:09It is really obnoxious that they didn't put any user config on these things.
...31Buddy, you've got to stop because I have to use the crappy interface that requires a mouse. Because, you know, it's always a good sign when you have to force people to use these features. That means they're really wanted. You have to make them hard to turn off. That's how you know people want them.
01:24:21Where'd that link preview go?
...39Sir, you have to leave the microphone alone.
...48So if you're hearing awful noise, that is the cat trying to rub himself on the microphone.
Sorry about that.
graefchen We most make the investors money go stonks (📈), even if the user does not want it. limesHeck
Sir, you have to go.
You cannot be fighting me and biting my fingers for another 10 minutes.
01:25:15Yeah, I don't know. It's funny with Firefox because theoretically they don't have to worry so much about number go up. Page ass. Okay.
...48I think they're just so fucking excited about, oh, this is the next big thing. Weird how user enabled defaulted to true. I sure as fuck didn't enable that. Oh, maybe this. This is why tabs were opening in the wrong place on the last stream. Could be. All right. All right. Big distraction is gone. Thanks, Firefox. Your AI features saved me negative five minutes.
01:26:33Why is my height not applying?
...49I bet, you know, I see this event. I bet it's the, yeah, the auto size stuff.
01:27:01All right, fine. Let's just leave it alone. Let's not rabbit hole.
...14So if that's going to be there, then the avatar wants to come up. Yeah, because all the external accounts are linked there. Those are each their own forms.
...52graefchen "Ai" is exciting... it is just that how they are corrently enabled by the large commercial and non-commercial companys is more than extreamly lacking, if not outright harmful to their business. And yes; I have very strong opinions about "AI". limesSip
Put it under the home page.
01:28:12Yeah. There's a lot of that who wanted it like this. And have you thought about how this is actually going to be experienced by the user?
...29And it becomes self-reinforcing, right?
I have put up with so many terrible AI features that just out of hand, I'm immediately ad blocking them off of GitHub.
And well, that's a separate reason actually.
But immediately turning off all this stuff in Firefox is because I have a year of experience with terrible AI assistant features and none of them do anything useful and they make shit up.
their pros is like running a cheese grater over my eyes so i don't actually have any patience for such a high intimacy ui like my browser putting in those features just
olexsmir i tried liking ai, but i just cant
no you haven't everything has told me it's going to be terrible and destructive and useless and waste my time i'm not even going to give you a shot the github thing is mostly it's not just that the code is mid at best it's i care a lot that the copyright status of
LLM output is unsettled.
graefchen I like AI, depending on context. But commercial LLM's ain't it.
It is the subject of massive litigation by
giant behemoths and while it is you know like big companies like Microsoft have put so much money into it and so publicly declared that they're using it in their core products it's hard to imagine that they would allow their copyrights to their own products get lost because so to make it concrete they've said oh yeah we're vibe coding stuff on GitHub we're vibe coding stuff in Windows
olexsmir i feel like windows was vibe coded even before ai
if they lose the ongoing court cases and it says yeah the the people you scraped for training data own the copyright to your output or have some interest or some legal claim on it it is hard to imagine microsoft allowing someone to have the copyright to windows or github or losing that ability so they would probably want and i'm going to be
Let's not be super cynical about politics, right?
So they would pull out all of the stops, use all of the big company resources available to avoid that fate of losing control of their core products.
But that's a multi-year project, and they can afford billions in hassle about that.
I can't.
01:31:56I didn't do what I wanted. These other ones were spans.
01:32:07Still didn't do what I wanted. With these in a span together, yeah.
...24That's reasonable.
...36You know, I didn't catch it before, but we're not consistent about e-mail or e-mail. e-mail is the very 90s way of branding it. We do not have a style guide, huh? All right, so 50 for e-mail, 367 for no-email. Sounds like no-hyphen is more popular.
01:33:15I will have to make that a separate commit.
...32you know email address who calls it an email address anymore now we just call it an email you
01:34:09I came in here for username and I'm fixing a bunch of other stuff.
...21I'm throwing on that banner because I'm going to wind down in the next, let's call it three, four, five minutes here as I get this stuff tidied. I'm going to add that alias, one of these months. All right, so that's all sorted out.
...52I can revert that.
01:35:17I didn't actually do the functionality I wanted related to the username.
...35One of the reasons I want to write a web framework is to have a proper form object that has validations on the form. because that's where the validations belong. You should be validating the transformation, not the model. The model should never be in an inconsistent or an invalid state, especially by taking user input and slapping it onto the model.
01:36:32But that's a talk I gave 10 years ago.
What did I call it?
The scary land of uncertainty?
Yeah.
pushcx https://push.cx/talks/kcdc2016
That's a tags box.
It's the last, I don't know, 10 or 15 minutes of this talk, if anybody wants to see it.
You can just look for a slide that says something like scary land of uncertainty.
Did not get that one to catch on in Rails, obviously, but still mad about it 10 years later.
Still thinking about making not just a web framework, but a language to prevent that kind of thing.
01:37:27Also a language to prevent this kind of, well, you can create an object or you can create a function or, or
...43And you know when you apply it to a field you're not applying it to a field, because that's not a separate object. you're applying it to the whole model so.
01:38:42Let's learn.
01:39:09Now, it's not changed the persistence API previous. No, I don't want this ID previously changed, because that's post save. Is there an attributes guide?
...34Of course not. What's the dang function for in my validator? I want to skip this unless the username has changed.
...54Okay, it is changed. Changed question mark. Or if the changed attributes. or changes or isn't there one per attribute it's one of the holdovers from the old selectors this is what i want yeah braille says some legacy into consistencies and it's understandable after 20 years but after all the pain we went through to get the the custom finders out we reintroduced them with attributes or just kept them with attributes i'm in a very reflective mood apparently no return stop helping
01:41:35So check this. Yeah. Order by. Created at. The last one. Which is going to be. Their current username. Yeah. created at is less than or equal to one year ago. Username created equals, let's just grab this. And yeah, if I flock, I can either pluck together all of them or I can hydrate the record.
01:43:07I have a date format. Some where. What is it percent one? Yeah.
01:44:29So this is where it's not in use.
...42So the existing uniqueness validation will catch the existing one. So I don't have to handle the null case here
01:45:04There's also the question here for usernames of whether when you rename, your comments should retain their old username. It would solve some kinds of confusion, and it's probably not a change we could make retroactively. Should username changes Changing your username, replace it on old comments. I think that one might have to be a meta thread because that's such a big behavior change.
01:46:32Now, last used recently.
01:47:03That really is going to call for a test. Let's see if I broke any right off. Oh, I'm running long. Cool. Have some kind of syntax error because every test is broken. What are we mad about, Ruby?
...34I should do the same thing of
Doing a selector.
All right.
So I'm going to leave this as in progress work.
I got to roll out.
Yeah.
Let's turn the banner off for next week.
graefchen Thanks for the stream!
So next stream will be on Monday afternoon at 2 p.m. Chicago time.
I will finish this in progress username validation.
And I will leave myself a note because I can do this with JJ.
tidy profile settings validate username changes reuse oh yeah you know let's mark this as width so i don't just forget what i'm doing and rebase this on top of main
Because that's where I should be.
I'm not sure why it's parallel.
Oh, because I pulled some stuff down.
In which case, I should probably get that deploy going.
olexsmir oh i haven't thought of using jj desc as notes for future me
Before that contributor wonders why their merged PR is not live.
So cool.
Well, this has been a nice little stream.
olexsmir thanks for the idea
And Jamlist, if you feel like making a whole language and a web framework, let me know.
Because...
You seem to let me nerd-snipe you into research questions.
All right.
I'll see you Monday, folks.
Everybody, take care.
01:49:47You're welcome, Alexamir. Have fun.