[00:13] *** ds7832 joined
[00:29] *** ds7832 left
[01:06] *** hulk joined
[01:06] *** kylese left
[02:02] *** guifa left
[02:02] *** sibl joined
[02:15] *** hulk left
[02:15] *** kylese joined
[02:23] *** sibl left
[03:00] *** annamalai joined
[03:16] *** apogee_ntv left
[03:18] *** apogee_ntv joined
[04:38] *** Aedil joined
[06:06] *** gugod left
[06:06] *** bloatable6__ left
[06:06] *** snonux left
[06:06] *** Voldenet left
[06:06] *** cm left
[06:06] *** lizmat left
[06:06] *** andinus left
[06:06] *** coleman left
[06:06] *** evalable6 left
[06:06] *** gfldex left
[06:06] *** constxd left
[06:06] *** simcop2387 left
[06:06] *** tejr left
[06:06] *** disbot2 left
[06:06] *** bd3i left
[06:06] *** kurahaupo left
[06:06] *** ShimmerFairy left
[06:06] *** kst left
[06:06] *** avuserow left
[06:06] *** dustinm` left
[06:06] *** mtj left
[06:06] *** topnep left
[06:06] *** merp left
[06:06] *** ugexe left
[06:06] *** destroycomputers left
[06:06] *** PotatoGim left
[06:06] *** summerisle left
[06:06] *** human-blip left
[06:06] *** [Coke] left
[06:06] *** perryprog left
[06:06] *** _________ left
[06:06] *** rba left
[06:06] *** SmokeMachine left
[06:06] *** nicole left
[06:06] *** sftp left
[06:06] *** BooK left
[06:06] *** thaewrapt left
[06:06] *** jast left
[06:06] *** JRaspass left
[06:10] *** human-blip joined
[06:10] *** kurahaupo joined
[06:10] *** bloatable6__ joined
[06:10] *** snonux joined
[06:10] *** Voldenet joined
[06:10] *** ShimmerFairy joined
[06:10] *** [Coke] joined
[06:10] *** cm joined
[06:10] *** perryprog joined
[06:10] *** kst joined
[06:10] *** avuserow joined
[06:10] *** dustinm` joined
[06:10] *** lizmat joined
[06:10] *** andinus joined
[06:10] *** mtj joined
[06:10] *** _________ joined
[06:10] *** rba joined
[06:10] *** topnep joined
[06:10] *** coleman joined
[06:10] *** evalable6 joined
[06:10] *** gfldex joined
[06:10] *** constxd joined
[06:10] *** merp joined
[06:10] *** simcop2387 joined
[06:10] *** ugexe joined
[06:10] *** SmokeMachine joined
[06:10] *** nicole joined
[06:10] *** sftp joined
[06:10] *** tejr joined
[06:10] *** BooK joined
[06:10] *** destroycomputers joined
[06:10] *** thaewrapt joined
[06:10] *** PotatoGim joined
[06:10] *** disbot2 joined
[06:10] *** bd3i joined
[06:10] *** summerisle joined
[06:10] *** JRaspass joined
[06:10] *** jast joined
[06:11] *** gugod joined
[06:13] *** abraxxa joined
[06:19] *** abraxxa left
[06:19] *** abraxxa joined
[07:05] <disbot2> <librasteve> SmokeMachine: Selkie::UI looks very nice. How are “routines” like App { … } and so on implemented… is it maybe a raku subroutine being passed a block?

[07:06] <disbot2> <librasteve> weekly: https://github.com/FCO/Selkie-UI/tree/main/examples

[07:06] <notable6> librasteve, Noted! (weekly)

[07:07] <disbot2> <librasteve> weekly: https://usercontent.irccloud-cdn.com/file/r8h6vvcQ/CleanShot%202026-05-05%20at%2023.35.36.gif

[07:07] <notable6> librasteve, Noted! (weekly)

[07:11] <SmokeMachine> librasteve: exactly… https://github.com/FCO/Selkie-UI/blob/72f37b30c62d5599bcc5e85f648d769a90327430/lib/Selkie/UI.rakumod#L137

[07:18] <disbot2> <librasteve> looks very nice … seems there is a fine line in raku between “pseudo DSL” … such as this, Air::Functional, Cro routes (by which I mean making a library that populates a lot of domain specific subroutines into standard Raku) and a “full DSL” with Grammar, Action and Slangify.

[07:20] *** Sgeo left
[07:22] *** peder left
[07:26] <SmokeMachine> I think there is a 3rd intermediate one, something like this: https://github.com/m-doughty/MCP-Server/blob/master/examples/DSL/echo-server.raku or Red that uses “new kind of classes”

[07:26] *** peder joined
[07:28] <SmokeMachine> That “subvertes” classes, comments, etc…

[07:44] *** eseyman left
[07:45] *** manu_ joined
[07:46] *** manu_ is now known as eseyman

[08:30] <SmokeMachine> librasteve: 👆

[09:04] <disbot2> <librasteve> yeah - very good point

[09:58] <SmokeMachine> librasteve: I'm thinking on playing with this idea: https://usercontent.irccloud-cdn.com/file/T8A6EFmN/CleanShot%202026-05-06%20at%2010.55.03.gif

[09:59] *** dano left
[10:00] <SmokeMachine> librasteve: an look how simple the code is:  https://www.irccloud.com/pastebin/Dsx4swqV/zelfie.raku

[10:08] <lizmat> nice

