🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel!
Set by lizmat on 6 September 2022.
00:01 reportable6 left 00:04 reportable6 joined 00:15 lichtkind left 00:24 jpn joined 00:30 jpn left 01:16 guifa joined
guifa has started work on the XML module 01:33
step one: translate from ancient Raku to modern Raku syntax
lol
method reparent (::(q<XML::Element>) $parent) <--- like really? 01:36
01:45 freeside left
pingu anyone know how I can just do print($T[$TN] ,$TN, "\n"); instead of doing $T[0..2] pastebin.com/U8B3QS75 01:46
01:51 Manifest0 left, freeside joined
guifa my $T = ('a','b','c'); say "{.head} {.tail}" for @$T Z ^($T); 01:52
evalable6 a 0
b 1
c 2
guifa Or actually maybe I don't entirely get what you're trying to do 01:53
Nemokosch guifa++
guifa Nemokosch: that re my answer for pingu or for the XML module? 01:54
tellable6 guifa, I'll pass your message to Nemokosch
pingu yeah I meant by actually using my function
it should print: a 0\nb 1\nc 2\n 01:55
guifa fun($T[$TN], $TN) would let you do print($t, " ", $tn, "\n") 01:56
but FYI you can simply `print($t, " ", $tn, "\n")` to `say "$t $tn"`
say does print, but with a newline, and variables in double-quoted strings are interpolated 01:57
Nemokosch is that not C-like enough? 😄 01:59
pingu well if I make it fun($t[$tn] , $tn) I get : Variable '$tn' is not declared. 02:00
Nemokosch guifa: I meant the XML module
I did some very basic maintenance on it but I definitely don't mind if it can be taken off the todo list 🙂
pingu just doin prin $t $tn is printing a b c 0\na b c 1\na b c 2\n 02:01
guifa no, I didn't mean make the signature fun($t[$tn], $tn), I mean when you call it in the loop
pingu ok 2 mins 02:02
this works now but my main code isnt working right 02:03
the pastebin was just a test
guifa (it might help here if you use very different variable names to avoid confusion here, e.g. sub fun($a, $b) { … }; my $x = …; loop (my $y = 0…) { fun $x[$y], $y }
Nemokosch not gonna lie, most of the time, I'm clueless what you are doing... and I'd like to think this doesn't often happen to me in the chat
pingu im learning raku by doing stuff and by also asking here 02:04
since thats the only way to learn raku it seems
guifa Nemokosch: the XML module was clearly designed waaaaaaaaaaay back (it was very likely one of the very first modules ever written for Raku)
tellable6 guifa, I'll pass your message to Nemokosch
pingu but I dont ask for entire piles of code cause thats cheating
guifa I posted a comment on one of the github issues, but there's a lot of reasons it's slow but I think I can speed it up at least a little bit 02:05
pingu I do try stuff to try and fix my errors , and thatvincludes thinking a lot
so yeah I dont just jump on irc for every error I get lol
Nemokosch pingu: I'm not saying you should. But sometimes it's really hard to figure out what your code is even supposed to do. There isn't a high level description of what you want to get, the variable names aren't descriptive and the whole thing is unlike any Raku you would see in any kind of tutorial 02:06
it reminds me of my journey in Hungarian-learning communities, when somebody would just randomly permutate the words and ask if the word order is alright 02:07
pingu they are not descriptive yes, this was just a small side program so I could try and figure out how to get the main program working
the main program has descriptive naming
Nemokosch (no joke, that was a fairly common learning method of people apparently, and a hell to deal with)
pingu hmm
Nemokosch well, you could still say what you are trying to achieve. It doesn't have to mean that you get a whole different piece of code back 02:08
pingu well, im doing as I have been ever since I joined this irc channel practically, 02:11
im trying to tokenize a file format called LDRAW
do processing on the created tokens and then write them back to file
02:12 jpn joined
pingu some tokens will be taken from keyboard input , most will be taken from the file 02:12
Nemokosch do you maybe have an example file you'd want to parse? 02:13
pingu sure
Nemokosch guifa: Timothy Totten legacy... tbh Template6 isn't even that bad, as much as I can tell. It's just hacky.
pingu but the thing is I dont want people to give me code to do the whole thing cause I wont understand it, I wont be able to therefore edit it and I wont learn anything 02:14
Nemokosch I think the fundamental API problem is that this eager builder pattern or how to call it
creating a new instance for every single operation basically
pingu 1 0 0 0 0 1 0 0 0 1 0 0 0 3024.dat 02:15
Nemokosch I'd expect serious wins solely by returning the same instance mutated
pingu 1 0 0 8 0 1 0 0 0 1 0 0 0 3024.dat
thats it, 2 lines
its the most basic lego assembly I can think of. 2 stacked 1x1 plates
Nemokosch is the 3024.dat weirdness also a part? 02:16
02:17 jpn left
pingu here is my github: github.com/Kris-Baker/LEGOscript/t...%5Craku%5C it works so far but if I remove the literals and replace them with ($format[$token] , $token) it seems to print one param then 2 then 3 then 4 all the way to the end 02:18
yeah 3024 is the part ID for a 1x1 plate 02:19
ill compare my test file to the real project and see if the test file is different 02:21
cause the test works fine
Nemokosch are we talking about the parser file? 02:22
pingu yeah 02:24
pastebin.com/vFLmKSd1 pastebin.com/ysKKDQnV ok it seems to basically be identical to testing.raku 02:25
Nemokosch which literals do you want to replace?
pingu the github one is the one that prints it weird
Nemokosch inside the ValidTokenChk? 02:26
pingu for now I just want to print the data back as it is but do the validations 02:27
but yes it will eventually print the data back differently potentially
Nemokosch > $format[$token] = sprintf($spec[$token], $line[$token]); ^ is this the line causing the problems? 02:28
pingu perhaps
with the code I pastebinned I get this crazy output:
pastebin.com/JsVRtLYb 02:29
with the github version It seems to do like a segway printing token 0 then token 0 and token 1 then token 0 and token 1 and token 2 etc 02:30
Nemokosch $format[$format] seems to be wrong
pingu so 1 then 1 0 then 1 0 0 then 1 0 0 0 then 1 0 0 0 0 then 1 0 0 0 0 1 etc 02:31
oops typo 02:32
should be $token[$format]
Nemokosch and the second argument should be $token, too
pingu shooopt $format[$token]
Nemokosch no, it should be $format[$token]
pingu yeah
Nemokosch see, that's why good variable names are crucial 02:33
pingu ok now I get pastebin.com/WKPUU2sc 02:34
so I tried using a range but then here I was given code that didnt need a range
and testing.raku worked then 02:35
here is testing.raku pastebin.com/4bWi2DYF
Nemokosch just think about it - the input token will always be a string 02:37
sprintf emits strings
pingu I thought it emitted whatever the format specifiers were? 02:39
Nemokosch no, I think you have it backwards 02:40
it takes an integer and prints it into a string, takes a float and prints it out to a string etc
pingu oh ok
thats actually not so bad then cause I dont need to stringify everything 02:41
Nemokosch but then you probably can't rely on the type check because everything is just a string 02:42
or better said: you should tune the type checks a bit 02:43
pingu the reason i did was because raku was printing 1 as 1.0 if I did %1.1f but if the source was 1.0 and I made it %d it would print 1
i.e why I made everything a string
Nemokosch instead of $input ~~ Int, you'd rather use $input ~~ Int(), meaning, "is it an Int if coercion is allowed?*
instead of $input ~~ Int, you'd rather use $input ~~ Int(), meaning, "is it an Int if coercion is allowed?* 02:44
pingu ok
you mean Str becomes Str() ? 02:45
Nemokosch all of your input is Str now 02:46
so checking for that is a bit pointless
it's almost like you could add it to the function signature: Str $tok 02:47
because either way it's gonna get invoked with strings
pingu but if I dont make the inputs strings I get the problem I was talking about before 02:48
so I'd have to try and fix that somehow
I couldnt find a way to inherit the precision from the input value rather than from the format specifier when googling 02:49
02:49 jgaz left
Nemokosch I mean, fine, make them all strings 02:50
pingu I dont want to add pointless padded 0's but I also dont want to hardcode a format specifier in case its too short
Nemokosch especially since that's the fundamental datatype coming from a text file
pingu yeah
Nemokosch BUT checking for them inside that check function is pointless
BECAUSE at that point they are already strings 02:51
pingu ok yeah
Nemokosch the thing to check is whether the string can be interpreted as a Num, Int, etc.
02:51 freeside left
and for that, you can use smartmatch with Num(), Int() etc 02:51
pingu I did that because I thought that the file somehow might not end up being read as strins
strings*
idk if raku can do that 02:52
read a file without stringifying it
might be more efficiant
also writing ' ' back to the ldraw output file is invalid ldraw 02:53
so '3024.dat' wont work
Nemokosch it can read binary files yes - but if the context is meaningful as text anyway, you probably lose more than you win
pingu 3024.dat will
yeah this is hard 02:54
and I tried to do it IN C!!!!!!!!!!!!!! for many years
that was like even harder
Nemokosch how old are you, if I may? 02:55
pingu 31
Nemokosch I'd say that's almost young in this community. But I hope this year will finally be the breakthrough with this ldraw parsing 😛 02:56
pingu me too :) I will say that raku is the language that I picked up the fastest and ive tried just about all of them 02:57
if you check outside of the /raku/ folder on my github you'll see C code, but my friend wrote that and thats obvioustly nowhere near the entire project 02:58
he is too busy most of the time and besides, he aint been on irc since mid dec last year 03:00
I think he took part in the brazil protests and went to jail
Nemokosch oof
anyway, I think it's about time I go to sleep 03:01
pingu same, later
Nemokosch 👋
03:05 freeside joined
el i found a way to truncate with scale x - x % scale 03:07
guifa Any ideas what the "No test source roots in the project" error is in Comma? I'd think it'd just use the t/ folder, but it seems not 03:08
03:10 freeside left 03:23 freeside joined
guifa got it figured out 04:10
04:23 linkable6 left, evalable6 left 04:24 evalable6 joined 04:25 linkable6 joined 04:26 freeside left, epony left 04:30 freeside joined 05:30 quotable6 left, reportable6 left, bloatable6 left, coverable6 left, evalable6 left, releasable6 left, shareable6 left, squashable6 left, tellable6 left, unicodable6 left, sourceable6 left, linkable6 left, committable6 left 05:31 sourceable6 joined, committable6 joined, releasable6 joined, unicodable6 joined, quotable6 joined, squashable6 joined 05:32 bloatable6 joined, coverable6 joined, linkable6 joined, evalable6 joined, tellable6 joined 05:33 reportable6 joined, shareable6 joined 05:46 freeside left 06:00 reportable6 left 06:01 reportable6 joined 06:02 pingu left
guifa Well, that's a start for the XML module. I mainly only touched on parsing, and I reduced CLDR parse for Z-languages from 133 to 125 seconds. 06:23
07:02 linkable6 left, evalable6 left 07:03 linkable6 joined 07:06 evalable6 joined 07:17 ProperNoun joined 07:21 cm left 07:22 ProperNoun left, cm joined 07:23 ProperNoun joined 08:10 plantanran joined 08:15 plantanran left 08:28 plantanran joined 08:43 plantanran left 08:48 jpn joined 08:53 jpn left 08:57 snonux joined 09:05 sivoais left, snonux left 09:24 jpn joined 09:30 jpn left 09:55 sivoais joined 09:57 sena_kun joined 10:08 snonux joined 10:18 jpn joined 10:25 snonux left, snonux joined 10:28 snonux left 10:34 Sgeo left 10:41 sena_kun left
Nemokosch guifa: please make sure whenever you get to a solid state, push to the repo, even if you don't immediately make a release to the ecosystem 10:44
10:44 sena_kun joined 10:46 jpn left 10:55 snonux joined 10:58 snonux left, jpn joined, rantanplan joined 11:03 jpn left 11:16 rantanplan left 11:19 rantanplan joined 11:20 rantanplan left 11:22 snonux joined 11:41 ab5tract joined 11:45 lichtkind joined 12:00 reportable6 left 12:01 reportable6 joined 12:05 Manifest0 joined
guifa Nemokosch: I don't have write access for it, but I'll start a fork and up it there 13:01
tellable6 guifa, I'll pass your message to Nemokosch
Nemokosch Oh really? 😦 13:03
lizmat: could you give guifa a commit bit to the community modules? 13:04
guifa I mean I'm sure someone can give it to me eventually
13:05 linkable6 left, evalable6 left
guifa but either way, I'm doing a LOT of changes. I'm going TRY to maintain 100% backwards compatibility, but if adjusting a less-common feature means massive gains on a common feature (like, say, opening)... I'll do it 13:05
so a fork seems best for now 13:06
guifa is confused. isn't a fat comma supposed to be always interpretted as a named argument and only Pair.new() is supposed to go as a positional?
13:07 linkable6 joined
lizmat guifa what's your Github nick again? 13:08
guifa alabamenhu
13:08 evalable6 joined
lizmat invite sent 13:08
guifa curses whoever stole `guifa` there, and then double curses github for not allowing alabameñu as a valid username (it was 2019, unicode was the rule already lol)
So interestingly, even though I knocked out a TON of what should have been slow regex in the XML grammar file, the load time itself for XML docs doesn't seem to have changed at all. Massive wins though in readability, but def need to figure out where slow down. JSON::Tiny is only about 2-4x slow as JSON::Fast, but XML is probably still about 20-40x slower 13:13
Nemokosch What is the counterexample for pair passing as named argument? 13:22
guifa I think you have to do |(Pair.new)
github.com/alabamenhu/XML/blob/spe...ar.rakumod <-- can compare between speedy (mine) and main (old) branches, oen of these is much simpler than the other 13:23
huh, profiling also shows that the grammar run is the slowest part too. well dang. 13:32
13:43 perlbot left 13:44 simcop2387 left 13:58 simcop2387 joined 14:05 perlbot joined 14:14 jpn joined 14:21 jpn left 14:22 jpn joined 14:27 jpn left 14:44 freeside joined
guifa Got a minor speed up by assuming (wrongly, of course) that the closing tag is the same as the opening tag. But <3% speed up. :-( 15:02
Nemokosch Well, what can I say... 15:07
Disappointed, not surprised 15:08
lizmat about jnthn's answer ?
"it probably needs a language design level solution rather than it merely wanting an optimizer bug fix" 15:09
Nemokosch I haven't seen that. What really needs a "language design level solution", though, is the grammar processing 15:11
It's a blocker of way too many things
I doubt I could add anything about the "optimizer bug fix". For me it's a straightforward demand: dispatch should never depend on the function body in HLL territory and that's that. 15:13
Whatever that takes, is the right thing to do 15:14
rf Good morning folks 15:35
Nemokosch Hello 15:38
Come to think of it - do yall sometimes check the content available about Raku? I mean, content coming from the "outer world" 15:39
rf define "outside world" 15:41
15:44 linkable6 left, evalable6 left 15:45 evalable6 joined, linkable6 joined
snonux where the pizza comes from 15:47
Nemokosch Outside of the active members of the community
I don't think it's hard to imagine
But if you have doubts, give me examples and I'm gonna say if it's "outer world" or not 15:48
😉
rf Some guy on medium 15:49
Lol
ugexe i dunno about "content", but I've worked at plenty of places that knew I was the "Perl6/Raku" person and were at least curious if i would pursue using it, or inquire what it could be useful for 15:51
Nemokosch well, if by "some guy" you mean not a contributor or frequent talker on conferences, then yes, that's outer world
ugexe: I think that also fits the context I'm bringing it up 15:53
like, getting sort of outsider feedback
rf A very prolific developer at my job likes to talk about Raku with me :)
But I'm not sure he has intentions to use it 15:54
ugexe theres a camelia plushie sitting somewhere on a desk at netflix
rf Nice. 15:55
Nemokosch it's good to know what a potential user would think, or what they even know about Raku 15:56
in the case of Mr Węgrzanowski, that was kind of disappointing, lol 15:57
I still really feel like making a kind of rant about that
Like at least don't boast with your ignorance...
rf The guy I talk with about Raku likes Perl 5 a lot, I tried to sell him on Raku with functional stuff and he though it was interesting. 15:58
I got a friend into Raku recently, he really likes the hyper operator :) 15:59
Nemokosch I also like that 😂 it just needs a certain approach 16:00
tbh I hope I can kind of rework that one day
it feels the "is nodal" trait should belong to the subroutines but rather the individual parameters of it 16:01
should NOT belong
/me casually missing the important words
16:06 jmcgnh left 16:11 rf left 16:18 jmcgnh joined 16:20 cfa joined
guifa I think I can probably shave off another 5-25%, but I wonder if we should also get a streaming version of XML in native Raku. As I'm reading into it, folks with large XML files apparently benefit quite a bit from those 16:38
lizmat yeah, streaming would be great :-) 16:41
16:41 freeside left 16:43 freeside joined 16:47 freeside left 16:49 freeside joined
guifa also realizing that fixing the accented > issue in XML is going to be tougher than I expected 16:51
in JSON::Tiny, the only place you can really have that happen in a valid document is inside of a quoted string
so the grammar does `token str { (:ignoremark \") ……… \" }` and then handles it neatly inside of `method str ($/)` 16:52
16:54 freeside left
guifa but with XML, the accented > can come from the parent's opening tag or the previous sibling's close tag 16:54
16:55 freeside joined 16:58 Bocaneri joined, Bocaneri is now known as Guest419
Nemokosch what does "streaming" mean here? 16:58
guifa It basically means it scans the file on demand rather than preprocessing the whole thing 17:00
17:00 Sauvin left 17:01 Guest419 is now known as SenFache
guifa extremely small memory footprint, with a trade off on other operations: sequential operations are faster, but random access is slower because it has to reprocess as it goes 17:01
Nemokosch so basically it isn't parsed as one thing 17:03
guifa exactly
so instant load 17:04
Nemokosch what if somebody, say, wants to iterate over the whole content of the XML?
guifa sequential iteration is fairly smooth 17:05
random access might have you reparsing large chunks several times over 17:06
so it's a trade off — not an all around winner
17:06 gfldex left, gfldex joined
Nemokosch what accounts for the big win with sequential iteration? 17:06
guifa you don't have to read the whole file in memory, and it doesn't really parse any more than a whole parse would have 17:07
so imagine if we wanted to make a parser to read a list of numbers 17:08
Nemokosch okay, indeed, that's a win with memory
guifa the file is "1 2 3 4 5 6 7 8" 17:09
Nemokosch but will it be a significant win with CPU time?
guifa for loading, yes
because it doesn't need to do the initial parse
Nemokosch "the initial parse" :cameliathink: 17:10
guifa ha I Mean it doesn't need to parse the whole file
Nemokosch not at once but ultimately it would basically do that, no?
guifa if and only if you're going to read the whole file
Nemokosch yes, that was my premise 17:11
guifa I don't know which one would win speed wise, but they'd be in the same order of magnitude I'd think
full initial parse might be faster all else equal, but it's gonna need to create a crapton of objects 17:12
and that in and of itself can take time
17:13 Geth left 17:14 Geth joined
ugexe its like a lazy list 17:14
guifa ^^ that's probably the better explanation, ty ugexe 17:15
ugexe (1..10).map({ sleep $_ }). accessing the first element lazily is fast, accessing the first element eagarly is slow
but if you wanted to actually access all elements the eager version would be faster (although this isn't a good example for showcasing that)
Nemokosch 😄 17:17
yes, I get the general advantage of lazy interfaces, with or without caching (from what I can remember, Entity Framework laziness didn't cache so it basically needed to be turned off if you were reusing the results) 17:18
I was just thinking, the overall resource demand is too high, eagerness aside 17:19
ugexe the other thing is you can start using the values that are streamed to you while its still parsing the rest
Nemokosch like it's not fine that grammars cannot be used for anything remotely large
ugexe even if you start { eagarly-parse-xml(...) } you'd still have to wait for it to parse everything to use a single value
17:19 ab5tract left
ugexe streaming you can start using the earlier values while another thread is still parsing the rest 17:20
Nemokosch makes sense
and it's definitely way better than entering nirvana state and not doing anything to leverage the situation 17:21
but yes, I'm gonna still say, whether we can help that or not, grammars being very costly is a blocker
correct me if I'm wrong but the whole one-pass parsing of Raku is very much influenced by grammars simply being slow 17:22
17:22 jpn joined
ugexe i would be surprised if grammars being slow was even comprehendable at the time one-pass parsing was decided 17:23
Nemokosch that sounds surprising because several syntax anomalies are direct results of one-pass parsing 17:24
not sure why anyone would have chosen that - apart from performance
lizmat is looking forward to Nemokosch coming up with a better grammar engine
and that's half serious 17:25
ugexe "One-pass parsing is fundamental to knowing exactly which language you are dealing with at any moment, which in turn is fundamental to allowing unambiguous language mutation in any desired direction. "
Nemokosch tbh the price seems quite high 17:26
even if you are only using one sublanguage, you are gonna get weird syntactic ambiguities with awkward resolutions (add whitespace here, there, everywhere) 17:27
17:27 jpn left
ugexe "(Generic languages are allowed, but only if intended; accidentally generic languages lead to loss of linguistic identity and integrity. This is the hard lesson of Perl 5's source filters and other multi-pass parsing mistakes.)" 17:27
Nemokosch another thing to mention here is that these polemics are usually so cryptic that it's impossible to argue for or against them :v 17:29
same thing happened for "interface consistency" a couple of days ago - the argument was either too vague or easy to dismantle once you grasped what it was trying to say 17:30
ugexe you are about 20 years too late for that
this stuff was designed by people with the entire language in mind, before the language existed at all
Nemokosch but you know, let's be honest for a second
ugexe people with a lifetime of experience to decide which tradeoffs to choose in relation to the rest of the language design as a whole
Nemokosch they could very easily be wrong about the language they have never seen implemented or used, or never even had to use themselves 17:31
ugexe its easy to say "oh we could improve this one thing by just doing it the way i envision it", but that would be short sighted
i wonder how many large systems you've worked on
i wonder how many large systems you've worked on 17:32
systems that are larger than most single people can contain in their head
Nemokosch not sure if that is really related to the discussion
also, I don't think there is anything wrong about acknowledging that a transaction might have been wrong, regardless whether it's possible to undo it. If we can acknowledge that it was wrong, we can at least compensate for it 17:33
ugexe if you want to state something like "this could have been designed better" then yes, it kind of is
Nemokosch I don't see how, to be honest
ugexe then i don't see how you can see so much wrong with designs 17:34
like 5 minutes ago you were learning about the benefits of streaming data
Nemokosch by literally being forced into having to deal with the consequences of tradeoffs
ugexe yes, in isolation
Nemokosch but then I don't get how you could confidently say that the tradeoff must have been the right one 17:35
ugexe well, one person wrote up hundreds of design docs having a cohesive understanding of the entire system 17:36
Nemokosch that happen to be really hard to read for simple linguistic reasons, yes
ugexe you are having a hard time doing some task because of a small subset of the system
out of those two options why should I think you have a better understanding? 17:37
Nemokosch honestly, I don't know what point you are trying to make
or what presumptions you even roll by
ugexe i'm not saying you aren't right, but you can't expect us to take your opinion as seriously as say larrys
Nemokosch And I'm also not saying that I'm the designer of Perl 6 17:38
What I am kind of implying is that it is possible that lack of proper communication has been a problem from early days of the design of the language. Not with me, because I was somewhere in the kindergarten 17:39
lizmat yet you question all of the decisions that have been made over a period of ~15 years by many bight people
ugexe i don't think you are familiar with how the design process went then
lizmat *bright
Nemokosch how would you know if I question "all of the decisions"?
let's not go overboard
lizmat we can all be discussing things here back and forth, but if you have a problem with a decision, either: 17:40
1. make a problem-solving issue for it
2. come up with a fix
Nemokosch nobody is forcing you to "discuss it"
just mentioning it is not "discussion", a discussion takes multiple participants 17:41
lizmat fair point: I will thus recuse myself from any discussion here about this subject
Nemokosch if I'm wrong, you are free to point out where
(I'm not an oracle writing hundreds of pages that unfortunately nobody can read by now, after all)
ugexe it gets hard to go through the "if im wrong prove me wrong" when you have to do it often 17:42
Nemokosch you know, I felt the same thing reading the apocalypse containing "interface consistency" or what it was called 17:43
ugexe most of what you said would be fine if said differently. but you seem to come off as speaking with an authority over the subject (or even comp sci in general) I don't think you have yet
Nemokosch well then please divide the content with my tone
ugexe like your questions or comments don't come off ass curious, they come off as complaining usually 17:44
Nemokosch Well, there is both. Is something comes up in a distressing context (like one-pass parsing ambiguities here), I think it's only fair that it sounds more like "complaining"...
lizmat "distressing" is what you make it 17:45
Nemokosch Also, I have to say I feel some kind of neglect to, you know, actual user experience (not just mine obviously), like that's also something to take into account, not just design from way before implementing the language 17:46
I'm not saying that users design the language or anything like that but the possibility of harmonisation should exist at least in theory
Rather than the reflex of bouncing stuff back to 20 years ago 17:47
17:47 abraxxa-home joined
I think we can at least agree that the whole state of things is not like it would have been imagined 20 years ago 17:48
ugexe if you don't get why understanding why things are the way they are is important then i'm not sure we need to continue this conversation
lizmat that makes it clear to me that you've never worked on any project of any size
it *never* comes out like you imagined it 17:49
*NEVER*
Nemokosch I just mean that there is no reason to act as if all judgements were correct
lizmat and I can state that with 46+ years of programming
nobody is saying all judgements are correct
ugexe There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, “I don’t see the use of this; let us clear it away.” To which the more intelligent type of reformer will do well to answer: “If you don’t see the use of it, I certainly won’t let you clear it 17:50
away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it.”
Nemokosch ugexe: do you think you "understand why things are the way they are"?
as a binary choice
ugexe this isn't about me
if you want to deflect i can go back to what i was doing 17:51
Nemokosch then substitute yourself for literally anyone around the project
do you think such a person exists?
lizmat dinner&
ugexe you are exactly what chesterton's fence is talking about
Nemokosch "this isn't about me"
17:51 lizmat left
ugexe its about your challenging the existing design decisions with little regard for why they are like that to begin with 17:52
fs.blog/chestertons-fence/
Nemokosch This doesn't have to be about me. 17:53
ugexe you are the one that is distressed, no?
"As simple as Chesterton’s Fence is as a principle, it teaches us an important lesson. Many of the problems we face in life occur when we intervene with systems without an awareness of what the consequences could be." 17:54
Nemokosch It's about the phenomenon that you aren't allowed to even mention perceivable user-level problems because you need some extra legitimacy that you can only earn by a journey you yourself might not want to subject yourself to
What good comes out of it?
ugexe maybe you should just read the damn blog post and see what bad comes out of what you are suggesting
Nemokosch what am I suggesting? 17:55
ugexe regardless, this is going nowhere
Nemokosch that people shouldn't be redirected into a sinkhole if they "complain" about something?
18:00 reportable6 left 18:01 reportable6 joined
This is not even a technical or logistical problem, it is a social problem of perceiving a complaint as something intrinsically bad 18:01
ugexe do you want to be around people who complain all the time? 18:09
south park made an episode where Stan wakes up one day realizing everything is (rightfully) shit and complaining about it constantly. along the way his friend no longer want to be around him 18:10
in other words: complaining is ok. but something about the way you go about it doesn't come off in a flattering way 18:11
18:11 Sgeo joined 18:17 jpn joined 18:22 lizmat joined 18:24 jpn left
bartolin I don't think I can add much to the earlier discussion, but I've enjoyed the blog post about Chesterton's fence. Didn't know about that. So thanks, ugexe++ :) 18:27
lizmat indeed, ugexe++ 18:32
shmup lizmat, 46 years is an achievement. that rules 18:33
lizmat no, it doesn't 18:34
I still make stupid mistakes :-) and misjudge situations, and am grumpy every now and then :-)
18:35 cfa left
shmup oh no a human!!! 18:35
guifa ssssssshhhhhh 18:36
liz isn't human, she's a butterfly
El_Che another reason for the grumpy butterfly award 18:37
Nemokosch I don't think "people who complain all the time" are all that real, to be honest. I only know people who complain sometimes, and that's quite okay imo 18:39
shmup :grumpy-butterfly:
testing a word out: grumpyfly 18:40
Nemokosch I don't know if this has its own name but it's probably an umpteenth iteration of survivor bias
and as such, it's not that far from this Chesterton fence thingy
shmup read the room. whatd you have for breakfast 18:41
Nemokosch actually, I try to remind myself to point out things that "just work" every now and then, to give representation to that voice as well 18:42
by the way, that's part of the reason I asked if yous check out "outer world" feedback from the language sometimes - it's not only about the negatives really 18:44
18:46 lizmat left
shmup lol hillarymilesart.wordpress.com/port...tterflies/ 18:49
anyone familiar with any MUDs people have hacked on w/ raku? i know about taostation which is spiritually there, but no MUD 18:51
Nemokosch what is MUD? 18:52
bartolin by the way, Nemokosch, from reading the backlogs here I don't perceive you as "always complaining". Sometimes discussions get heated, but that's not the whole picture. (Personally, I try to stay away from those heated discussions, because that impacts the -Ofun part ...)
MUD -- Multi User Dungeon, I'd guess: my constant $?UNICODE-VERSION = %( 18:53
# Supported Unicode version per Java (major) version.
# (cmp. docs.oracle.com/en/java/javase/19/...cter.html)
'8' => '6.2',
'9' => '8.0',
'10' => '8.0',
'11' => '10.0',
'12' => '11.0',
18:53 Geth left
bartolin '13' => '12.1', 18:53
'14' => '12.1',
'15' => '13.0',
18:53 Geth joined
bartolin '16' => '13.0', 18:53
'17' => '13.0',
shmup multi-user dungeons, Nemokosch. text based games played over telnet or with a MUD client (the irssi user might also prefer tintin++ for muds). the original MMOs, these were
bartolin '18' => '13.0',
'19' => '14.0',
Oops, sorry :(
shmup their height was the 90s, they survive today though 18:54
Nemokosch 😮
I don't mean to cause "unfun" to anyone on purpose, although my (maybe controversial?) take is: the concept of -Ofun is not sufficient to hold a project with a goal together. The only way it could work is if fun itself is the purpose. 18:55
(for me, the fun comes from the purpose, rather than being the purpose itself) 18:57
18:58 Geth left, Geth joined 19:03 jpn joined 19:10 epony joined 19:12 rf joined 19:13 Bocaneri joined, Bocaneri is now known as Guest8231 19:14 rf left 19:15 rf joined, SenFache left 19:17 jpn left 19:50 ProperNoun left
Anton Antonov What Raku packages can I use to ingest data in HTML pages? The "data" refer to is placed in tables (that loosely follow HTML's table specs and the fields can have different stylings, etc.) I consider using "HTML::Parser::XML", but maybe there is something implemented already. 19:54
To clarify -- "HTML::Parser::XML" is a generic parser/converter that might help programming a data extractor. 19:55
20:13 ab5tract joined 20:15 abraxxa-home left 20:31 lizmat joined
lizmat have you considered lynx --dump ? 20:32
Anton Antonov @lizmat Hmm... No, I have not. I have to check it out. 20:37
lizmat it's a bit like using a hammer, but it may just produce what you need :-) 20:38
20:41 Geth left, Geth joined
tonyo html parser xml is an old module 20:54
it does try to correct poorly formed html, though, which may be helpful
20:55 ab5tract left 21:00 ab5tract joined
shmup is it fair to say that if i see a vim modeline i see liz :P 21:02
21:03 Guest8231 is now known as SenFache
lizmat could well be, since I use vim :-) 21:07
Anton Antonov @tonnyo Thanks! Good to know... 21:22
shmup because i'm merely curious about a perspective lizmat, what's the convenience for you? working from systems without your vim configurations? 21:26
lizmat I have a minimal vim config and a lot of muscle memory 21:27
shmup sorry i wasn't clear at all, i meant the appeal to use the modeline versus some minimal vim configuration. i too adore vim 21:28
probably a modeline is part of your muscle memory haha 21:29
lizmat well... at some point people added vim modelines to the core, and I just made sure they're consistent
Anton Antonov @tonyo What would be a good alternative of "HTML::Parser::XML"? Looking at raku.land search results for "HTML" none seems more relevant. 21:31
Hmm... it looks like "DOM::Tiny" is a competitor of "HMTL::Parser::XML". 21:32
shmup not liking the API? Tiny looks nice though, good tests 21:41
21:42 thundergnat joined
thundergnat Anton Antonov: It can be fiddly to set up but I have had success using raku.land/github:Skarsnik/Gumbo 21:44
See rosettacode.org/wiki/Mersenne_primes#Raku or rosettacode.org/wiki/Rosetta_Code/...mples#Raku
21:49 sena_kun left 21:50 sena_kun joined 21:56 thundergnat left
Anton Antonov @thundergnat Ok, good to know. And yes it does seem "fiddly to set up." (I made my first attempt.) 21:57
guifa is there any way to do 22:06
m: sub foo { return Empty, 'b' }; my ($a, $b) = foo; say $b;
camelia (Any)
guifa such that $b is set to 'b' and $a is actually set to the empty Sliip?
Nemokosch not sure if slips respect itemization 🤔 22:08
(X and Z don't respect slips, btw)
guifa I mean I get the issue is I'm definitely trying to abuse the point of slips haha 22:09
Nemokosch oh it's on my list...
github.com/2colours/Raku-ideas/blo.../Issues.md point no. 4
I can be wrong about it but there's at least a reason why I wrote it there 😛 22:10
tonyo the html parser xml should still work, i just haven't looked at it in a long time 22:13
22:24 sena_kun left 22:42 deoac joined 22:45 melezhik joined
melezhik o/ 22:46
SparrowCI now supports builds for branches if someone is interested 22:47
rf Thanks for this melezhik, I am going to use this soon for Humming-Bird
melezhik rf: ++
Workflow is not very intuitive and require some steps , eventually I will improve , but for enough it is ok 22:48
enough -> now 22:49
22:49 melezhik left 22:52 melezhik joined
rf I am going to start a big feature for Humming-Bird next week, hopefully this will make it easier 22:53
To keep branches tested
ab5tract Nemokosch: "they unwrap even if they are in Scalar containers - is this desirable?" 22:54
tellable6 ab5tract, I'll pass your message to Nemokosch
ab5tract what does this mean?
22:56 melezhik left
Nemokosch m: (1, 2, $(slip 4, 5, 6), 42, $(slip 444, 53)).say 23:01
Raku eval (1 2 4 5 6 42 444 53)
Nemokosch this
tonyo melezhik: can you disable tar in your config for fez and try bundling again? i can't repro the issue you're seeing 23:33
tellable6 tonyo, I'll pass your message to melezhik
23:48 melezhik joined
melezhik . 23:48
tellable6 2023-02-05T23:33:23Z #raku <tonyo> melezhik: can you disable tar in your config for fez and try bundling again? i can't repro the issue you're seeing
23:52 melezhik left