Happy little parse trees

Streamed

Handling some quick fixes to fixes for comment editing, comment positioning, and parsing stopwords in the search engine. Some straightforward improvements to the PR template and satisfying brakeman. Then the last ~2 hours is starting on a long post about the UK OSA, which I finished and posted over the weekend.

scratch


topics
  comment editing fix:
    fix editing https://github.com/lobsters/lobsters/pull/1489
    position for nested reply https://github.com/lobsters/lobsters/pull/1490
  search parsing: https://github.com/lobsters/lobsters/issues/1237#issuecomment-2715482312
    https://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
  PR template students https://github.com/lobsters/lobsters/commit/b6f14008d398300236b254c06992221c8db7c28a
  fix brakeman
  fix search test
  UK OSA


uk osa:
  blu,f for lobsters

  summarize + introduce the law
    still seeing lots of bad assumptions
      international
      nonprofit/hobbyist

  explain why it's a serious threat
    jurisdiction
    ofcom can't give politically embarassing answers
    enormous punishments; proportionality hasn't been in law or guidance, only statements
    cost of litigating a defense is itself a punishment
    common misconceptions
    motivation? political power, save the children
  who's writing this summary

  why I'm dropping the block
    risks look reduced in a bunch of independent ways
    https://blog.woof.group/announcements/out-of-scope-of-the-online-safety-act
      significant number
      target market
      nonresponsiveness; not a service
    email https://www.whatdotheyknow.com/request/definition_of_email_for_online_s
    extraterritoriality
      no justification
      they won't want other countries to have this power
    geoblock

  how I'll handle contact
    reinstate block
    ofcom's threats are, by american std "illegal, harmful content" (prob kill this darling)
      jawboning
      chilling effect
      prior restraint
      unreasonable burden
      strict scrutiny
  next for uk residents
    follow neil brown on mastodon; https://onlinesafetyact.co.uik
    keep contacting your MPs
    good luck
  general attitude towards politics
  upcoming legislation:
    AU OSA
    US KOSA
    US Section 230 repeal



title
  happy little parse trees

post-stream
  Rails importmaps broke devtools js console
    

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

Recording



03:46This is Lobster's Office Hours. Lobster's is an online community about computing where we talk about writing code mostly.

04:09Occasionally I remove things that are rants about business. It's this one. This one's more about using software than actually writing software. Lines get a little fuzzy on that sometimes, especially for programming tools. If you are curious about any kind of footy lines, this is Lobster's office hour, so you can ask me any kind of questions you have about the site, or the codebase, or why I did something. I'm happy to take questions at any point. Frici Are we starting up or we muted? 🤔
When folks don't have a bunch of questions, like running queries against the production database, that's one thing I haven't mentioned in a minute in one of these intros, that I'm willing to run queries against the production database. Are we starting muted? You sure don't look like it.

05:42pushcx OBS sure looks like it hears me...
pushcx Have you not been hearing me do my usual intro spiel?
Frici oh no. i have delay instead. i can hear you after refreshing the stream
Okay, okay, just a delay. Frici I started hearing you late and then noticed i built up 30s delay
Always, always minor technical issues, that's okay. Frici and now you sound spotty
Thanks, Richie, I appreciate that you, give a heads up on these kinds of things. Yeah, the, my little bitrate graph is green, and it has the brand in Chicago, so now I sound spotty. Fuck. There we go. I actually set up for the Frici now its all good !
workaround for the buffer underrun on the mic, and then I forgot to actually keep it open. Thank you, Fritchie. I don't know where I would be without you. I would probably be, you know, an underwater robot who is also muted half the time. So thank you. All right, so yeah. Happy to run queries against the production database if that's a thing folks want to do. You can pipe up with questions about the site anytime. Otherwise, I work on the code base. Speaking of working on the code base, there is some stuff to do with comment editing fix. Shamless, I know you're usually here. chamlis_ hello!
I don't know if he's... I don't know if they've dropped in yet. But they opened their first PR against, aha, hello, against a Rails code base. So I will pull that up to show off because I really appreciate that. So on the previous stream, I did some work to fix comment editing, which was misbehaving. This is all downstream of some really hairy stuff that's hard to test because we don't really have any front end tests. And so I'm trying to improve things without breaking the front end. pushcx https://github.com/lobsters/lob…
So yesterday, for me, depending on your time zone, Shamless here opened this pull request to fix one of the bugs that was downstream of work we did on the last stream. And this has been working out real nice in production shameless so I commented that I was merging and then I deployed that immediately so that's been live for. 16 hours and nobody has been reporting bugs which is nice, besides the bug that was already there, I got one more mention of that.

08:38So editing a comment was broken oh man so. This is a really small thing, but on stream maybe two or three weeks ago, I improved the issue templates for GitHub, and now I think almost all of the bug reports have come in with screenshots and little videos and all the debugging info I made. How wild. You tell people what you really need and get a lot of value out of, and they give it to you. Who would have thought? Oh, that reminds me. I keep forgetting to mention student work in the template for pull requests, because that's been a persistent thing. Our stream supervisor is around, and he's deciding whether he wants to have the sun on his stomach in the window or if he wants to take up his perch. So we will see if we get Supervisor Cam in a minute. Oh, baby. All right. So Rory pointed out another bug. Speaking of folks who were on the last stream of the one before. So this whole thing with comment editing has really... I am not... positively, you know, nostalgic in a positive sense, but it reminds me a lot of what it was like to work before automated testing where fixing one bug would kind of ripple out and cause another two or three bugs. And then you would fix those and they would cause another bug. And so every fix took like three times longer than it needed to because you kept introducing regressions. And since I don't have a front end test suite because I've tried to keep down the amount of front end code, and that general complexity all of this has been more painful than it really should be so that that technical bet is not really paying off so yeah if it keeps up we'll have to reverse that decision

11:02Do this or. Oh, I see what you're thinking here, shameless.

...15Comments is. And you kind of. The other. Sign that we're in trouble about. Not having a test suite, is the comments explaining why something inscrutable is happening or getting bigger and bigger? I don't know. The whole direction of Rails 8. chamlis_ as much as anything I think it's that the code handling the tree structure is so far from where that structure is defined
doing more fly inside stuff is really not my cup of tea. I like the progressive enhancement style that we have in the lobsters code base and Rails is getting real far away from it.

12:20Yeah, that's fair. And then it doesn't help that because I really only want to do one pass over that comment array. Because it's such a hot path line of code it's kind of inscrutable for performance reasons. So there's just a whole bunch of complexity piling up in the God object right. Not so shocking. fall back to the top of the comments tree.

...56I see what you're thinking. Nice reuse of this brand new function. I see what you're thinking here. All right, so let's take a quick look at this. I have my Rails server turned on. Okay.

13:31I have this guy.

...43So we're going to reply. And we're going to inspect. We're going to grab this form and bring it to the console.

14:00Ah.

...09And then I can try out your line of code here.

...19OK, thanks, Firefox. Really? There has got to be a way to turn that off. Allow pasting. Thank you, Firefox. Come on, I'm on localhost.

...39Is there a, option here for turning that off? That's going to drive me nuts otherwise. Frici devtools. something
Self XSS.

15:05Frici ah you got it
Okay. Yeah.

