🦋 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
|