»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
Pllll "Zoffix Znet started this discussion again early October 2018" ... That wasn't the start. That was the CONCLUSION to a 6.d release item that was posted MORE THAN A YEAR AGOgithub.com/perl6/6.d-prep/commit/0...eba1540682 00:03
vrurg m: perl6 -e 'class A { method foo ( Int $i ) { "A::foo($i)" } }; class B is A { method foo ( Int $i ) { return callsame ~ "B::foo -> " if $i == 0; callsame ~ "B::foo( $i ) -> " } }; say B.new.foo(1)' 00:13
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3perl6 -e7⏏5 'class A { method foo ( Int $i ) { "A::
expecting any of:
infix
infix stopper
postfix
statement…
vrurg m: class A { method foo ( Int $i ) { "A::foo($i)" } }; class B is A { method foo ( Int $i ) { return callsame ~ "B::foo -> " if $i == 0; callsame ~ "B::foo( $i ) -> " } }; say B.new.foo(1)
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling callsame(Str) will never work with declared signature ()
at <tmp>:1
------> 3B is A { method foo ( Int $i ) { return 7⏏5callsame ~ "B::foo -> " if $i == 0; call
vrurg Could some body explain this error?
Swapping callsame with string fixes the problem. 00:15
timotimo vrurg: callsame isn't a term, though maybe it should have been; you need () 01:14
timotimo callsame ~ "B::Foo( $i )" is being parsed as callsame(~"B::Foo( $i )"); 01:14
vrurg m: class A { method foo ( Int $i ) { "A::foo($i)" } }; class B is A { method foo ( Int $i ) { return callsame() ~ "B::foo -> " if $i == 0; callsame() ~ "B::foo( $i ) -> " } }; say B.new.foo(1) 01:15
camelia A::foo(1)B::foo( 1 ) ->
vrurg timotimo: documentation defines it as a sub. subs are supposed to be terms, aren't they? 01:16
timotimo no, subs eat up arguments by default, terms don't 01:16
i wonder if we could pass the info from the parser to the optimizer that there was a balanced number of spaces around the ~ so that the optimizer could point out that perhaps an infix was interpreted as a prefix accidentally 01:17
vrurg That would be great. 01:17
timotimo doing that might require touching EXPR 01:18
vrurg is always using () with subs; thus forgot about them consuming arguments...
vrurg timotimo: thanks! 01:19
timotimo NP!
SmokeMachine timotimo: it's starting to work! www.irccloud.com/pastebin/CrAvcoN8/ 02:26
timotimo: Im using control exceptions for that... any better idea? 02:27
SmokeMachine timotimo: a better example www.irccloud.com/pastebin/OHw2cHGA/ 02:36
timotimo: now I have to add it to the ast... 02:37
timotimo oh, i didn't even know sqlite3 has type coercers 02:41
SmokeMachine timotimo: that’s not sql...
timotimo oh
SmokeMachine Just gist...
timotimo OK!
it does look promising :)
SmokeMachine :)
timotimo will be fun to do it with multiple vars in multiple places 02:42
SmokeMachine Thanks for the idea!
That will! But I’m to far from that yet...
timotimo: I haven’t tried, but I think it’s already working (just the printing) to ??!! 02:44
timotimo cool
SmokeMachine So, have a good night! Thanks!
timotimo seeya! 02:45
AlexDaniel lizmat: oh! t/*/*.t thing was by donaldh, not me! I just merged their PR
lizmat: github.com/rakudo/rakudo/pull/2454
I'm talking about: “Aleks-Daniel Jakimenko-Aleksejev made the make t/spec/foo/bar.t rule work again, allowing for selective spectesting of one or more files.” 02:46
timotimo i can edit the post right now 02:47
"Donald Hunter" is correct?
AlexDaniel please do
yes
timotimo updated 02:48
AlexDaniel timotimo++ thank you 02:49
timotimo YW
buggable New CPAN upload: HTTP-Request-FormData-0.2.tar.gz by HANENKAMP modules.perl6.org/dist/HTTP::Reques...:HANENKAMP 02:52
buggable New CPAN upload: Mathx-Stat-0.1.15.tar.gz by HOLYGHOST modules.perl6.org/dist/Mathx::Stat:...:HOLYGHOST 03:52
holyghost If someone would like to run the tests of Mathx::Stat ? 03:56
If it works, the package goes to 0.2 with more code 03:58
timotimo holyghost: you have a typo in DistributionPopulation.pm6 04:02
that prevents it from working
there is a : missing in line 3 where it says "Mathx::Stat:Population"
why did you put it up on cpan already?
and you're still writing .foo instead of self.foo which makes things Not Work 04:03
No such method 'length' for invocant of type 'Array'. Did you mean 'elems'? 04:04
in method Expectance at /tmp/Mathx-Stat/lib/Mathx/Stat/DistributionPopulation.pm6 (Mathx::Stat::DistributionPopulation) line 19
please for the love of all that is holy and ghostly test your code even just a little bit before you put it up on cpan
holyghost timotimo: I uploaded uncompilable code because I didnt know then it had to go on github first 04:05
So should I update CPAN then ?
I was all wrong with things like .population 04:06
anyway thx, I'll edit this week 04:07
I asked Xliff to do a PR
timotimo .population is short for $_.population 04:12
that's fine, but you didn't put anything into $_
so it just executes .population on the default value that is in $_, which is just the Any type object 04:13
which doesn't have a population method, normally
timotimo if the mathx::stat module was already there, then you could have left it in the state it was and only upload something new once it compiles 04:14
holyghost ok, but I just uploaded, I know now 04:16
I'll fix later on 04:18
I thought it was short for a public variable
timotimo you're using "ok" in the test function again as if it compared two values
timotimo no, that requires the sigil in front 04:18
holyghost not $_
timotimo $.foo is $(self.foo), .foo is $_.foo
holyghost is 04:19
timotimo you probably want something other than is 04:19
m: use Test; is 1.5, "1.5", "a string and a number are equal enough for 'is'"
camelia ok 1 - a string and a number are equal enough for 'is'
timotimo see, "is" uses stringification to compare stuff 04:20
so anything that will .Str to the same thing as another thing will result in a passing test
you probably want is-deeply, or cmp-ok
m: use Test; cmp-ok 1.5, '==', 1.5
camelia ok 1 -
holyghost ok thx again 04:21
timotimo don't forget about fixing .length, too
holyghost length has been fixed 04:21
timotimo m: my $p = 0.1; loop (my $i = $p; $ < 1.0; $p++) { say "p is $p" }
whoops
m: my $p = 0.1; loop (my $i = $p; $p < 1.0; $p++) { say "p is $p" }
buggable New CPAN upload: Mathx-Stat-0.1.16.tar.gz by HOLYGHOST modules.perl6.org/dist/Mathx::Stat:...:HOLYGHOST 04:22
camelia (timeout)Use of uninitialized value of type Any in numeric context
p is 0.1
in block <unit> at <tmp> line 1
Use of uninitialized value of type Any in numeric context
in block <unit> at <tmp> line 1
Use of uninitialized value of type Any …
04:22
p is 0.1
timotimo your loop only does a single iteration
holyghost Xliff: hi, if you want to PR Mathx-Stat with .population -> $.population fiexes
timotimo and $i is created, assigned to, but never used
holyghost s/fiexes/fixes 04:23
Xliff holyghost: I am a little under the weather to day. Keep making fixes in your repository and I can pick it all up in the same PR. 04:24
holyghost Xliff: ok, there's 2 tests now
Xliff OK, good!
G'night.
holyghost gn 04:25
timotimo testing only Expectance and Variance on a single Distribution is probably not enough
after all, an implementation that just always returns 0.5 would also pass these tests
that's the idea behind TDD's prescription to write tests and then implement only barely enough to make the test pass, and nothing more, and then write more tests that actually fail 04:28
so that you don't accidentally write a very specific test for a very complex implementation and call it finished 04:29
so if your test is "cmp-ok $pop.Expectance, '==', 0.5" your implementation should be "return 0.5", then you write more tests
until it's to your liking and you're certain that the tests actually express everything your code is supposed to do 04:30
also, test with unexpected values, too
what happens if i $pop.add(Nil), what happens if i $pop.add("hello"), what happens if i $pop.add(Inf) or NaN, or 3+5i, ... 04:31
holyghost It's on github/theholyghost2, I didnt update cpan
timotimo that's good
holyghost ok then I understood
add works fir e.g. genetic algorithms and are 'lossless' 04:32
s/fir/for
It's not fool-proof I mean
one test has been fixed 04:33
$p you mentioned
timotimo i saw, looks better 04:34
holyghost those 2 tests should work now
timotimo but i did not test it yet, and i should go to bed very soon
holyghost ok
thx for the help, better you go to sleep than you help me more
timotimo m: my $dist = Mix.new(0.1, 0.2 ... 1.0); say "expectance is { $dist.sum / $dist.elems }" 04:35
camelia Cannot resolve caller Numeric(Pair: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp> line 1
timotimo aha 04:36
holyghost nice
timotimo m: my $dist = Mix.new(0.1, 0.2 ... 1.0); say "expectance is { $dist.total / $dist.elems }"
camelia expectance is 1
timotimo that doesn't seem right
holyghost 0.1
timotimo m: my $dist = Mix.new(0.1, 0.2 ... 1.0); say $dist.perl
camelia (0.4=>1,0.9=>1,0.8=>1,0.6=>1,1.0=>1,0.5=>1,0.2=>1,0.3=>1,0.7=>1,0.1=>1).Mix
timotimo m: my $dist = Mix.new(0.1, 0.2 ... 1.0); say $dist.total 04:37
camelia 10
timotimo ah
that's the total of the weights
holyghost \/ $sum 04:38
timotimo m: my $dist = Mix.new(0.1, 0.2 ... 1.0); say "expectance is { $dist.keys.sum / $dist.elems }"
camelia expectance is 0.55
holyghost ok damn :-)
timotimo m: my $dist = Mix.new(0.1, 0.2 ... 1.0); my $exp = $dist.keys.sum / $dist.elems; say "expectance is $exp"; my $var = (($dist.keys >>->> $exp) >>**>> 2) / ($dist.elems - 1); say "variance is $var" 04:39
camelia expectance is 0.55
variance is 1.111111
timotimo oh 04:41
those .elems must be .total instead, and the keys have to be multiplied by their weights 04:42
otherwise it only works if you have only one of each
holyghost fixed Epxectance 0.55
s/Epxectance/Expectance
holyghost So DistributionPopulation works, that's the most important thing next to the probability class 04:43
I cannot use mix as the @.population changes 04:44
timotimo well, yeah, mixes are associative, @.population requires a positional instead
holyghost ok 04:45
I have make Probability.pm6 tests 04:46
s/have/have to 04:48
timotimo good night!
holyghost gn!
Xliff: do a PR later on today, the only thing you have to do is debug Probability.pm6 04:51
I have too much trouble to do it on my own 04:53
holyghost Xliff: oh I forgot you are a bit weathered today :-) 04:55
holyghost Xliff: made some more fixes 05:16
holyghost okm I have a Bayes test now, it's on github 05:29
s/okm/ok, 05:30
added conditional probability tests 05:42
Xliff : I'm done with updating, if you have time this week, go ahead with the PR 05:43
jmerelo Hi 06:29
Kaiepi o/ 06:32
metadude Hello 06:46
jmerelo Hi! 06:47
metadude How are you?
Was wondering if there was something akin to the slime live coding environment (lisp) for p6. 06:50
Although I have to go right now, I'll check the log tomorrow if anyone left a reply. Maybe could resume the converstation tomorrow. Good night to all! 06:55
jmerelo I'm not sure what that is... If it's an IDE, there's comma 06:56
ufobat___ good morning 07:09
jmerelo Hey 07:14
holyghost jmerelo: I'm tired to work on, but I have 9 tests in github.com/theholyghost2 Mathx::Stat, I'll fixify later 07:19
I am going to let Xliff loose on it, then put the working module in cpan. Xliff has to debug Probability.pm6 07:23
The rest should work
jmerelo: thx for helping me onto github 07:26
holyghost Xliff: I sent you some email, I hope you copeour promises with y 07:45
Xliff: I sent you some email, I hope you cope with your promises
rogue serving :-) 07:47
jmerelo holyghost: no prob 08:04
holyghost jmerelo: you're working now ? 08:09
I mean, you're busy ?
jmerelo just killing time, but I'm leaving in a minute
holyghost right 08:10
So you join early :-) Then go off to work
jmerelo holyghost: not today, I'm on a personal errand. I usually leave for work around 8:30
holyghost it's 8:12
jmerelo but I have no morning classes on Tuesday and Thursday, so if I have no appointments or meetings I stay at home. 08:11
holyghost ok 08:11
Lots of people are younger than me, then they explain me what to work on :-) 08:12
It's probably the IQ :-)
jmerelo holyghost: don't know younger. I was born in 65
holyghost me in 77 08:14
jmerelo so, not younger :-)
holyghost indeed :-)
I thought you were older
You're older than Stallman :-)
jmerelo maybe I look older :-)
holyghost So when was your first perl 5 version ? 08:15
jmerelo 93
holyghost me 2000
I knew perl in debian in 98
didn't program in it except for my Mr. thesis to comply with dat for genetic algorithms/bioinfo 08:16
s/dat/data
jmerelo I had a Silicon Graphics Indigo. I probably downloaded and compiled it...
holyghost coolness
I had an Indy and O2
jmerelo holyghost: you did genetic algorithms? did you publish anything?
holyghost yes, see springer-verlag, Piet van Remortel 08:17
NK fitness landscapes
that's my Master thesis CS
jmerelo Wow
holyghost I invented NKd 08:18
jmerelo I know personally Kauffman, as a matter of fact...
holyghost by reading my book carefully
jmerelo This it? link.springer.com/chapter/10.1007/...45443-8_11
holyghost I cannot load because of old SSL
jmerelo this too? bmcbioinformatics.biomedcentral.co...-2105-7-43
holyghost this is it :link.springer.com/content/pdf/10.1...3-2_11.pdf 08:19
don;t know
stupid keyboard
*don't know
jmerelo You worked with Bernard Manderick?
holyghost yes
jmerelo Wow 08:20
holyghost I entered a Ph. D wth him, but I didn't work enough
I got my Ph.D in 2013
graduated at Tokyo Uni
I didn't become a fellow at the VUB
So internationally I have a Ph. D I worked at VUB uni before for pm.org 08:21
jmerelo Also in Biology?
Interesting
holyghost No SOFT department CS
This is why I am into things like agents, I took most classes of AI instead of OOP 08:22
AI/Adaptive Systems
GA
jmerelo Just submitted this paper yesterday to a conference: github.com/JJ/2019-concurrent-ea-evostar/ 08:22
Concurrent evolutionary algorithms in Perl 6
holyghost sure, so you're a fellow, nice 08:23
jmerelo Code is here: github.com/JJ/p6-algorithm-evolutionary-simple/
holyghost my SSL version is too low too look at it 08:23
on here, on my linux box
jmerelo Leaving now
Cheers!
holyghost ok thx, CYA 08:24
masak moritz, jnthn: thank you for your replies. 09:36
I'll try to put my unease into precise words. 09:37
grammar rules, on the best of days, leak.
m: sub infix:«->»($l, $r) { "$l and $r, baby" }; say "forty" -> "two"; my $x; for 1, 2, 3 -> $x { say $x } 09:38
camelia forty
1
2
3
masak I can declare a `->` infix operator, but because `->` is also a *stopper*, it doesn't behave like infixes usually do. 09:39
the whole concept of a stopper is because an inner expression rule needs to limit itself because a caller rule needs the reins back. 09:40
there's something about all that that's very... non-composable. 09:41
I'm a much bigger fan of how quoting is handled. in that case, it feels like things were built up using composable parts. 09:42
moritz masak: the real problem is that the Perl 6 grammar is very... *intricate*, and so extending it requires some knowledge of that intricacy 09:52
masak I mean, that bit is fine 09:57
masak I'm just sad when "knowledge of that intricacy" means that concerns can't be fully separated and abstractions leak into each other 09:58
moritz but you can structure a grammar to always prefer the stopper, or always prefer the infix, whatever you want
<infix> || <stopper> or <stopper> || <infix> 09:59
masak not much of a stopper if it defers to the infix :P
that particular problem, I guess, Perl 6 has but not many other languages, because Perl 6 doesn't use parentheses there
so it needs stoppers like '->' and '{' 10:00
that's also why you can't use curly braces in destructuring in Perl 6, because '{' is a stopper
in the end, the convenience of no parentheses means things get more "crowded" and you need stoppers
a related one (which is also a WAT when using the language) is that you can put `==>` first on a line, *except* when the previous line ended in a block -- because of the eat_terminator behavior 10:02
lizmat clickbaits p6weekly.wordpress.com/2018/11/12/...st-diwali/ 11:07
abraxxa lizmat: the links to the irc logs seem to be off 11:24
lizmat: colabti.org/irclogger/irclogger_lo...11-03#l241 and colabti.org/irclogger/irclogger_lo...10-25#l468
lizmat checks
WTF 11:25
looks like the search page of colabti is generating wrong links :-( 11:26
abraxxa++ # fixed 11:28
abraxxa lizmat: thanks!!!
Zoffix lizmat: why in the weekly do you say I "started" anything in October 2018, when I was actually finishing it? The 6.d-prep repo had asking Larry to rule on the alias a month before the release since July 2017: github.com/perl6/6.d-prep/commit/0...eba1540682 11:39
yoleaux 10 Nov 2018 17:32Z <moritz> Zoffix: the TLS cert for perl6.party has expired
lizmat I think I wrote "started again" ? 11:41
Zoffix lizmat: why do you say I did anything "very expediently" when per that TODO item the decision on the alias was planned to be a 6.d deliverable? A fact that was also corroborated by the Perl 6 Pumpkin: github.com/perl6/user-experience/i...-436809173 11:41
lizmat: and what exactly did I omit in "Except that in a lot of cases, “Perl 6” was simply omitted, effectively making it a rename of “Perl 6” to “Raku" when I made exactly TWO official uses of the alias: the "Raku Perl 6" on the cover of the release brochure and the addition of "Raku" to the glossary 11:42
"This in turn was perceived as an attack on his person by Zoffix Znet" 11:43
It's not an attack on Zoffix Znet. It's an attack on truth.
You're exploiting your wide reach to the Perl 6 users to vilify me and push a false narative that I did something evil, when in reality the plans were in place and well-announced since July 2018. 11:46
lizmat well, the exploiting can be very easily fixed 11:46
Zoffix *July 2017! 11:47
lizmat is considering her options 11:50
jnthn lizmat: What is 'Except that in a lot of cases, “Perl 6” was simply omitted, effectively making it a rename of “Perl 6” to “Raku”.' referring to, precisely? 11:51
Zoffix lizmat: "But people have continued badgering Larry Wall for another name.". I badgered no one. I made PRECISELY ONE direct request to Larry Wall. It was my letter I wrote a month before 6.d release. 11:52
lizmat Zoffix: wrt to badgering: I did not state that it was *you* who was badgering him
many people have done that for a long time 11:53
Zoffix lizmat: well, that's the result your articles had. That people think I pestered and annoyed Larry and he couldn't take it anymore and that's why he made Raku.
lizmat jnthn: one case: twitter.com/zoffix/status/1059301282178052096 11:56
Zoffix lizmat: that's my private account.
lizmat *ALL* of the announcements re Raku / Diwali have been from your personal account 11:57
how can people see the difference between the official stance and your private interpretation ?
Zoffix A fair point. That did not occur to me. 11:58
An Issue is already opened for that: github.com/perl6/user-experience/issues/32 11:59
jnthn Indeed, going forward it would be wise to make sure we *do* have a place that counts as official, to avoid such questions. 12:00
leont Agreed 12:01
lizmat re other cases where "Perl 6" was omitted: I think it was in reactions on reddit, but I may have confused reactions of other people with yours in that respect
lizmat has added edits to the P6W 12:08
jnthn I guess caching means they aren't visible yet... 12:11
lunch, back in a bit
Zoffix lizmat: FYI: twitter.com/zoffix/status/1062315776768704513 12:12
lizmat Zoffix: could you explain to me how you came to "it was clear to me she despised me before" in www.reddit.com/r/perl6/comments/9u...y/e986r73/ ? 12:13
because I don't, and if I've given that impression, I'd like to be given the possibility to correct that 12:14
jnthn: updated the post again, should be visible now 12:16
Zoffix lizmat: often when I raise concerns about some change or Issue you just revert the commit or abruptly leave the discussion. I get the impression that as soon as I'm involved you just want to bail out. 12:21
lizmat well, that could also mean I value your judgment 12:23
or that that commit isn't that important to me 12:24
in the future, I will be more specific as to why I reverted a commit so that it is at least clear whether I disagreed or not
Zoffix Perhaps, it could be helpful to say "OK, I'm going to revert" before doing the actual revert, so it doesn't seem like the revert was done out of anger or anything like that. 12:25
lizmat so we can prevent the idea that it is something personal
indeed
although, I must admit to being human
so it's quite possible that I have done that in the past 12:26
but then it was never because it was you who made the call 12:27
Zoffix Noted. 12:27
Zoffix &
lizmat and if I was angry, I was probably angry at myself because it was pointed out to me that there were downsides to my commit 12:30
and they made sense
FWIW, I think Zoffix and I agree on most points wrt to the future of language we call Perl 6 12:33
we just don't agree on how to handle the naming of the language 12:34
also: more generally on reverting my own commits 12:35
I've learned the hard way that putting things in branches, generally means that they will be ignored
lizmat the Perl 6 community, imo, is too small to have people with time enough to check out any branches 12:36
lizmat so I've gotten used to just pushing to master, because *that* will make sure things will get testes 12:37
*tested
by real "bleed" user
as was recently shown with my HYPER refactor
sometimes, the problems that come up after that, are easily handled, so quickly fixed (see also the HYPER refactor the past week) 12:38
sometime they show deeper issues, and then the best thing is to revert (at least until after the next release)
since Zoffix is one of the more active members, his remarks have caused more reverts of my code than anybody else, I think 12:39
but he was only the messenger in those
masak lizmat: the point about branches vs master is a deep one, and the causes/reasons (I think) extend beyond "the Perl 6 community is too small"
lizmat: for a while now I've been curious about "trunk-based development", so-called 12:40
not just because "people don't look at branches", but also because "branches are inventory"
(something that costs effort to maintain and keep up-to-date, even when done right) 12:41
lizmat: ooc, when you say people don't look at branches, were those branches sometimes or always accompanied by a pull request on github?
lizmat in my case, never 12:43
masak ok. then I'm almost completely unsurprised they didn't get much attention ;) 12:44
lizmat masak: so you say I should turn everything into pull requests?
or that I work in a branch, and then at the end make all the work a single PR ?
masak no, I'm not being prescriptive currently 12:45
but I will say that (to me) a branch is something bordering on private/backup, whereas a PR is a semi-public request for review and comment
lizmat well, my "newio" branch was pretty public at the time 12:46
masak not saying there aren't exceptions
[ptc] it's almost like there should be something like an "audit request" as opposed to a "pull request"
masak heh. specifically, I'm not suggesting that by turning everything into PRs, you will suddenly get massive eyeballs :P
[ptc] especially for people who have a commit bit
masak [ptc]: what, in your view, would be the difference?
[ptc] i.e. some way to say "hey, could someone have a look at this please before I merge?"
[ptc] masak: well, a pull request (to me) is something that someone without a commit bit can submit 12:47
masak lizmat: I fondly remember a consulting thing Edument did for a client two years back. there were three of us. we made ~650 PRs in eight months. (to each other!) 12:48
[ptc] masak: it always seems odd to me to see people submitting PRs who could just submit the code directly
masak [ptc]: not to me
masak if that's the difference, then I already use PRs like your "audit requests" :) 12:48
but you're right that the name is confusing/unfortunate
[ptc] masak: however, it would be nice to have a way for someone with a commit bit to say, "could you look over what I've done, please?"
masak I think PRs started out in Github as something external/non-commitbitty
yes, Github has that nowadays. requests for review. 12:49
[ptc] yeah and PRs on GitHub are external, hence the way I think about them
anyway, just my 2c :-)
masak [ptc]: they're not only external any more.
007 has 7 open and 91 closed PRs. I think a handful of those are external.
chsanch At work, we use PR for everything, I think is a good way to work, someone else can review the changes and if see something wrong one can add commits to fix something else before those changes get merged in master 12:50
masak yes, exactly
it's almost as if a main benefit is sharing the work/ownership
[ptc] but then it can be a hurdle to getting stuff done if one can't just push to master 12:51
especially for small teams
masak I used to think so too
[ptc] maybe there's a minimum team size?
masak and then I broke master in like, 10 different ways by skipping the PR/Travis step
[ptc] it sort of requires more discipline, doesn't it?
masak nah, it's just a habit ;) 12:52
[ptc] :-)
masak it's not a *lot* more work to push up a PR and immediately merge it yourself
moritz I'd say there's a workflow for all requirements
chsanch Yah, it could be, but sometimes master could get really messed up if someone push something wrong
lizmat "it's not a *lot* more work to push up a PR and immediately merge it yourself"
what is the difference with pushing to master with that ^^^
masak lizmat: Travis. paper trail. 12:53
lizmat Travis I see, paper trail I don't
a commit is a paper trail, is it not ?
masak oh! I use the PR *description* differently than I use commit comments.
the former are a bit more "overview"/goals
[ptc] doesn't Travis check the push anyway? 12:54
lizmat [ptc]: yes it does
masak yes, of course. but at that point master is already broken
lizmat and it takes 1hour+ nowadays to check
masak which (I hope!) is a non-goal
[ptc] masak: yes, true
lizmat fwiw, I (almost) always spectest before committing 12:55
last week had 2 slipups, I admit, but those were the first in a long time
masak lizmat: I'm not here to argue. :) but I want you to know that you're arguing the side of "we don't need checks because there are no slip-ups" :P 12:56
lizmat and for those I plead emotional distress :-) (not seriously)
masak which is... not an argument most software development needs 12:56
chsanch I've learn the hardway to never do push to master directly, mostly when working with more people, or at least limit the access to push commits to master to just the admins. But is just one of the other ways to manage the work flow 12:57
lizmat masak: no, I'm arguing that commits get checked anyway, and fixes can be made quickly
[ptc] theoretically, the tests should pass before one pushes, but I realise that can be a lofty goal, especially with long-running test suites...
lizmat and then some things can break *without* Travis / spectest noticing it (as also was shown last week)
[ptc]: I consider 6 mins not long runninng
masak lizmat: ok, fine. it's essentially jnthn's argument too. I disagree, but only on the level of weights/priorities/preferences. 12:58
I guess I enjoy catching things *before* merging to master
[ptc] lizmat: is the spectest only 6 mins long? In that case, that's ok
lizmat e.g. (1,2,3).Bag >>+>> 1 is still broken :-(
[ptc] lizmat: some people think that 1 minute is long...
lizmat ok, actually, more like 7.5 minutes I just realize 12:59
but yeah.. it's a good moment to step away from the keyboard
masak perfect for making tea
lizmat before actually committing and pushing
indeed
[ptc] that's not a big deal. I've heard of people having to wait hours for a full test run to run
lizmat on my MBP with TEST_JOBS=8 it was 745 seconds last night
masak again, I'm not prescribing anything. but this discussion made me realize that it's maybe a bit unusual to be using "internal PRs" as much as I do nowadays. 13:00
[ptc] masak: I guess my conceptual issue is that if I can merge a PR into master, why am I creating a PR in the first place?
lizmat masak: whatever works for you, works for you :-)
[ptc] masak: I've seen people do this before: submit a PR and then directly afterwards merge it themselves. That was... weird to watch 13:01
masak just to be clear, I also belive it raises quality, not least because Travis catches a *lot*
but it's also a platform for discussing/evaluating the change
lucasb Just making a note of: go-review.googlesource.com . I guess not a single commit goes into Go without getting scrutinized. "code review" before commiting always looks like a good idea, no?
lizmat lucasb: it does, if you have enough eyes 13:02
I wouldn't have been able to do the amount of work on Rakudo that I did if I had had to wait for scrutinization every time
moritz I've once had a candidate whose github project was full of such things
and then they even told me they did code reviews
masak oh that reminds me: if someone would like to review the top five PRs in github.com/masak/007/pulls , I'd be delighted
moritz and not a single PR contained any code review comments 13:03
masak they've been waiting around for sergot for a while now, but he's been quite busy lately :)
moritz: 007 is like that sometimes. then again, sometimes there is discussion, and valuable comments 13:04
lucasb See? the general feeling looks like "We don't want/need code review" :)
masak (and then there's The Issue, of which We Do Not Speak...)
lucasb: wait, what? how is that the general feeling? :)
lucasb I retracted :) 13:05
lizmat FWIW, I welcome code review *always*
masak .oO( git revert! git revert! )
moritz masak: there's a bit difference between sometimes and always
lizmat please please please review my code
masak moritz: aye 13:06
moritz: still, I find I make PRs more nowadays, in cases where I would previously just commit to master
moritz: if there are no reviews or comments, I don't consider that a big failure
[ptc] this is probably one of those grey areas, where it depends upon project and interactions therein 13:07
it can reduce project velocity if *all* commits have to be scrutinised first... Especially on a small team
masak [ptc]: yes -- but (more) 13:08
[ptc]: taking a step back, I think successfull teams also communicate well
I think this is *uncontroversially* true
[ptc] in my current team we're trying to use pair programming more so that we can improve code quality; both when working together and apart
masak so it kind of comes down to, if the team is not doing PRs, maybe they're doing something else, some other form of communication?
moritz at $work, for one component, we have a policy of always triggering code review when one of the base libraries changes
[ptc] masak: I agree wholeheartedly with that
moritz but there are so many small subsystems for different tasks that we don't tend to review every commit to each of those 13:09
masak I mean, what changes are (a) super-urgent and need to go on master *now*, but (b) not worth someone's review/second opinion?
moritz data leaks with an obvious fix 13:10
in which case I'd still do a code review after it went to master, but getting it to production is more important 13:11
[ptc] typos
formatting changes, fixes to bring comments up to date
lizmat [ptc] I've had cases (in the far past) where a change in comment would bring the program down 13:12
but yeah, generally that shouldn't happen :-)
[ptc] a lot of my commits are really small, so it doesn't make a huge amount of sense for someone else to review them before they go into master
lizmat: in the comment? wow
lizmat: how did that happen? I'm intrigued 13:13
lizmat yeah... if I recall correctly, it was a problem in buffering the code, with a newline (CRLF) just across a buffer boundary or not
it was literally a 1 char change at the time 13:14
[ptc] oh dear 13:15
[ptc] what language was that in? That sounds like a Fortran kind of problem 13:15
[ptc] remembers being bitten by the 6 character variable name limit in Fortran 13:16
moritz and fun fact; it was left to the compiler what to do with the extra characters 13:24
some just silently ignored the extra chars, some produced an error, some ignored the limit and used the full name 13:25
silently ignoring the extra chars sounds like a really "sweet" move
lizmat [ptc]: I think it was an early version of Perl 5, but am definitely not sure 13:28
[ptc] moritz: yeah, that kind of behaviour really confused the hell out of me 13:29
especially considering the only programming language I'd learnt before was Matlab...
lizmat with regards to size of commits: I try to keep them as small and contained as possible, to allow for easier bisecting 13:30
in that sense, bisectable6 has changed the way I code
lizmat also: bisectable6 has made me worry less about changes I commit 13:36
because it usually limits the places to look for fixing an issue so much, that they can be fixed within minutes rather than hours 13:37
AlexDaniel \o/
lizmat or at least show the cause very quickly (although the short-time fix may mean a revert) 13:38
s/although/so
AlexDaniel IIRC we had something similar to the CRLF issue in rakudo some time ago 13:40
the issue wasn't with comments, it was related to Pro::Async I think 13:41
lizmat in the early 90's I was writing a new "WordPerfect" like editor for a system that used to have an "edlin" type of editor
I copied the source buffer code from the old editor 13:42
and people came to me telling me there was a bug
turned out the bug was in the old editor as well (an off-by-one), which then had been in production for 6+ years
that's when I learned that you can never assume code is bug free :-) 13:43
AlexDaniel huggable: bugs :is: <Zoffix> all the bugs are because people don't write tests 13:49
huggable AlexDaniel, Added bugs as <Zoffix> all the bugs are because people don't write tests
AlexDaniel :)
lizmat s/don't write/don't write enough/ 13:50
?
masak the former, in my experience :P
AlexDaniel IIRC Zoffix suggests that people should write tests before committing a fix, which we often do other way around 13:51
lizmat masak: so I'm not bad because I do write tests occasionally? :-)
the thing is that I really would like to see other people write tests 13:52
lizmat but reality is, apart from Zoffix, not a lot of people do 13:53
jnthn I typically have them both locally, then push them around the same time
lizmat tests are considered to be LHF, right? 13:54
ready for people to get involved ?
jnthn Depends. :)
For things that are easy to write a test to over, yes. But there's been bugs I've hunted down where writing a clear test case that gets to the heart of the problem was 90% of the work. 13:55
*to cover 13:56
AlexDaniel sometimes those who write a fix can write better tests 14:01
AlexDaniel looks at github.com/rakudo/rakudo/issues?q=...testneeded 14:02
maybe we need another testneeded squashathon
masak lizmat: I'm a non-authoritative source, but IME you're way above average in the Perl 6 project, and the Perl 6 project is way above average compared to some average 14:06
fwiw, I could be better at writing tests too :)
(they rock) :P
lizmat
.oO( we need more players )
masak lizmat: ah, the kind of volunteer open source project that needs more contributors :P :P :P 14:16
lizmat doesn't make it less true :-( 14:17
masak .oO( BOOlean! -- it's funny because it's True ) 14:22
lizmat: I guess it's like in salary negotiations -- one gets a raise based on effort/contribution, not based on need. ;) so the "one causal link back" question to ask is "how can Perl 6 be useful to more prospective contributors?" 14:24
and that, for whatever reason, made me think of chromatic. 14:25
masak waves to chromatic from the backlog
[ptc] masak: that pun hurt! 14:28
masak I know! :D 14:29
[ptc] :-D
masak (you're welcome!)
masak .oO( .so ... )
[ptc] continues giggling and goes back to work
timotimo keep going and i'll Bool you out of the state-ium
AlexDaniel releasable6: status 14:30
releasable6 AlexDaniel, Next release in ≈4 days and ≈4 hours. 3 blockers. 0 out of 125 commits logged
AlexDaniel, Details: gist.github.com/cda5282caa7f95ae98...3de30a84d8
AlexDaniel speaking of more contributors, help with blockers will be appreciated ↑ 14:32
this one is a bunch of LHFs: github.com/rakudo/rakudo/issues/2451
AlexDaniel I just made the module names clickable! 14:35
timotimo i'd like names in the list so i can search if any are mine m) 14:36
i wonder if maybe the console output from blin for the failed tests should be available, too? 14:37
AlexDaniel timotimo: yes, but it's a bit hard to gist it. I will fix that for the next run 14:39
timotimo no prob :) 14:40
AlexDaniel please bear with me, Blin is still very fresh :)
timotimo blin might never have to do as much work as this release, haha
AlexDaniel yes :D
Woodi hi :) 14:42
masak czesc :) 14:45
Woodi masak: here you have: { return builtin(...) { return Val.new( { for(...) { if(...) { return ... } } return -1; } } } it's advanced stuff :) github.com/masak/007/pull/416/comm...60849ecaab 14:46
masak: dobry ! :)
tobs` m: say :p => 1; say ($*PERL,) «=>» (1,); say (:p,) «=>» (1,) 15:31
camelia (p => True) => 1
Cannot modify an immutable Pair (Nil => Nil)
in block <unit> at <tmp> line 1

(Perl 6 (6.d) => 1)
tobs` huh?
m: say :p => 1; say (:p,) «=>» (1,) 15:32
camelia (p => True) => 1
Cannot modify an immutable Pair (Nil => Nil)
in block <unit> at <tmp> line 1
tobs` that's different over here in 2018.10 15:32
lizmat bisectable6: old=2018.10 say :p => 1; say ($*PERL,) «=>» (1,); say (:p,) «=>» (1,) 15:33
bisectable6 lizmat, Problem with fa5215b commit: Commit exists, but a perl6 executable could not be built for it
lizmat bisectable6: old=2018.10 new=63ae9dcc5dfae7aa0fb02 say :p => 1; say ($*PERL,) «=>» (1,); say (:p,) «=>» (1,) 15:34
bisectable6 lizmat, Bisecting by output (old=2018.10 new=63ae9dc) because on both starting points the exit code is 1
lizmat, bisect log: gist.github.com/7a907283265d8cc855...02bd420673
lizmat, (2018-10-27) github.com/rakudo/rakudo/commit/46...96034408c8
lizmat that's the commit that made 6.d default 15:35
lizmat focuses on the error 15:35
[Coke] (re limiting access to push directly to master) +1 from me on that. I'd love to see automated testing before merges to master
lizmat [Coke]: in an ideal world, I would agree 15:37
but practically, having to wait 70 minutes before you're sorta sure nothing breaks 15:38
will mean that people will make bigger commits
and bigger commits mean worse bisectability
tobs` my question was originally going to be if there's some logic behind "Pair.new(...) => 1" working, but not working when => is hyped. Is the pair maybe swallowed as an adverb? 15:39
lizmat also: Travis has had quite a few false positives :-(
lizmat tobs`: somehow, it winds up in the Associative / Mu candidate 15:39
ah, yes, recursing, duh
lizmat and the code so far assumes that anything Associative has a .STORE method 15:40
lizmat which Pair does not atm 15:41
tobs` too bad. I've been exploiting that pair literals are so short to write down to get dummy objects in my tests. 15:42
the last instance of pairs being special-cased somewhere I could work around, but maybe it's just not a sustainable approach (or valid reason)
tobs` but I don't want to discourage your attention to it! I can't tell if it's just a WAT or supposed to work. 15:43
niko AlexDaniel: i protected them from Sigyn 15:44
AlexDaniel niko: oh! OK thanks! 15:44
had to cycle them because apparanently after 2+ weeks they were leaking memory 15:45
apparently*
Summertime is there a raku domain picked out yet? (and has there been any work on a potential ironically formal website? c: ) 16:04
Summertime oh it still hasn't fully settled? uhh, I'll pretend I didn't ask that yet then! 16:11
lizmat Summertime: I think Zoffix said it right in twitter.com/zoffix/status/1062317059449782272 16:16
[Coke] I disagree about worse bisectability. you can do the work in chunks on the PR; you don't have to flatten them on the way in. I think we're at the point where having known good commits on the track for the release is more important than speedy turnaround on commits that haven't been 100% vetted. (I am not implying that anyone in particular isn't vetting their commits). Just coming from a devops perspective; 16:18
if master is (more)
release target, then it should be tested as such. 16:19
[Coke] sees he misjudged the length of that send.
[Coke] I certainly don't want to make it too hard for devs to get things done, but I think there's things we do between everyone commits to master and no one commits to master. 16:20
Summertime thankyou lizmat! I really should use twitter more 16:23
lucasb I thought it was the other way around: bigger commits leads to fewer commits and this leads to better bisectability? 16:24
lizmat lucasb: ok, so you have a commit with 3K lines changed.. and you know it's introducing the problem 16:25
does that help finding the problem?
suppose we had 30 commits with each 100 lines changed
pointing to a commit with 100 lines 16:26
AlexDaniel lucasb: with thousands of commits, bisectable6 will get back to you in like 10 seconds or so
so having more commits is not an issue, at all
timotimo the magic of log2
AlexDaniel also the magic of whateverable because every build is created ahead of time for every commit 16:27
lucasb hm, ok, thanks for explaning. I had no idea :)
AlexDaniel more commits is only bad for storage, but lately I'm compressing very aggressively
so again not an issue at all 16:28
AlexDaniel as for compression and what that means in whateverable, suppose you hit a tagged commit 16:30
shareable6: 2018.03
shareable6 AlexDaniel, whateverable.6lang.org/2018.03
AlexDaniel you get a single archive with just that build 16:31
however, if you try something else, like
shareable6: 2018.03^
shareable6 AlexDaniel, whateverable.6lang.org/2018.03^
AlexDaniel hmm ok let's try older
shareable6: 2016.03^
shareable6 AlexDaniel, whateverable.6lang.org/2016.03^
AlexDaniel now you get .lrz archive
that one has a bunch of builds, compressed in long range mode 16:32
lucasb .lz ?
ah, lrz, never heard before
AlexDaniel lucasb: long range zip, github.com/ckolivas/lrzip
basically, if you take say 10 rakudo builds and compress them together using anything else, you'll get an archive around the same size as if you compressed each build individually 16:34
AlexDaniel nowadays zstd has long range mode too, but whateverable started using lrz way before zstd got it 16:34
AlexDaniel the downside is that these are a bit slower, and if you're bisecting locally then you have to download more 16:36
slower to decompress that is
ufobat___ what am i doing wrong, or how is yamlish being used? 16:40
ufobat___ > perl6 -Ilib -e 'use YAMLish; my $file = "../voteimproved/restapp/schema.yml"; [$file.IO.e, load-yaml($file)].perl.say' 16:40
[Bool::True, "../voteimproved/restapp/schema.yml"]
ufobat___ i am expecting my data in the 2nd element of the array 16:41
jnthn I think load-yaml takes a string 16:41
ufobat___ didn't i provide a string? 16:41
jnthn ufobat___: Sorry, to be clear: the string of YAML to parse, not a string containing a file name 16:42
ufobat___ ah! 16:42
jnthn And I believe a path is a valid YAML document :) 16:42
(Just a string literal)
ufobat___ thats tricky :-)
now i get a coudn't parse yaml, thats a step further :-) 16:43
thanks!
jnthn Pretty sure I did the very same mistake a month or so back :) 16:44
ufobat___ i am playing aroud with openapi::Model because the swaager editor seems to accept my schema.yml but the cro::openapi::RoutesFromDefinition isnt
ingy did someone say YAML?
o/
ufobat___ ingy++
ingy \o
TimToady: yaml is also a 4-letter swear word... 16:45
jnthn ufobat___: Yeah, YAMLish has some shortcomings there, unfortunately. I've taken to just feeding the YAML through a YAML -> JSON convertor instead and using that. :) 16:46
ingy :) 16:50
lizmat
.oO( ingy also has four letter )
*s
ingy liz and wendy averages to two 4 letter words :P
El_Che that moment you realize you spent an half hour debugging when you just forgot to add a Content-Type to curl when testing manually...
buggable New CPAN upload: Font-FreeType-0.1.1.tar.gz by WARRINGD modules.perl6.org/dist/Font::FreeTy...n:WARRINGD 18:02
ufobat___ what is our eval bot here? 18:57
ufobat___ perl6 bot 18:57
thingy
ufobat___ noganex, ?!? 18:58
noganex ufobat___: ?
ufobat___ m: use YAMLish; load-yaml("openapi: 3.0.1")
camelia ===SORRY!===
Could not find YAMLish at line 1 in:
/home/camelia/.perl6
/home/camelia/rakudo-m-inst-1/share/perl6/site
/home/camelia/rakudo-m-inst-1/share/perl6/vendor
/home/camelia/rakudo-m-inst-1/share/perl6
CompUnit::…
ufobat___ noganex r u alive? 18:59
noganex barely
ufobat___ :-( 19:00
ufobat___ ingy, is this yaml? "openapi: 3.0.1" cause yamlish fails to parse it 19:01
timotimo star: use YAMLish;
camelia ===SORRY!===
Could not find YAMLish at line 1 in:
/home/camelia/.perl6
/home/camelia/star-2017.07/share/perl6/site
/home/camelia/star-2017.07/share/perl6/vendor
/home/camelia/star-2017.07/share/perl6
CompUnit::Repository::Abso
tinita ufobat___: seems yamlish has problems with this kind of string 19:04
ufobat___: it's valid yaml, it should be the strig "3.0.1"
timotimo YAMLish isn't developed thoroughly, sadly 19:06
tinita you can add quotes around it as a workaround
timotimo feed it into a more mature yaml parser and ask it to output mostly-looks-like-json yaml for yamlish to eat
tinita AFAIK leont has started to work on it again recently 19:07
timotimo oh, that's good to hear! 19:08
ufobat___ so it makes sense to find the bug?
tinita yeah, you should probably report it 19:11
ufobat___ timotimo, my yaml bug is fixed in 0.0.5 (i had the 0.0.4 installed on my box) 20:16
ufobat___ what das <?break> in grammars mean? 21:05
masak m: grammar G { regex TOP { <?break> "break" }; regex break { "break" } }; say ?G.parse("break"); say ?G.parse("bruke") 21:16
camelia True
False
masak m: grammar G { regex TOP { <?before <break>> "break" }; regex break { "break" } }; say ?G.parse("break"); say ?G.parse("bruke")
camelia True
False
masak ufobat___: I believe those two are equivalent
Xliff m: for ^3 X ^3 -> $x, $y { say "$x,$y" } 23:16
camelia 0 0,0 1
Too few positionals passed; expected 2 arguments but got 1
in block <unit> at <tmp> line 1

0 2,1 0
1 1,1 2
2 0,2 1
Xliff m: for ^3 X ^3 -> ($x, $y) { say "$x,$y" }
camelia 0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
timotimo m: for flat ^3 X ^3 -> $x, $y { say "$x,$y" } 23:17
camelia 0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
Xliff Yes yes yes.
timotimo+
timotimo for the benefit of log readers out there
Xliff Ah. 23:18
How goes it, tt?
Juerd Given class Foo { has $foo; has $bar = 2 * $!foo; }, why is $!foo uninitialized when you do Foo.new(foo => 42), and is there another way to initialize an attribute based on a given value of another one?
timotimo 'tis all right
m: class Foo { has $.foo; has $.bar = 2 * $!foo }; Foo.new(foo => 42).perl.say 23:19
camelia Foo.new(foo => 42, bar => 84)
Juerd Errrr 23:19
timotimo you forgot the . in the attributes
Juerd Oh!
Xliff LOL
Juerd Thanks.
timotimo m: class Foo { has $foo; has $bar = 2 * $!foo }; Foo.new(foo => 42).perl.say
camelia Use of uninitialized value of type Any in numeric context
Foo.new
in method at <tmp> line 1
Juerd feels dumb
Xliff <- Would make that mistake almost every time.
timotimo without the dot they are private attributes
m: class Foo { has $foo; has $bar = 2 * $!foo }; say Foo.^attributes
camelia (Mu $!foo Mu $!bar)
timotimo m: class Foo { has $foo; has $bar = 2 * $!foo }; say Foo.^methods
camelia (BUILDALL)
Juerd This is the same thing that keeps biting me... Providing named values to .new, that don't exist, get ignored :( 23:20
timotimo in that case, let me interest you in
buggable: eco Strict
buggable timotimo, Found 8 results: StrictNamedArguments, HTML::Restrict, ClassX::StrictConstructor, US-ASCII, US-ASCII. See modules.perl6.org/s/Strict
timotimo ClassX::StrictConstructor
Juerd Thanks, but it's not likely that I'll remember to use that even if I wanted to :)
timotimo if you could remember to "use strict" in perl5, you can remember to "use ClassX::StrictConstructor" in perl6 ... hm, maybe not 23:21
though if you have something that stubs new classes for you ...
Juerd Replacing getting bitten by forgetting one thing by getting bitten by forgetting another thing is not likely to work out :P
timotimo or a linter that complains if a file contains classes but not StrictConstructor ...
Juerd Well. There's the thing. As much as I've told people to "use strict" in Perl 5... I do often forget to use it. 23:22
timotimo mhm 23:22
Juerd Much of my code is written in bash. :)
Xliff m: class A { method a-b { '42'.say }; }; my $a = A.new; $a.a-b
camelia 42
Juerd So no linter or any other fancy building stuff :P
juerd.nl/i/9933f15a1e442620d946cfa48db9fcc7.png # like this
timotimo there is that bash script checker thingie
Juerd Anyhow, thanks a lot, I now know what I did wrong :) 23:23
timotimo :)
Xliff WARNING: unhandled Failure detected in DESTROY. If you meant to ignore it, you can mark it as handled by calling .Bool, .so, .not, or .defined methods. The Failure was: 23:33
Index out of range. Is: -1, should be in 0..^Inf
^^ What does that mean on array access? 23:34
NONE of the index vars are -1
Line is: for @( @!coverage[$y][$x] )
timotimo could be a wrong line number output 23:36
or it points at the start of the block and means the whole block instead?
Xliff OK