...16i'm trying to wonder what a high number is doing here is this like every hundred times it's going to get in my face 10 years old and it's only bothering me now this is

...47chamlis_ does it only trigger once per profile? I don't think I've seen that in years
This has got to be the first time I've seen this. Yeah, if I saw it on my primary development profile, it was so long ago that I don't even remember. So what is the value? Frici maybe it does trigger only once. I haven't seen it in a while either in ages.
Has less than 10 entries in their console. Ah, OK. So that's what it's doing. It's counting. All right. So I'm going to leave that alone. Probably fine there. It's just that this is a brand new profile. Well, my personal profile is certainly older than 10 years. How long have I been using Firefox? Well, whenever the first release was, because I was using Navigator before it. All right. So... Let's get back to pasting now.

16:58Why is that function not defined? I thought that's what it was called.

17:37How is that not in scope? I'm missing something obvious here that stuff from application.js is not visible.

...59This is strange. Are any of my functions visible? No. chamlis_ my conspiracy theory is that "allow pasting" chucked you out of some scope
Because there should be fetch width. Or is the whole thing... I think it's more likely that I did something smart. And maybe what I'm forgetting is that the whole thing is wrapped up in a function to avoid polluting the global namespace. Yeah, okay, there's a...

18:44No, OK, we are just dumping this in the global namespace.

...57All right, so refresh here.

19:06Apply.

...28Yeah, it's just not.

...37chamlis_ oh it looks like it's in a module
There must be something very clever happening. Why does it look like it's inside a module to you? I don't see a module. chamlis_ if you look at the HTML head, it imports "application"
Maybe the Rails import map stuff did something helpful for me.

20:05If you look at the HTML head, does it?

...23Aha, it is something clever from the import map. I have been happily mostly ignoring that code and now it just got me okay so are we just in a namespace then no so this is my unfamiliarity with modern javascript how do i get at it

21:18chamlis_ below that, line 49
Well, if I just repeat this, import declarations only appear at the top level of a module.

...38This is the penalty I get for dropping that damn Node.js dependency that broke all the time.

...55So it's describing the behavior I'm seeing.

22:23And I can't import from the console. Let's see if anybody's talking about it.

...37And I thought this was going to be a two-second merge the PR. I just had to see it work.

...55I still have to see it work because this is a painful blocker to me actually editing the JavaScript on the site.

23:18chamlis_ I was using the REPL by breaking somewhere inside the module
Well, I know one way to make it work. sure i can see how that would work but what i really want is figure out how the hell i get into this secret module it's shoved all my code in like i'm happy to not loot the global namespace but now i am in the global namespace and i want to mess with things why did my

24:00Why did my console log not get printed? Have they decided that console log should no longer print debug messages and there's some new reimplementation of... What the shit? Now what are we mad about? Why did you throw 404 by JS? No errors.

...49Okay, it just didn't feel like updating. So the thing I don't love about that Braille's front end changes is every time they change stuff, it gets kind of a broken workflow for about a year.

25:26So I don't know how the hell to access this scope in the future.

26:09Here we go.

...23I could just put it on a global variable. This is the opposite of what I want. This is the different ugly version of what I just did with a console log.

27:07Doesn't help that terms like console are overloaded pretty badly at this point.

28:00Yeah, I guess it's going to have to just be a Rails mystery.

...09chamlis_ figured it out: put export before `const parentSelectorOrNull` then run `const app = await import("application")` in the console
Seeing this kind of just very basic stuff, like how do I call my function in Rails now that you've rearranged stuff? Seeing this broken. And clearly it's been broken for like a year. is just so irritating and trust-destroying that... Yeah, but... But I don't want to export this one function. We have, like, a dozen functions, and I want to be able to call them. And I don't want to manually list every function, so I want to get access to the scope. So whatever namespace it's shoving things off into, if I have to call application.parentSelector, fine, I can deal with that. But as it is, my code has been shoved off into the Phantom Zone.

29:22Really unifying JavaScript and Java.

...33Google only finds blog spam for things now.

...47I say DevTools specifically.

...56What was its very helpful error?

30:07Refincer.

...37It's a shame Google dropped the archive, because I would like to see what this, like this actually sounds useful, but it's gone. Thanks, Google.

32:15You know, if there was some other path for debugging JavaScript, this would actually be fine. But the fact that it just fucking broke the DevTools console has me wanting to rip it out entirely. All right. Well, as long as my time is getting wasted by shit today, this is the theme.

33:03I have one or two places I know that Rails devs hang out, so after the stream I will go and ask, like, how the fuck are people dealing with this?

...18Not great for getting in a good headspace for writing nuanced stuff. To spend a bunch of time getting exasperated at things getting broken for no useful reason.

...50Now for the function call I've been trying to run for. 20 minutes.

34:10dpk0 moin
Morning Daphne.

...23So if it's this comments tag.

...37I see how this broke because I didn't expect that.

35:22How did this ever work?

...37It just took the form's parent element, which is a different way of tying structurally.

...58Okay. Okay, I get how this fixes. All right, this is good to merge. Yeah, this is a hell of a lot of state. Shameless, thank you for figuring out a second bug. I'm just going to throw this right on top. And... Take that. Fold that down.

36:32All right.

...45So there was 1489. There was 90.

37:02Oh, and there was a search thing to follow up on what was this about this was I stuck it in the scratch. Like two days ago and I don't remember what it is anymore. Alright, so on stream fixed the.

...29bug around the search engine parser to recognize that short words were not getting searched. And we had that discussion, I want to say that was you Shamless, about whether it was InnoDB or MyISAM. And Greg, who has contributed a few fixes and also is a stream regular, pointed out that we're probably just using MyISAM. Which, let's go ahead and double check.

38:10We are using InnoDB. That answers that. So owner is a stop word.

39:01Well, the way to test this is let's search for a three letter word that's not going to be a stop word.

...14So I'm gonna search for Lua. Because I am certain there will be comments mentioning Lua, yeah. Oh, this is, so because I did the short word thing, this is the search engine dropping it. Let's get out of prod.

...41let's just search for it right here okay so there's one more confirmation that drag is correct and the last code was wrong because lua searched so all right let's let's go over to the search parser and no parser spec search parser spec not every parser yeah

40:35And change this test so that it's not a stop word. And instead of saying 1, 3, I'll say 1, 2.

41:01See where that gets us.

...14Oh, that's disastrous that it's splitting. OK, so there's a second fix. This has to go down to three. And then. And this one.

...57Fine, that's a test I didn't update. Yeah, it parses three character words.

42:14I don't like this repeated comment.

...30And what's this one? Oh, I changed the

43:04Let's go look at the rest of Drake's comments here. Stop words are excluded from the full text index. However, during the full text search in Boolean mode, terms that appear in the stop word list are considered.

...44OK, and then we've got the, so let's go look at that comma question.

44:09So do I get the same results without the comma, because if the comma is just Me inserting nonsense. And by the fact that this is, yeah, I'm getting the same search results. Okay, so the comma is nonsense.

...41I want to say nonsense, I just mean it's noise that search engine is ignoring so let's get rid of it which that sure doesn't look like it's inserting a comma Maybe this is only the, so there's two parallel, there's the story search and the comment search. Yeah, so we were only inserting it in the comment search. It's like somebody just walked over my grave to see the two tracks diverge like that.

