00:08 arkiuat left 00:30 ds7832 left 00:31 arkiuat joined 00:36 arkiuat left 00:39 arkiuat joined 00:41 human_blip left 00:43 human_blip joined 00:44 arkiuat left 00:55 human_blip left 00:57 human_blip joined 01:00 arkiuat joined 01:04 kst left 01:06 arkiuat left 01:11 arkiuat joined 01:18 sibl joined 01:19 arkiuat left 01:25 arkiuat joined 01:43 topnep left 01:44 topnep joined 02:03 hulk joined 02:05 kylese left 02:12 arkiuat left 02:15 arkiuat joined 02:20 arkiuat left 02:22 arkiuat joined 02:34 Aedil joined
SmokeMachine I'm rewriting my `Sourcing` (an module to facilitate writing EventSourcing code in Raku)... Could someone telme if this code makes any sense to anyone, please? www.irccloud.com/pastebin/ussVylOh/ 02:52
03:01 kylese joined, hulk left 03:15 kylese left, kylese joined 03:41 sibl left, sibl joined 03:48 topnep left 03:50 sibl left, topnep joined 03:58 sibl joined 04:35 sibl left 05:39 kjp left 05:41 kjp joined 05:46 kjp left, kjp joined 05:54 topnep left 05:55 topnep joined 06:03 Sgeo left 08:00 abraxxa joined 08:34 justache left
librasteve SmokeMachine: I took a quick look - I would say that the first half with the declarative OO stuff is very clean and tidy indeed 08:38
08:39 sibl joined 08:41 justache joined
as a newcomer, I am a bit mystified at the purpose of the is-deeply things - oh, I see that these are the tests (so that is all fine fine) 08:41
SmokeMachine Yes, that’s a test. 08:44
And that’s always calling `sourcing` because the “state” is created when you call that. Usually it will get all events for that commander/projection instantiate a new obj, run apply for all the events to recreate its state, unless it stores the last state as cache, so it can start from the last state and get only the events after that state. But by default, the plugin::memory will store the cache. 08:48
08:49 abraxxa1 joined
SmokeMachine I’m thinking if it would make sense to add a `is command` to some methods to the command itself get the events and run the apply and not need to call `sourcing`… 08:50
librasteve ok - that part is an emergent feature of the module, so suggest that you repeat these words in the doc ;-) 08:51
SmokeMachine Yes… I should… 08:52
08:52 dakkar joined
SmokeMachine What do you think about the `is command`? 08:52
08:53 abraxxa left 09:03 librasteve_ joined
librasteve I don't see is-command 09:05
my initial thought on commander Account {...} was that this is a bit of a strange terminology - but bear in mind that I know absolutely nothing about the sourcing idea - so maybe this is customary 09:07
I then thought maybe manager Account {...} would be a better name for this, but then I am looking at a bank account example so I suspect that I am wrong in this for the general case and anyway manager is a very weak name 09:08
I guess that you could use method Xyz is command {...} in a regular class 09:09
so, on balance, I am fine with this terminology
Voldenet SmokeMachine: it would be useful to have command validation, e.g. in `withdraw` you could end up with negative balance - some things may not be validable through simple `where` on a state of the object in case fields depend on each other 09:28
I'm not sure how I'd express something like `has Rat $.amount where * >= $.allowed-negative-balance;` 09:29
maybe some explicit validation contract could be possible 09:30
SmokeMachine librasteve_: on my 1st version, it was called `aggregation`… I’m still searching for a better name…
Voldenet and imagine situations where commands have different constraints depending on the situation 09:32
e.g. loan vs deposit
SmokeMachine Voldenet: is the line 70 (www.irccloud.com/pastebin/ussVylOh) not enough? 09:33
Voldenet SmokeMachine: if you start two withdraws at the same time and constraint validation starts exactly at the same time for both operations, you'd end up with negative balance 09:34
sadly custom phasers are impossible, but
something like `CONTRACT $!amount >= $amount` 09:35
librasteve_ chatJippity says use `aggregate` www.irccloud.com/pastebin/Ml3Vg8qf
Voldenet or `CONTRACT $!amount >= 0`
that says "after the operation or while merging effects of the operation into current snapshot, makes sure that this contract is satisfied" 09:36
librasteve_ its pretty insistent that this is the customary term
SmokeMachine That’s the thing… in theory you should never have that problem… it should only run 1 command at time and before any command run, it will apply all the events, so it will be on the most recent state… (I’m still working on that part of having only a single command running…)
Voldenet but in practice that is severely limiting, you'll end up with distributed locks 09:37
and if you're doing locking, why bother with event sourcing
event sourcing is great because it can be optimistically processed and merged after command execution 09:38
though using good old "row version" optimistic concurrency solves this more easily 09:39
that can pretty much make it non-locking in the usual case
SmokeMachine Voldenet: yes, I’m thinking on adding that… but still thinking how to handle commands that generated same version events… 09:40
Because both will return no error, right?! 09:41
Voldenet hm, It depends, if you'd end up with invalid state, one should return error I think 09:42
hm, maybe things like `INVARIANT $!version` would make it more sane for optimistic concurrency 09:43
09:43 sibl left
Voldenet so you can say "this field can't change, otherwise the result of the command will be invalid" 09:43
SmokeMachine I mean, currently the last event is on status 3, for exemple, than 2 commands run at the same time, and bot create events on version 4 and then both return ok. When apply handle the events, it will discard the second one, but both commands returned ok… 09:45
10:16 arkiuat left 10:39 arkiuat joined 10:43 arkiuat left 10:54 sibl joined 11:08 abraxxa joined 11:10 arkiuat joined 11:12 abraxxa1 left 11:15 arkiuat left 11:32 arkiuat joined 11:37 arkiuat left 11:40 arkiuat joined 11:45 arkiuat left 11:55 arkiuat joined 11:58 sibl left 12:00 arkiuat left 12:04 abraxxa1 joined 12:05 abraxxa2 joined 12:06 arkiuat joined 12:07 abraxxa left 12:09 abraxxa1 left 12:11 arkiuat left 12:20 arkiuat joined 12:25 arkiuat left
[Coke]_ it's too late, but "subtest" feels like the wrong name for a thing that contains other tests. :) 12:26
12:27 [Coke]_ is now known as [Coke]
antononcube I think the reasoning is how it looks in print out reports of "Test" -- each subtest gives just one line. 12:28
12:31 abraxxa joined 12:34 abraxxa2 left
[Coke] I don't think it was reasoned for us, it was taken from TAP/P5. 12:42
and at the time, changing it would have been confusing, for sure. 12:43
12:43 arkiuat joined
antononcube I forgot about TAP... 12:44
12:48 arkiuat left
librasteve surely keeping the industry standard name is an unrakuian activity 12:49
12:51 arkiuat joined 12:56 arkiuat left 13:20 arkiuat joined 13:25 arkiuat left 13:30 elcaro left, elcaro joined
[Coke] You had to make a cutoff somewhere. :) 13:32
Geth raku.org: librasteve++ created pull request #300:
Logos 2.0
13:33
librasteve ^^ made a few design tweaks and changed a couple of logos - so merged directly to dev.raku.org 13:38
will take 10-15 mins for the server to pick up the new image 13:40
13:52 arkiuat joined 14:15 topnep left 14:16 topnep joined 14:49 ShimmerFairy left, Pixi left 14:57 hvxgr_ joined 14:58 arkiuat left
Geth raku.org/dev: 4 commits pushed by librasteve++ 14:58
15:07 Pixi joined 15:19 arkiuat joined
[Coke] ew. github is automatically turning -- into an endash when entering a bug title 15:26
(or is it my browser? maybe)
Done. 15:30
ww
15:30 arkiuat left
[Coke] How to get crag to convert between ºC/F ? 15:34
coleman macos might be responsible for the dash conversion (if you use macos) 15:36
[Coke] Tried several variants, this one seems the closest based on docs and other error messages: 51ºF.in: <ºC>
coleman they have global text input settings.
[Coke] coleman: I do
I have some manually under "Text Replacements" (which don't appear to be working in this iTerm, oddly. 15:38
that crag line dies with a variable I'm not even using: Error: Type check failed in binding to parameter '$x'; expected Real but got Physics::Measure::Angle (Physics::Measure::An...) 15:39
coleman I just checked on my machine and there is a setting called "Use smart quotes and dashes"
[Coke] Thanks!!
15:40 arkiuat joined
[Coke] anyone know who is running 15:45
raku-knowledge-base.podlite.org ?
15:46 librasteve_ left
lizmat I would think Alexandr Zahatski 15:47
github.com/zag
15:49 arkiuat left
antononcube We talked about A.Zahatski's work yesterday at the study group. 15:49
15:50 arkiuat joined
lizmat antononcube any conclusions ? 15:50
15:52 librasteve_ joined
librasteve_ notable6: weekly 15:52
notable6 librasteve_, 2 notes: 2026-03-12T09:34:39Z <librasteve_>: talk submissions to TPRC are open, deadline coming up ; 2026-03-15T13:35:24Z <librasteve>: discord.com/channels/5384078799804...7310893178
15:56 arkiuat left 15:57 arkiuat joined
antononcube @lizmat Well, it was more in regard of one my topics "drop vi (you vi-addicts! You!) and use interactive Raku-ready-IDEs." 15:57
So, the general idea is that his apps can be extended to execute Raku in a Literate Programming fashion. I talked A.Zahatski about that a few years ago, but nothing further has be done. (As far as I know.) 15:59
lizmat thing is, a lot of the stuff I do is in the core... and IDEs are not ready to deal with that, afaik 16:00
antononcube 🤷‍♂️ it is fine. I am just trying to indicate how the dicussion started. 16:01
(At that meeting.)
lizmat understood. :-)
it's too bad that zag gave up on working together with Richard and Damian on further development of Rakudoc 16:02
antononcube I used podlite only a few times. It is good but with Jupyter and Markdown I have the same functionalities.
And Jupyter and Markdown are more "universal" when comes to notebook / document conversion, and GitHub posts or blog posts. 16:04
16:13 japhb left 16:17 arkiuat left 16:20 arkiuat joined 16:23 japhb joined 16:27 abraxxa1 joined 16:31 abraxxa left
librasteve_ rakudoweekly.blog/2026/03/16/2026-...-day-2026/ 16:34
lizmat librasteve_++ 16:35
16:46 human_blip left 16:48 human_blip joined 16:54 abraxxa1 left 17:30 dakkar left 18:25 topnep left, topnep joined, gabiruh left 18:26 gabiruh joined 18:44 causal joined 18:46 librasteve_ left 19:05 sorenson left 19:08 sorenson joined
ab5tract I use intellij when working on the core 19:51
19:57 Aedil left 21:42 Sgeo joined 21:57 sacomo joined 21:59 sacomo left
tbrowder librasteve_: pm? 22:22
tellable6 tbrowder, I'll pass your message to librasteve_
22:34 topnep left 22:36 topnep joined 23:05 gabiruh left 23:09 gabiruh joined 23:29 johnjay left 23:34 johnjay joined