[10:08] <lizmat> my @items = %list.keys.sort.grep: *.so;    # wouldn't it make sense to first grep and then sort ?

[10:08] <SmokeMachine> Yes, it would

[10:17] <disbot2> <librasteve> that is lovely - ship it!

[10:19] <disbot2> <librasteve> what do you think of a DSL editor - is it too hard? (I heard that it may need new Selkie edit features)

[10:20] *** librasteve_ joined
[10:27] *** guifa joined
[10:31] <SmokeMachine> librasteve: it will be shipped inside Selkie::UI… as a bin/

[10:32] <SmokeMachine> librasteve_: about the DSL editor, I still don’t get how it would/do. Could you explain a bit more about that, please?

[10:47] *** dano joined
[10:48] <disbot2> <librasteve> something like this https://langium.org/showcase/arithmetics/ - It would take a mydsl.rakumod with Grammar and Actions and a heredoc for DSL source on the edit side (syntax hilites can wait for v2.0) where the preview pane is text made by the actions (eg just say ~$match.made) (other view filters such as pdf or html can wait for v3.0)

[10:50] <disbot2> <librasteve> even better would be a 3rd (openable) pane for Grammar::Tracer output

[10:50] *** guifa left
[10:52] *** guifa joined
[10:56] *** guifa left
[10:58] *** Guest6550 joined
[10:58] *** Guest6550 left
[10:59] *** Guest6550 joined
[10:59] *** guifa joined
[11:01] <Guest6550> I have been playing with raku for a bit. There is one thing I have a problem with, though raku is a pretty awesome language. I have this problem with regex where I want to match a string, but part of it I would need to negate as in this should not appear in the text I have no idea how to go about searching for this in the documentation in the first place

[11:02] *** oodani left
[11:03] *** oodani joined
[11:04] *** guifa left
[11:06] *** oodani left
[11:07] *** oodani joined
[11:11] <SmokeMachine> librasteve_: something like what I wrote for grammars?

[11:13] <lizmat> Guest6550: could you give an example of a string that should match, and one that shouldn't?

[11:15] <Guest6550> lizmat something like Randomtext.S01 should not be a match for the reason it contains S\d\d and Random.other.Text.2026 should be a match since it does not contain the S\d\d 

[11:15] <SmokeMachine> librasteve_: I plan to continue playing with that, but for now this is how it looks: https://usercontent.irccloud-cdn.com/file/syXZI7yL/CleanShot%202026-05-06%20at%2012.13.18.gif

[11:17] <SmokeMachine> but I plan to make the output prettier... I also think we could color each part of the output with the same color we color each token and the part it matches on the string... but I don't know how to add colors to editable texts...

[11:18] <lizmat> Guest6550: well, one way to do that is:   !$string.contains(/ S\d\d /)      so simply negating the result of .contains

[11:19] <Guest6550> lizmat: that seems much simpler than the regex solution I was trying to build :)

[11:20] <lizmat> it's still a regex solution of sorts  :-)

[11:21] <lizmat> .contains is just a handy shortcut if you just want to know *if* something is in a string, not necessarily what or where

[11:22] <lizmat> and by negating that, if something is *not* in a string   :-)

[11:22] <Guest6550> yes, it does seem to be much more managable than building a more complex regex :-)

[11:37] *** Voldenet left
[11:37] *** Voldenet_ joined
[11:37] *** Voldenet_ is now known as Voldenet

[11:38] *** [Coke] left
[12:05] *** [Coke] joined
[12:41] <disbot2> <librasteve> oh sorry I had forgotten that you already made selkie-ui-grammar-playground - fantastic (I blame days of working on byzantine FatRatStr rounding code)

[12:42] <disbot2> <librasteve> brilliant - I hope to get DSL back to the foreground soon

[12:58] *** eseyman left
[12:59] *** manu_ joined
[12:59] *** manu_ is now known as eseyman

[13:16] *** lizmat left
[13:32] *** shareable6 left
[13:34] *** shareable6 joined
[13:37] *** lizmat joined
[13:47] *** lizmat left
[13:48] *** lizmat joined
[14:09] *** tejr left
[14:10] *** Aedil left
[14:11] *** tejr joined
[14:18] *** Aedil joined
[14:57] <disbot2> <melezhik.> https://news.ycombinator.com/item?id=48037017

[14:58] <disbot2> <melezhik.> Please vote if you like it , thanks

[15:26] <[Coke]> are there any http user agents in the ecosystem that respect 429 and will retry?

[15:26] <[Coke]> (Doesn't look like HTTP::UserAgent does)

[15:28] <[Coke]> (nor Cro)

[15:38] <coleman> automatic retry is tricky, because you definitely need to know about the context of the application to make a good decision. in Go there's some libraries that wrap the standard client, but I always want to roll my own because HTTP is so low level, and I always need to do some funky config

[15:38] <coleman> but Go isn't as expressive, so a wrapper library is probably going to be more powerful in Raku

[15:39] <[Coke]> I would definitely want guardrails on it (on x number of retrys, what's the algorithm for waiting, etc.)

[15:40] <[Coke]> In the meantime, will write my own for this module that is using HTTP:UA and wrap all the http calls in it rather than doing a subclass of the UA

[15:42] <coleman> here is some inspiration for the kinds of considerations https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-msg-config-route-v3-retrypolicy

[15:43] <coleman> envoy has all the complicated stuff laid out in its equally complicated configuration 