45:39And I say that because I'm so worried that I'm going to accidentally introduce a SQL injection to this code. And so anything that's a little unexpected like that, like the two paths of it working different, raises the hair on the back of my neck.

46:03I don't think any of these actually test the generated SQL. So cool, I'm going to make a change and no tests will fail, right? I don't love that. I tried not to write any tests that directly coupled to the SQL output because I wanted to write at the feature level. The only ones that really look at the SQL output are the ones that exist for SQL injection. So it's unsafe. I don't know. I really didn't want to be writing direct database code like that, but Active Record is just not expressive enough.

47:13So I guess the next thing I want is, you know what? This stop word list is short enough that maybe I'll just copy and paste it.

...44So it's 1237, all right. What changes do we have here?

48:35I want to do this as two commits. So let's grab this down.

...45My little diverging indicator was, oh, hey, look, a distraction from Dependabot. It's high. I wonder if that means it actually affects us. That

49:10Probably does. That is high. All right. What's the new version? 3.1.12. I'm doing it off stream just because this one's ugly enough that it's a little race.

...38I'm not. certain that we actually use this path but yeah let's get that fixed out and deploy it all right so back to search spec and search parser and search pushcx https://mariadb.com/kb/en/full-…
Let's grab this list of stop words. From this page and if anybody wants that link and remember to share links. And then i'm going to just select all the contents of that table and then hammer them into shape and vim here.

51:51let's go check the part slip docs for how i match because i don't want to have to i could just say stir can i pass an array because what i really want is all of those map to stir with an orb between them

52:56That would have been easier.

53:39At this point, I may as well just do it in the test suite.

...57What I would really like to know is this or. What is the class this returns? because if I can go find that and directly instantiate it,

54:43Can I search for? Okay. Alternative.

...53So alternative when given. And or becomes alternatives at.

55:41Just create an alternative.

...55Is there another mention in the DSL alternative so that I can find another way to express it? Let's see if there's where I can just drop down and call it.

56:23So I can initialize with a list of, so if I call

...58That might even be right.

57:58What do we think? Interesting exception or pass? Interesting exception it is. Define method alternative. Well, from inside, if I'm already inside atoms, I don't have to jump back up. So maybe I can just...

58:29Oh, undefined method that needed to be alternative dot new. One of my favorite quirks of Ruby syntax is that classes and functions are in different namespaces. So you can have a class named capital A alternative. You can also have a method named capital A alternative.

...54So very rarely when you miss like the dot new, I've had that in the back pocket for some kind of DSL for a while. I find method apply for instance of array. Oh, because it wants it as positional arguments.

59:22Oh, one out of two. Oh. Yeah, and then this one, I didn't swap that around. So we say to not parse that. Great, and then it... Title rule, where are we now?

...53This is a stop word and a term. And. And. post should become a stop word what's the over under on how long it takes to for me to misread stop word and short word as each other and get them confused in a way that makes me not spot a bug that should be obvious because they start with the same letter they're about the same number of letters so i expected a stop word and i got a short word see that's the kind of thing What I'm trying to do here is before term, we should put stop words so they get consumed. And then that ought to do it. Oh, I bet some of my other tests had my, right? of or that to what was.

01:01:11So my was not on there. And let's go one at a time, I guess. Nice big exception. For a comment by story title, why would that break?

01:02:21Let's actually put these here.

...35OK. So what's the bug?

...49Let's start with the parser test. Because it's foundational. And if I figure out what's wrong in the parser, maybe these ones in the search model just disappear.

01:03:07And I'm going to have to add that to the yes, we expected. And we got a short word n. Did I typo? I did not typo. It's like the stop word, it's like the one character got consumed and thrown away. That's a very strange output to see one character consumed.

...59It's because the stop word consumed the A before it saw AN. I don't know why that just got thrown away. hydrocatt interesting font
But yeah, that's going to be... Alright, so... want to sort these by length yeah if you click through the link on the about page and welcome to the stream hydro cat the roman font is in consolada and the the cursive is greater sands mono

01:05:00I might do it. To make sure we match and before a. that's. Different.

...26let's take a look at this. Make sure it's the structure I expect and the order I expect. That's fine. As long as it's longest first, that's acceptable because then we don't have that substring issue. And now this error looks like this cleverness is not working. So I'm going to go back to the edit I was just about to do and manually say and or Better put a com. See what that gets me. I kind of expect this to pass. Well, that one's fine. Failed to match sequence.

01:06:31Shouldn't have term in front of short word.

...46Oh, did I not include? Okay, so I have, yeah, see, there it goes. So the answer to how long will it take before I confuse stop word and search word or stop word and short word is about, what, 10 minutes between when I said that and when I just did it?

01:07:19So that should fix this one's spurious one. This one's very strange. It's hard to get great debugging info out of parser but if we're at character one we are so if i change this to say my i'm going to get a failure that it has a short word not a stop word right

01:08:22Yes. So that's fine. What is it not like about... Oh, I'm missing the... So if I take this and I say as... I have to name the...

...51Otherwise, Parslet just kind of captures it and tosses it or throws. Okay, so that's good. So that's good. Now, can I take this and put it in here and get what I want?

01:09:19Aha, lovely. yay for tests yay for ruby's expressiveness yay for parsers happy little parse trees all right so if i've got all of that that does it that fixes the bug with searching for stock words. And this list is short enough that I feel comfortable pasting it in. The NODB stop words was huge, like lots of words. If there's only like, what, 25? It's probably not going to change that often.

01:10:20Oh, I didn't do the view.

01:12:01Let's see it. Let's give it the old.

...35Give it the old Mark 1 eyeball.

...48If it's searching, that's going to actually search for bug. And that's going to find there might be several comments on lobsters talking about bugs. There we go. So that said, short word. Why would that be parsed to a short word? It should have been parsed to a stop word. Oh, because my isn't. My is a short word. Oh, and this is four characters long. I'm fixing that off screen. There we go. The bug, stop word the, a very common word, was excluded. It links to this. Lovely. Okay. And then if I search for the bug in quotes, I should get fewer than 7,000 results. I get the exact same number of results. That's implausible. That's, I can't believe that.

01:14:09Really? Every single time the word bug appears in our... Let's look at the actual query executed.

...43Select count star against bug. And if I scroll up, against plus debug. Oh, in my SQL, I don't know that I relieve you on those results.

01:15:14it must be ignoring the the even in a quote how would i know if any of these comments do not include the string the space bug and yeah so we just skipped from the first comment down So it's applying that stop word even in a quoted section, apparently. All right, I'm at the limit of how much I want to fight that. So I'm just going to delete that suggestion of using quotes. What if I search for... See, this is one of the ways I'm... I get so hung up on some of these bugs where it's like, what if I search for fix the bug? Yeah, I get 60. Is it ignoring a stop word only when it's at the top of the start of the string? So if I said bug, then let's, then is not a stop word. I'm glancing at the list off screen.

01:16:50I search for bug the. I don't get anything just by grammar. OK. The. Yeah, so apparently Apparently MariaDB is ignoring a stop word if it's at the beginning of a quoted string. That's very specific. For Linux. So for is another stop word.

01:17:30Speaking of stop words, I'm gonna stop and take a quick restroom break after I finish this bug. And then I will do my whole bumper and we'll roll into the osa. yeah wow that is so weird what. What unexpected behavior all right.

...59let's come up with an example.

01:18:21We need to come up with a grammatical two-word sentence fragment where one of these stop words is the second term.

01:19:13chamlis_ zombo com
Does ZomboCom have hits in our database? That's a fun one, actually. Oh, a couple of links. All right. I like that better.

...55So hopefully, if I mention that there is an odd limitation, it will nerd snipe someone who sees this message rather than just nerd sniping Shamless now.

01:20:12All right. Oops.

...23chamlis_ typo in mariadb there btw
chamlis_ you've given me an evening project with this!
Is there? Oh, yeah, there is. Thank you. Good eye. All right, so that will be... All right. Get that deploying.

01:21:59I know they appear right above, but I want them to get mentioned clearly. E24B187.

01:23:36You know, it's funny. This is... There's that... I think there's a famous Steve Yeagey article about writing parsers. Or is it just about writing compilers?

01:24:04pushcx https://steve-yegge.blogspot.co…
Yeah. Yeah. This one. I think about this one fairly often. How have I given you an evening project, Shamless? Are you saying the limitation around stop words at the start of quoted strings?

...27chamlis_ I want to get to the bottom of all that, yeah
I'm going to put this in Scratch while hopefully you explain.

...37Okay, well, you've already helped me a bunch. So that's why I was saying I was not trying to nerd snipe you. But I am a little curious about that one, but not so curious as to actually want to chase it down myself. If you think it's a good use of your time, knock yourself out. So the other thing was the pull request template.

01:25:19chamlis_ I'm a nerd-sniper's dream, what can I say
You really are, Shanliss, actually. I don't know that I've said it directly. I've said thank you a hundred small times, but it's actually been really handy to have you watching streams. You've been a real treat of a viewer that I can mention something interesting or see something weird and you run down a primary source about it. I really appreciate that you do that. Thank you. It's just a really fun bit of collaboration. Even if it doesn't directly lead to like a commit with your name on it in the way your two pull requests have in the last day, you've really enriched a whole bunch of code that I've written and improved features and improved documentation. So thank you. I really do appreciate it. chamlis_ aww, cheers; and thank you for the opportunities
And I will try not to lure you into traffic like the original XKCD comic.

01:27:47What do I want to say here?

...56See, this is and I'm going to go do the heck out of this with the OSA stuff, but every time I start writing legal jargon, I know I'm really prone to writing nonsense because I'm not actually a lawyer. So what I'm trying to say is. The resulting code. doesn't have a clear copyright. So it can't have a clear license because the LLMs scraped the hell out of things.

01:28:37Maybe there's a Wikipedia page I could link to. Oh, oh, I was gonna, to finish a thought, The thing I liked about this Steve Yeagey article is I think a lot of the... He basically says you really do have to understand compilers to be an expert programmer. And I think that's a pretty solid argument, but a huge amount of the value is writing the parser, writing something that can spit out a valid What's the term the like the binary header for executable and You know layout pages in memory. I think you can get a lot of that by writing C or disassembling programs, I think. I slightly narrower version of this is you don't know how to write a parser ideally a couple of different styles of parsers you're pretty badly stunted on a couple of kinds of programming tasks like search engines all right so Let's go look at Wikipedia.

01:30:15Okay. Let's specifically care about large language models because that's what we're seeing over.

...32Okay. If they've separated it out to its own page. Yeah, so this is a really general title, but then it is about current events and I want an article around current events.

01:31:54pushcx https://en.wikipedia.org/wiki/A…
And just to share the link. Here we go all right, and then I want to put this link, I will just put the commit link in the scratch notes. How did I break the build I saw that red X go by.

01:32:30How are you feeling? Is this still... Oh, aha. Hey, that's a... Okay, that's fine. This is one of those false positive changes where it's not clear from Breakman's output, but this is a false positive, but it's exactly the kind of false positive we want because it... Daniel Katz- forces us to think about the security implications of code that can lead to sequel injection so. Daniel Katz- The thing to see aside from the fact that I recognize the line of code I just touched is. If there is one obsolete entry and one new failure, one new warning, probably these two facts are related and is you changed this line of code and it may still be safe. It is a very hard problem for BreakMan to be clear about what that difference is. And I like BreakMan so much that I really don't get frustrated by This kind of thing, it's doing just an incredible complicated job. So let's go ahead and inspect the new warnings. And we will add a note. And then I want to grab the text of the old note.

01:34:10And moot. E note says. Yeah. Yes. Save. Okay. So this, because it moved in the file, it doesn't recognize that it is the same thing. That's fine if the diff is a little louder than it needs to be. Let's grab that commit, which I did in this one. I removed the comma.

01:35:08All right, so the build should go green in just a second, and Peter gets one more reminder in why, even in harmless things, he always needs to run the full test sweep, because it would be nice to not have broken the build for a second. Why are you red? Oh, no, I fixed the search parser, but search model is still complaining. All right, that one's even more embarrassing. All right, so on the scratch, fix breakman, fix search test. All right, so that's model search. That's model search spec.

01:36:00pushcx https://github.com/lobsters/lob…
And let's run all of those. And anybody who wants to look at the failure and figure out exactly what it is you have a couple minute head start on me because i am going to step away to the restroom and if you find the bug before i do with your three minute head start you get to be a channel vip so i'll be back in a minute folks

01:39:28Nobody solved the bug for me while I was up. Too bad. To solve my own bugs. I got a hard life. Alright, so...

...50I searched for... This mate? espartapalma Hi, hello
This may be pretty harmless. So it expected nothing, but it found a comment. Oh, hey, Espart Palmer, welcome back. Are all of these, okay, all of them are finding a comment it didn't expect to.

01:40:28And these tests have a bunch of shared data. Yeah, so this T2 could be a short word kind of issue. And all of these found, started finding this one. which is on stories four, so zero, one, two, three, four, not the same one. espartapalma wait, did you introduce a bug in the project? inconceivable!
Hmm. So what changed in this search code that it would find more? Yeah, I know. I sometimes joke that with Lobster's office hours, you just get to watch me inserting bugs into the site for three hours. And ideally, we end each stream with one fewer bug in the code base than when we started. But boy, there are some streams where that is not the case.

01:41:48This multi tag also has these short words that should be getting ignored. Has the build been broken for days since I inserted that short word stuff? No, because we ran the full suite.

01:42:30I broke it right here. So it is related to this two character stuff. So just because it's so conspicuous, I'm going to put this up here.

...53And this is a little bit magic, but if the tests go green and they did not,

01:43:27Do I still want this change? No. Poor baby. Pobrecito. Cat wants affection. Oh, he's so bored. He has a hard life. Oh, baby. He's running around on the floor. I would put him on camera.

01:44:07Let's look at the earliest failure first.

...37Frici We appear to still have the break notice active 👀
All right. Sorry, read it backwards. Oh, thank you, Friji. Correct. I am not on break. I am breaking things. This is an RSpec thing that gets me every couple of months. If it has the word expected, I expect that to be the thing I expected. Instead, expected is the thing that is not what I expected.

01:45:31Yeah, one of these...

...47So if you search for comment 1, all of these are all of these failures to search for comment 1. 214, 246, 273, 279. 214, and I see this one's passing. 246 that's a different one what were the others 273 279 okay so this this really feels like it's going to be one bug but the the scattershot nature of it where Just an arbitrary four tests that don't seem to have a lot in common are failing. Like you can find the comment by domain, but not by URL.

01:47:10That's...

...45Oh, what a... Yeah, that's a bug. There's the theme. tiniuclx Hi Peter, just dropping by to say thanks for keeping Lobsters running over all these years
So it took the prefix stop word. tiniuclx Love this community, and I appreciate all the hard work behind it
The search word has to have a... Oh. Hi, Tinny. You're welcome. Thanks. It's been really rewarding. appreciate folks dropping in. All right. Some of that hard work is, you know, breaking the search engine. Alright, so this is going to be like a one line fix. And it's going to be over in the search parser. And what we want to say is that the search a stop word has to be followed by a space or the end of string, right? So like if I did this, it would probably just immediately pass the suite, but then it's gonna be bugged if the stop word is at the end. chamlis_ looks like leading stopwords are ignored like you inferred: https://github.com/MariaDB/serv…
So maybe we get one test failing here, but realistically, yeah, we get green. So let's go look at partlets docs. And how do we match only things that are at the end of the string? This is the doc I was just on.

01:50:03right shameless if you're still here oh looks like leading stop words are ignored like i infer oh ho you already figured this one out skip any leading words that are stop words huh so let's let's grab that link you just gave because that's real interesting let me put that on stream i can see like not knowing any of how this works, but if the vector is empty, I'm not actually seeing the conditional to skip. C++ can be really indirect. chamlis_ so this function tokenizes into two outputs, `tokens` excludes stopwords, `orig_tokens` includes them
Is it this IB vector pushes knocking it off? Function tokenizes into two outputs. Tokens include stop words. A ridge token includes them. chamlis_ if we have put something in tokens, we know we're past leading stopwords, so we can put them in orig_tokens
If we have put something in tokens with no past leading stop words, we can put them in a ridge. Aha. Oh, so it's only because it was the first thing. So I guess what I wonder is,

01:52:10What if I searched for Linux debug?

...26chamlis_ I don't think that will work, I believe it tokenizes the invidual AST node
chamlis_ yeah
Yeah, so this function must be already parsing just inside of quotes, or this string would be highlighted for containing the string debug. Yeah. Yeah, you got exactly what I was searching for. lost my line number in a 3000 line file. Great. what was.

01:53:11I was a little curious to see if I was going to turn up a bug where they deliberately did that. I can kind of infer, because we've talked a bunch about this context, what that means, but I don't think that would be useful to add to our explanation of the MariaDB limitation because dumping people into the middle of a multi-thousand line C++ file, even for programmers, that one's a little bit of a stretch for utility. So let's figure out how to make parslet match the end of string without the docs.

01:54:09RDoC is struggling.

...31wilhelmvonweiner Haven't caught one of these before, watching while I wait for GitHub Actions to fail after 30 minutes
Just on the off chance someone has mentioned it, it seemed like it was worth a shot.

...45Oh, hey, Wilhelm. Well, you can watch me fail much quicker than 30 minutes. So I'm working on the parser that's part of the search engine for lobsters where I am trying to match a word break and the parslet documentation is not loading. So I can't figure out What the heck it is, let's go look at that DSL class I was in before. Repeat, maybe ignore. Absent present has captured not helpful. Where did it define stir? Because that's going to be one of these. OK, so that's an atom. So if I go look at all of the atoms, maybe I will see one with a useful name like. End. In fix, look ahead, repetition, scope, sequence.

01:56:10A regular expression would do it. Special kind of regular expression that only ever matches one character at a time. That's not actually useful for my purpose, because I want to match end of string.

...38Or I could look ahead to end of string. Don't consume its input. I guess if I could say that the next character is not a word character, that might work.

01:57:03Do we have a negation? Oof, our doc is really having a bad day.

...35wilhelmvonweiner Did you check archive.is/archive.org for the docs?
No, I didn't check archive.org because one of the things I happen to know about RubyDoc is that it generates docs on demand and the parslet gem is not hugely popular. So it's plausible to me that they haven't been generated recently. It might be in here. Yeah.

01:58:11And then even so, the thing I kind of want is the JavaScript search that's probably going to be broken on this page. Yeah, this is not useful, unfortunately. It's a good idea though. Let me see if I can jump up to the index, because that's what I was hoping for. And then here, can I say not?

...46I guess I could say repeat zero.

01:59:09All right, so let's look for an atom for There's a capture. There's ignored. What I really want to express is that I am at the end of the string.

...48So let's extract this repeated thing.

02:00:14Because it's in two places, and it's fiddly. And I want to put it in another place. This should be green build, because that's just the parser equivalent of extract method refactoring. Yeah. And then what I really want to say is,

...49Like, not word char? Is that a thing I can say? Well, that'll cover space, right? So that's standard RB helping me.

02:01:20Can I load such file? Or do I have a basic syntax error here? What do we do?

...42What do we know about? Let's put it back to

...50Put it back to space, because that was working. And now it's not. What should I do? How did I break not just the build, but the test suite? Error loading search spec. chamlis_ `space` became `space?`
Did you mean the file is right there? Cannot load file spec model search underscore spec.

02:02:35Yes, you can. It's right there. It's readable. RSpec, are you having a bad day? Oh, it's the colon on the end. All right. And that's not even the spec I wanted to run. What I wanted to run was search star to run the parser and the search model.

02:03:02So there's a RSpecism where you can name a file. Great. You can name a file colon a line number and it'll run that test, which I did. But if you name a file and then colon no line number, it thinks the colon is part of the file name and you get that not very clear error. Okay. So this is fine. This is a bug I expected because this one is saying, yeah, of is at the end of the sentence. So you're failing because of that. That is exactly the issue I have. So can I say that you have space or charts?

02:04:24And I'm going to change this one, because otherwise I'm not going to be able to read which spec is failing. And also, I have a spec that is very specifically the bug I am trying to address.

...47OK.

02:05:00So I need a way to express that I am either at the end of the input or there is a non-word char present.

...32What do we think? Browse your atoms.

02:06:17I guess what I want is look ahead, right? I want to look ahead at the next character. wilhelmvonweiner There was a lookahead.rb
And as long as that... Yeah, you're thinking the same direction I am, Will, huh?

...46positive or negative, look ahead. So if it's positive, return the successive alarm.

02:07:29So I still don't know how to, yes, I do. I know how to negate that regular expression.

...58All right, and then how do I actually invoke this darn thing? Because it's kind of wrapped up in its own dot present question mark.

02:08:38Yeah. See, now it's failing at the end of string because there isn't another character present.

02:09:00Let's get a different one so I can spot that this. All right, so that spec is going to pass.

...15That assertion is not, oh, not, because it's the new version where if I put this back to space, the final frontier, only the one spec should fail. And Shamless, you have it backwards. I changed the space question to space with no question. because that means that of won't parse off.

02:10:16Yeah, it's not enough to look ahead, because I still can't express end of string.

...37Let's look at all of the atoms. So alternative is the OR. Base.

...59And flatten, yeah, this is about, yeah. This is about how, you know, if you have a binary tree and it only extends on one side, you can flatten it. That's fine. Capture.

02:11:24What is this dynamic? Capture and use of the capture. Because if I did a look-ahead capture of the next character in this dynamic... Now, str... Let's look at dynamic. Executes a block at parse time. The result from the block must be a parser. In the first case, the parser will then be applied to the input creating the result.

02:12:07And then here, where did it mention dynamic? No.

...21With the source and the context. So if I could look at the context.

...35Captures name to sim. How are you? Oh, you're looking up in the captures array just the given name.

02:13:06This regex, I can't use that to match dollar sign, can I?

...24Actually, it's just calling the Ruby API. Source is, re is compiled. with regex multiline. All right, so wait a minute. Maybe I can. chamlis_ are you still looking for an end-of-string atom?
chamlis_ I found https://kschiess.github.io/pars…
So if I said there has to be a non-word char or match. Yes, Chandless, I am.

02:14:01Oh, ho. Well, let me see this test fail because there's no way it's going to work. And then I will look at your almost certainly correct solution. Helps if I have valid syntax. Missing a close parent.

...21Huh. I got what I wanted. That passed. All right. Let's see if you found a better way to express that. Ah, in the tricks. I didn't look in the tricks. Any.absent.

...47That is a much nicer way of expressing what I want.

02:15:08Unless you've done it again. So I'm expecting a green test here. And then if I run all the search-related, both the search-related specs, we should get green. And then I'm going to back up and figure out how I could have found that better. Good. Oh, I left in a debugging. Which, where was that puts?

...48So the question I had was, as long as we're poking around here, where's absent? Is that a sequence? Let's find it.

02:16:07in the DSL and hey look there's the lookahead so it passes false to the lookahead so I missed it while reading this source positive comma true oh so I was assuming it was this Su CC I was thinking successive instead of success, and so I was thinking it was negative verse positive look ahead like a Pearl rejects and what it's saying is. we're going to look ahead and either say that we have it or we don't so false comes in here positive is false that's. that's quite a variable name okay. so if false success nil and less success so it's just reverting that and then no matter what it rewinds okay so what i actually want to say is not non-word char or ef what i want to say is that the word char is absent That's an even cleaner way to say it that is more likely to work with silly stuff like multi-line strings. Or at least it just lets me get rid of the extra rule. No? Why does that fail for this?

02:17:59It's followed by word char that's absent. Ooh, and this got a

02:18:13What's the difference between this version that doesn't work and this version that did?

...46Did I write it backwards? Hold on. Recrypt. I was thinking maybe I just had a brain fart and I wrote .present. All right. Well, I'm going to get out of this rabbit hole and call that good. It's a little clunkier than I want, but I'll take a little clunky and a green build. And yes, I will run the whole thing

02:19:20Okay. Well, Wilhelm, I think I fixed a bug in our build while you were waiting for your one build to run. What language are you working in that your actions take 30 minutes?

...48I don't think I remember from your comments about what you typically work in.

02:20:21You know, it's really lucky that com was a stop word and my search included comment. That's a happy coincidence, because if that hadn't failed, they sure looked like it was fine. And then that would have been a really weird bug report and a real pain to track down, especially once the context of the parser fell out of my head i thought this was going to be one of those where i review a pull request for 10 minutes and then i jump right into something else and here we are two hours and 20 minutes later and i'm done touching all the code all right so that's going to run for a sec

02:21:19All right, that's all of the code things, unless I've broken something else, which is possible. All right, let's close out some tabs.

...37No new comments. Why is this green? I thought I just merged that. Thank you. all right so no one change here let's double check it and no activity on the issues okay good i think i looked at this one on email yeah so this question's still open

02:22:14I don't know who Winter QT is. Okay. Well, if she can put up with Nyx, she probably knows what she's talking about with security. I shouldn't gripe about Nyx.

...39Alright. No actions needed from me. pushcx https://bsky.app/profile/mmasni…
all right let's go find peter talking about stuff i can't do that when i'm not logged in birthday oh you know i'm scrolling past it but

02:23:20been reading tech dirt for a while and has been following mike masnick here on blue sky for a while and he's one of those people who actually understands both the technology and a reasonable amount of the law and so he's been really rewarding to read and he made this i don't know why it's a podcast instead of an article but It's a really excellent introduction to Section 230, which is going to come up here in, I don't know, like four hours at the speed that I write, but it's going to come up here real soon.

02:24:03Section 230, I think I reposted this with saying something like that this is a foundational part of the US internet. And it starts out very compelling with a very a bit of a tugs on the heartstring kind of story about a woman who found community online after getting some very hard medical news and how that is the sort of big, complicated, hairy topic that will immediately get blasted off of the US internet without Section 230. And then he walks through a bunch of its history. And I don't know, I'm really curious where this podcast is going to go. Because it started out strong. It's some of the best stuff I've seen on Section 230. So I was looking for, here we go. Mastodon want to show me replies? Yeah, here we go. So I have mentioned Neil Brown in the context of the OSA a lot because he is a UK lawyer who has done some incredible work all volunteer helping make sense of the Online Safety Act from the United Kingdom. And the Online Safety Act is why Lobsters for UK users has a big red banner at the bottom that says, because of the risks of the UK Online Safety Act, they will require that the lobsters geo-block the UK. and having to block i don't know probably single digit or low double digit percentage of our traffic is disastrous that's lousy it's a terrible outcome for everyone involved but the osa is unfortunately not a piece of well-balanced legislation And it is not a especially coherent piece of legislation. And I have been struggling with it for a couple of months since it became clear what a disaster, it is and how it is an existential threat to lobsters. And. In the couple of months, maybe two months that that notice has been up we've had a lot of activity in our thread around the online safety act and. A lot of work by the participants in that thread by especially Neil and by lots of other people online to make sense of what the heck. It means and what the risks are and how to respond to them appropriately.

02:27:34So. couple of streams ago i started drafting a comment to update on the uk osa because i saw some no let me back up because based on the two months of trying to figure out what the hell this thing means and

02:28:16So I had to note something there on my phone so based on a couple of months of figuring out what the hell this thing means and what kind of threat it's making because it certainly is making threats when it has. jail time attached.

...38I think the risks. just sort of low enough for a couple of independent reasons, which is more robust than if there was one reason or one tenuous chain of reason, that I can drop the pending geo block and only turn it back on if directly threatened by Ofcom. And there's some logic that's real similar to what kyle kingsbury a fair came up with i don't know how to give the best credit because it's on the admin blog for the mastodon instance he administers wolf group and i don't know if that's just him writing or if he has some kind of ruling committee i just don't know that community very well but including with neil they have written some really compelling stuff and People keep pointing at the lobsters thread because we're a pretty decent sized site and we have some pretty good understandings of what's actually happening. And so I wanted to write up both an explanation of what this means for lobsters, an introduction to the online safety act because i introduced it in our initial post and even though i introduced it there are a lot of common misunderstandings and i said it to neil and well i guess now it's two or three hours ago that i really appreciate his generosity and those of kyle kingsbury and the wolf group master on instance There is so much, well, surely you can just, and oh, the law can't possibly mean that, misconceptions, especially from programmers who try and play lawyers online. And there's lots of like, well, of course it wouldn't attack something that's a non-profit. It sure does. Well, of course, the UK can't make laws for the rest of the world. It sure claims to. And the enforcers claim that that's how they'll be interpreting it. There's a couple of other of these, like, well, what if you just put a, like, no girls sign allowed on the outside? And when I say that, I'm making a Simpsons reference, but, you know, what if you just made some kind of, we imagine the UK OSA doesn't apply to us post. Well, why do you care about this and not China? And so the answers to some of these misconceptions are down in the thread, because we worked our way through these because I had some of them at the beginning and then we see a lot of other stuff repeated as the thread gets linked to. And so it would be nice to round up and say, here's what this thing means. Here's the ways that optimistic slash too clever for their own good folks try to say that it's a tempest in a teapot and brush it off. Here's what it actually means. So that means I want to write a fairly long post. And I started on it on stream a couple of streams back. And the block is going to go into effect, what, in 72 hours? So I'm writing on a deadline. So let's see. I have to go get that draft I started, which is over on my blog. And then do I remember a specific thing I have said in the wording of it? No. Nothing too exciting here. All right. So one of these in 2025 is going to say OSA. Oh, yeah. In fact, a lot of good the U.S. Department of State said. Okay. So was it 123? No, it was 23. That's the one I'm thinking of. All right.

02:33:37Let's put it at the bottom because it's going to pull in a bunch of other stuff. Under underscore includes, not assets.

02:34:01There we go. All right. So there was the start of the draft that I want. then there was the other notes from that stream so this is not the one i want actually no this got posted god damn it 224 all right lost so much time to the osa it is burn just dozens of hours i remember early on maybe even before i posted the the main thread just in the so we had one thread that was about lfgss a london fixed gear and single speed bicycling forum and i think that was one of my last comments in that one, I was like, yeah, there's literally one fewer feature on the site because I've spent time on this and we've blown past that and we've lost a lot to this law. So the common misconceptions and then Not hide all.

02:36:33When my table of contents doesn't even fit on the screen, I know I'm in trouble. Oh, right. I should do my standard bumper. So this is Lobster's office hours where I take questions about the site and the code base and I run queries and otherwise provide a different way of being accessible besides messages on the site and email and GitHub issues and IRC and I don't know, smoke signals. I am happy to take feedback on stuff and answer questions pretty much whatever way works. And folks really seem to have taken to looking over my shoulder on stream, so I'm keeping it up. And when folks don't have questions, which you can throw in chat anytime, I work on the site and the code base. And this is one thing for the site of, helping it understand itself and explain what the heck in my decision-making is happening. So this next step here, unless someone is asking questions, is that I'm gonna work on this bit of writing for why I feel okay hopefully permanently disabling the geoblock. I have never written one before, and I would like to be able to say that I have never had to actually put one into production.

02:38:43All right, so how do I want to do this? Do I want to work directly in the Scratch? Do I want to start another file? No, I want to write Markdown because the comment box is Markdown.

02:39:34Directory doesn't exist.

...49The one thing that gets me about Git is if I want to write to a directory that doesn't exist, it feels like a chore.

02:40:15So the big summary I want to start with like the most important thing first I am not going to do full inverted pyramid style, but for the folks who have followed what's happening let's start with.

02:41:05Thank you.

02:42:11That's really the key of it. And then the rest is,

02:44:27Just write the ugly thing first and come back.

...58Yeah.

02:45:44Need to explain and justify the structure of this. All right, so.

02:46:28takes effect see this is where I mean the law is in effect and Ofcom has kind of jumped its deadline on this a little bit with the biggest sites in a way that sure would be jaw-boning here in the US but is apparently kosher over there So what I want to say is that it meaningfully takes effect, but that sounds Weasley.

02:47:17You know, I want to.

...26i want to do this i'm debating between pulling up my previous summary and reusing it or rewriting from scratch and then comparing against it and i think i think in the interests of time i'm just going to reuse for quality it would be better to rewrite from scratch because with the added perspective I would end up writing something different and maybe even better. And then even just looking at them with fresh eyes and comparing them that way would say, oh, I'm emphasizing something totally differently. It helps to break the curse of knowledge where it is hard to look at something like this with fresh eyes after having looked at it for so long. Honestly, the only difference is I have stopped being polite about things like regulate and I'm now just calling it a censorship bill because that's what it is doing.

02:50:22I'm trying to pick whether to, yeah, I'm going to start kind of dry and then shift into more opinionated stuff. Oh, yeah.

02:51:19This writing is so painful. Let me see.

02:53:29This whole thing is so clunky just because the log is so painful.

...42Claims and claims and I'm...

02:54:14say, UK web surfers, but...

...56Thank you.

02:55:32going to change up the language a little because i'm going to match what some of the concerns what some of the misconceptions are.

...48and

02:58:27Really spell checker. All right. Got to introduce Ofcom at some point in this fucking explanation.

03:00:45where's that

03:01:24This is not the right time to introduce Ofcom, is it?

03:02:45Got the Wikipedia link somewhere, right?

...55Yeah. Losing track of my focus. My window's got a lot of blur here. There we go.

03:04:26I want to say it's the tip of the spear, but it's really just the heavy part of the club. That's a little too cute, though.

03:05:13What am I trying to say?

03:06:00is you

03:09:37You know, it's a small thing, but the fact that you can't even find a list of all of their guidance just irks the shit out of me.

03:10:00Let's quote. Off screen, I've grabbed one of the pages here.

...34It is even hard. So yeah, let's mention that.

...53That's got to be in there somewhere.

03:11:10Thank you.

...40Hard not to be sarcastic.

03:16:54really like to link to their explanation of a multi risk, which I want to say I've written as my bookmarks. Good thing I unbroke the search engine.

03:18:45Just typing up that damn fucking significant number thing.

03:19:58Back to here. applying to someone they say section five which there's no way this is clickable right oh it is okay here we go user numbers

03:20:44see paragraph 5.6 great it's not even here in the table

03:21:17This is where we're going to as an example. Is that 79? Yeah.

03:23:30Keep track of these as I'm trying to... So this was the... Yeah.

03:25:13What's the page number there?

03:26:16Yeah.

03:27:16Thank you.

03:30:57AnakimLuke howdy
Oh, hey, Anakin. Pretty quiet. I'm just wasting more time on the Online Safety Act.

03:31:28Where's that? So there's a, I'm grabbing a link from my personal browser. There's another UK lawyer named Graham something. who has written a bit on the Online Safety Act. I guess what I really wanna find is whether

03:32:45I'm trying to find this darn post and I know I've seen it.

03:33:15AnakimLuke you think the law really is going into effect?
Oh, I know the law is going into effect. It is three days away and Parliament hasn't cancelled it. So that part, that question is pretty clear.

...43What's the name of this? I lost my train of thought dealing with here it is. Here it is. So

03:34:19Where's that quote? So I think it's similar to a US law where they're required. So in the US, we have a Paperwork Reduction Act where government offices are required to estimate how long it takes to follow certain processes. And then similarly, this thing seems to estimate that this should only take an hour or two. Where was it?

03:35:02One thirty three.

...20go. So page 43.

03:36:26alex4tmm hello
Hey, Alex, welcome.

...52alex4tmm can you recommend any heroku alternatives for hobby projects that are free or cheaper ? :)
Yeah, there's You're looking for a free tier because you're a student or something.

03:37:11alex4tmm yea
Where is he? pushcx https://judoscale.com/tools/paa…
Yeah, so I just saw a great post about this. Here we go. by adam mccrea so he has a pricing calculator to compare different cloud providers like well here's the four that are popular i happen to know adam and he's mostly focused on rails apps so if you kind of cranked all of this down all the way you would be able to compare and i think This just came out a day or two ago. So I assume if you crank this down all of the way, it might show you somebody's free tier. He is trying to make a business tool. So it's aimed. AnakimLuke @alex4tmm I use GCP's free tier for a 0.25 CPU VM
He is probably assuming things like you have to have a worker and you have to have some amount of like egress cost, but yeah, I, There you go. alex4tmm i have a worker yea, psql and redis
I think Amazon EC2 also has a free tier, but it's not really going to be a Heroku alternative like Alex is looking for because it's not a platform as a service like this page is attempting to estimate.

03:38:47So Alex, who are your users? Are they like friends and family? Or are they like you want to make something and then share it very generally?

03:39:10AnakimLuke aws doesn't have a free tier for VMs, only free trials
Because if you have a desktop computer, you could consider. Thanks, Anna Kim. You should consider just self-hosting it.

...27alex4tmm i have an app that had like 20-30 users but recently heroku and google API costs went up
But I think the nature of... alex4tmm so now me and a friend using it mostly
I'm assuming you're thinking of Rails hosting here because you're looking at Heroku, 20 to 30 users. Yeah. Because of the...

...46Because of the process model that's in Rails and JavaScript websites, you have to have that process running all the time, which means even a site that doesn't get hit costs RAM. And so that's why you're not seeing any free tiers anymore. AnakimLuke @alex4tmm raspberry pi?
Nobody's trying to grow a platform as a service. It's a pretty mature thing. So no one is burning VC dollars for that anymore.

03:40:22alex4tmm i see , makes sense
Let's see. Let's see if this guy has a page. No. AnakimLuke cloudflare
yeah so i would like anakin is mentioning something like a raspberry pi or a personal desktop would let you host and then you can have a how do you get the domain name wired up i'm thinking of ways that work for like a intranet but if you look up something like a Yeah, Cloudflare would work or network tunneling. alex4tmm like ngrok
alex4tmm ?
Because if you're on a residential cable IP, you won't be able to take incoming traffic. Yeah, so I was thinking of something like ngrok so that you can give folks a domain name that they can just click on. alex4tmm mhmm
But Cloudflare and ngrok would set you up, yeah.

03:41:41alex4tmm thanks for the help :)
Sure thing. Good luck with your site. Or your app, I should say. Definition begins. All right.

03:43:14alex4tmm thx @AnakimLuke
Thank you.

03:44:20Thank you.

03:45:37Okay.

03:47:42You know what, it's a little incendiary, but I am tempted to use a word like Quisling here for the people who are eager to comply.

03:49:38Yeah, it's spicier. It's what I want to write, and I feel better for having written it, but... Yeah. Oh, God, I'm running long here. Already almost an hour over.

03:50:12Thank you.

...50Work dancer means like show your work, right?

03:51:41AnakimLuke so will you block lobsters to the uk?
You're helping.

03:53:47Got to move up the... One of the things about talking about this nonsense in compliance is it's a misconception. The bigger thing is the definitional problem of who's in the UK.

03:55:02AnakimLuke i am a curious bean. what does that vim_bash script do? ;3
Oh, did the, did the file name go by somewhere?

...27AnakimLuke vim tab
I'm trying to remember where it is. BIM tab. AnakimLuke LUL
ah yeah so when i open a shell in vim here on stream i didn't want to include my personal shell history because that has stuff for it with like file names in it where the file name is something sensitive like i don't know my embarrassing medical problem or my financial investment in a company or something i don't know i'm trying to make something up here And like 99% of that stuff is incredibly boring. And then 1% is nobody's fucking business. So let me see if I have that hanging around.

03:56:18AnakimLuke hemorrhoids. i have them too
Wrong host here, hold on.

...35Yeah, OK, there's nothing. It's some some fugly code because it's just I slapped it together and it works and I never want to think about it. So when Vim comes up, it has a environment variable, a stream, something like that. Yeah, and it's So instead of the shell being bash in Vim, you know, like the set shell, it's this script. And this script is not particularly interesting. It just says, okay, well, if we're not in the streaming context, or wait, hold on. If we are in the streaming context, load up. The streaming bash script and then otherwise just run it normally and then there's two ways to start bash as a login Shell or as a non interactive Shell. Or maybe that's actually like two concepts interactive and non interactive login and non login I can never remember with bash it's one of those like. 20 years of cruft that then aged for 25 years and I don't remember so. Like this could probably be simplified, but I really don't want to think about it. AnakimLuke phoeplFry
So that's why you see vim bash is it is the bash that started by vim and it has to maintain that context. So like if I start a new terminal, you see the word stream here. And that's one of those startup scripts prints that. So if I start opening terminals and I don't see that while I'm streaming, AnakimLuke :D :D
know i i came up with this a couple of streams in and hopefully it is easy enough that or familiar enough at this point that if i managed to open a non-streaming terminal on stream i would be like hey wait a minute before i hit ctrl r what's up with that if i were really paranoid i would like have a separate user account but that's just Such a pain in the ass.

03:59:16Yeah, alright, so...

04:00:30There's been so much detail. They've given conflicting non answers where their response doesn't answer what significant number means because it's so vague and unworkable. But they have given conflicting non-answers for it over the last few months. And so it is really hard to write this because they're so fucking exasperating. And I want to get into, like, you need to stop thinking of them as acting in good faith. But I don't want to come off as like I'm writing an introductory post for people who've never seen this before. And so if I come off as, I mean, I am exasperated. But to somebody who has no idea what's going on, I come off as, or I fear that I'll come off as someone who is i don't know just a hater is looking for things to fight about and it's like no look if you just why don't you waste 10 hours on this and then come back to me and then you will understand the exasperation

04:03:24That's not even the point I'm making.

...53My stomach is rumbling. So I'm thinking about taking a break for lunch and then finishing the rest of this off stream. Things have been real quiet the last hour or so. So I know this is not exactly riveting content. It's just office hours in my office doing the thing.

04:04:21AnakimLuke thanks for the office hours!!!
Yeah. yeah it's a good time to break i'm just kind of getting cross-eyed here even looking at my to-do list or my outline it's gonna be a lot of work all right yeah so i'm gonna i don't know i'm gonna get like some pizza or something something really Something really junky and rewarding and I wear you know eating junk food is not. AnakimLuke 😅
AnakimLuke emotional numbing
A great way of coping with stressful things, but it is a tasty way of stressing of dealing with stressful things and also my spouse is out of town so i'm living that big bachelor lifestyle. All right. Well, I hope everybody else has a nice weekend and stuff. AnakimLuke byee
And I will be back for the next regularly scheduled office hours on Monday afternoon, Chicago time. Twitch has a calendar you can subscribe to. And yeah, that's all I got. I'm going to roll out. Frici riveting content or not, it's a great insight to the inner workings of lobste.rs and coworking bg sound LUL take care ! and catch you next time 👀
Take care, folks.