»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
ZoffixLappy stanrifkin_, how do you figure you only got "6.c 2015.12"? How do you get that information? 00:00
sortiz timotimo, MoarVM's default is to use the _included_ dyncall, right? 00:01
stanrifkin_ ZoffixLappy: perl6 -v
ZoffixLappy stanrifkin_, what does it call? Run which perl6 00:02
I'm thinking maybe you have two perls installed
stanrifkin_ ZoffixLappy: it runs my perl6 installation in ~/.rakudobrew/bin/
00:03 cdg left
stanrifkin_ ZoffixLappy: you're right 00:04
ZoffixLappy *shrug*. nuking ~/.rakudobrew and ~/.perl6 is always an option, though I'm unsure why it's not upgrading you
stanrifkin_ ZoffixLappy: i have to use moar-nom - it's always updates that one
geekosaur you can tell it to point to a specific version, iirc 00:05
timotimo sortiz: that's the default, yes
ZoffixLappy You can try running rakudobrew self-upgrade; and then rakudobrew build moar again. Might be some bug in your older rakudobrew, but I'm really unsure
stanrifkin_ ZoffixLappy: it seems to work now - i didn't realize to use moar-nom 00:06
ZoffixLappy isn't sure what you're talking about
geekosaur is thinking run "rakudobrew current" to check what it currently thinks it's doing and "rakudobrew rehash" to make it repoint things to currently installed 00:07
possibly "rakudobrew switch moar" if it's currently defaulting to something else 00:08
stanrifkin_ yes. i switch to moar-nom and have now the current version
teatime is uniprops no longer a thing? 00:09
timotimo uniprop*s*? 00:13
teatime yes, there are lots of references around to a uniprops hash
S15 is an example
AlexDaniel hash? :o
timotimo oh, huh 00:14
well, the information is there in our database, but we can't quite query it
00:18 sufrostico left 00:22 hobbified is now known as hobbs, hobbs left, hobbs joined 00:24 Actualeyes joined
stanrifkin_ i asked some time ago. do you prefer .pl6 or simply .p6 filename suffix? 00:32
ZoffixLappy .p6 for me 00:33
stanrifkin_ so there is no general consent yet? i just come across the tutorial 00:36
and they use .pl6
timotimo i like .p6
just because i'ven't been a perl programmer before i encountered the six
stanrifkin_ i like .p6 more too 00:37
ZoffixLappy is a 10-year P5 veteran 00:38
Xliff is a P5 veteran, also. 00:39
stanrifkin_ "veteran" like you come home from war :) 00:40
geekosaur works on a tangled C codebase for pay. some wars never end >.> 00:42
ZoffixLappy stanrifkin_, 'veteran' has multiple meanings, one of which is "a person who has had long service or experience in an occupation, office, or the like" 00:44
teatime are modules supposed to be .pm6 ? 00:49
stanrifkin_ teatime: seems to be .pm 00:51
ZoffixLappy That's what I use. I'm unsure if they're "supposed to be"
I'd argue against .pm because that's what P5 uses.
stanrifkin_ teatime: the own perl6 source uses .pm - so i thought 00:52
teatime decides on .pm6 for modules, .p6 or no extension for scripts. for now.
.p6 looks strange and futuristic. like P6. 00:53
ZoffixLappy stanrifkin_, where? I see only .pm6 in github.com/rakudo/rakudo/tree/nom/lib
00:55 sue joined
stanrifkin_ ZoffixLappy: github.com/rakudo/rakudo/tree/nom/src/core 00:56
ZoffixLappy stanrifkin_, ah. Well, those are types, not modules :)
stanrifkin_ ZoffixLappy: ok 00:58
01:00 lizmat joined
ZoffixLappy BTW, I still didn't get an answer for question I asked this noon: irclog.perlgeek.de/perl6/2016-04-14#i_12338595 01:01
Is the entire spectest supposed to be passing? 01:02
01:04 lizmat left
sortiz spectesting now... 01:06
diakopter some fail for me 01:09
dalek c: db663fc | (Zoffix Znet)++ | doc/Language/testing.pod:
Fix signature for throws-like
01:12
01:13 ryand left
sortiz Do you do 'make install' before 'make spectest', last time I check, seems to be an issue about the need to 'make install' first. 01:13
ZoffixLappy diakopter, are they the t/spec/S06-advanced/wrap.t?
ZoffixLappy didn't run make install... tries
diakopter no
'course, I was testing a branch of moarvm; I need to test the master branch 01:14
sortiz t/spec/S06-advanced/wrap.rakudo.moar .......................... ok 01:19
01:27 sue left 01:30 vendethiel joined
sortiz ZoffixLappy, In your gist seems that you are trying the unprocessed *.t, that have a few '#?rakudo todo' 01:32
ZoffixLappy Oh. 01:34
sortiz you should try the post-processed *.rakudo.moar files
ZoffixLappy Ah
sortiz Btw: All tests successful. Files=1092, Tests=51391, 838 wallclock secs ( 4.56 usr 0.81 sys + 608.21 cusr 41.04 csys = 654.62 CPU) Result: PASS 01:35
ZoffixLappy I'm running `make spectest` (still running), and yet "t/spec/S06-advanced/wrap.rakudo.moar .......................... Dubious, test returned 1 (wstat 256, 0x100) Failed 1/85 subtests " 01:36
That's on nom from yesterday, before my patch
sortiz This is Rakudo version 2016.03-118-g4f3f1c8 built on MoarVM version 2016.03-108-gca1a21a 01:37
i.e. nom latest 01:38
ZoffixLappy (before my unmerged patch)... the advanced/wrap tests fail for me and adding my seemingly unrelated patch adds another failure for some reason :/ 01:39
Oh. Two more failures in t/spec/S32-io/IO-Socket-Async.t :/
01:42 BenGoldberg joined
ZoffixLappy Here's the result: gist.github.com/zoffixznet/c2cc8df...f92002d0ee 01:43
ZoffixLappy will deal with this tomorrow...
01:47 ilbot3 joined
ZoffixLappy m: use Test; throws-like { fail '404' }, Exception, 'delete on non-existent snippet throws', message => /404/; 01:52
camelia rakudo-moar 4f3f1c: OUTPUT« 1..3␤ ok 1 - code dies␤ ok 2 - right exception type (Exception)␤ ok 3 - .message matches /404/␤ok 1 - delete on non-existent snippet throws␤»
ZoffixLappy I'm not seeing the difference between the above and mine, which fails with an error :S gist.github.com/zoffixznet/7ecb36a...200f1a94c1
01:53 FireFly joined
ZoffixLappy Oh, never mind. I see it now.... too many beers :) 01:54
Although, I'm disappointed Perl 6 doesn't read my mind :D
01:55 vendethiel left 01:56 kid51 left 02:03 lestrrat left 02:11 stanrifkin_ left 02:18 cdg joined
sortiz I'm disappointed because can't read Perl6's mind. 02:22
02:25 ilbot3 left, agentzh left
ZoffixLappy :D 02:26
02:26 woodruffw left, BooK left, Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 02:27 BooK joined 02:35 woodruffw joined, woodruffw left 02:36 woodruffw joined 02:40 jolts joined, jolts left 02:41 noganex_ joined, jolts joined 02:42 jolts left 02:43 cale2 left 02:44 noganex left 02:45 jolts joined, jolts left 02:46 jolts joined, jolts left 02:49 jolts joined, jolts left 02:50 ilbot3 joined, jolts joined, jolts left 02:54 jolts joined, jolts left 02:59 matiaslina joined
Herby_ m: 'abc42' ~~ / \d / and say ~$/; 02:59
camelia rakudo-moar 4f3f1c: OUTPUT«4␤»
Herby_ m: 'c:\tv\show\episodeName' ~~ / episodeName / and say ~$/; 03:01
camelia rakudo-moar 4f3f1c: OUTPUT«episodeName␤»
Herby_ m: 'c:\tv\show\episodeName' ~~ / .+ \\ \w+ / and say ~$/; 03:02
camelia rakudo-moar 4f3f1c: OUTPUT«c:\tv\show\episodeName␤»
Herby_ i'm hosing that up
if I have a path like 'c:\tv\show\episodeName', how do I regex the episodeName?
trying to list contents of a folder and grab just the file name 03:03
ZoffixLappy Herby_, perhaps one of the methods in IO::Spec::Win32 ? 03:06
geekosaur m: 'c:\tv\show\episodeName' ~~ / .+ \\ ( \w+ ) / and say ~$0;
camelia rakudo-moar 4f3f1c: OUTPUT«episodeName␤»
geekosaur however I'd not trust \w there
Herby_ ZoffixLappy: I'll take a look, thanks 03:07
geekosaur, would it be safer to just grab everything after the last '\'? 03:08
m: 'c:\tv\show\episodeName' ~~ / .+ \\ ( .+ ) / and say ~$0;
camelia rakudo-moar 4f3f1c: OUTPUT«episodeName␤»
Herby_ m: 'c:\tv\show\season 2\episodeName' ~~ / .+ \\ ( .+ ) / and say ~$0; 03:09
camelia rakudo-moar 4f3f1c: OUTPUT«episodeName␤»
geekosaur Herby_, yes 03:10
Herby_ one more question: if my path structure was 'c:\tv\show\season n\episodeName' 03:11
geekosaur my paranoia kinda prefers
m: 'c:\tv\show\episodeName' ~~ / .+ \\ ( <-[ \\ ]>+ ) / and say ~$0;
camelia rakudo-moar 4f3f1c: OUTPUT«episodeName␤»
Herby_ and I wanted to grab the season and the episode
m: 'c:\tv\show\season 2\episodeName' ~~ / .+ \\ ( .+ ) \\ ( .+ ) / and say ~$0 ~ ~$1; 03:12
camelia rakudo-moar 4f3f1c: OUTPUT«season 2episodeName␤»
geekosaur m: 'c:\tv\show\episodeName' ~~ / .+ \\ (season \d+) \\ ( <-[ \\ ]>+ ) / and say "$1, $0";
camelia ( no output )
geekosaur whoops 03:13
m: 'c:\tv\show\season 3\episodeName' ~~ / .+ \\ (season \d+) \\ ( <-[ \\ ]>+ ) / and say "$1, $0";
camelia ( no output )
Herby_ m: 'c:\tv\show\season 2\episodeName' ~~ / .+ \\ ( .+ ) \\ ( .+ ) / and say "$0 \t $1"; 03:14
camelia rakudo-moar 4f3f1c: OUTPUT«season 2 episodeName␤»
03:14 ZoffixLappy left
Herby_ geekosaur: why do you like the "( <-[ \\ ]>+ )" more? 03:15
my regex is weak, and really weak in p6
geekosaur because it specifies exactly where I want to allow the \\-s 03:16
I could hope it does the right thing like you are, but certain changes to that regex could surprise you 03:17
Herby_ hmm ok. I'll play around with it but you've given me a headstart, thanks 03:18
geekosaur and if your luck is anything like mine, that surprise will come in the form of a multihour debugging session when you really need the sleep instead >.>
Herby_ i might try and get real fancy and use grammars 03:20
gotta read up on them
well, i guess that would be overkill 03:21
geekosaur for this, likely yes.
Herby_ since I'm just parsing one path at a time
geekosaur that and they're not e.g. recursive 03:22
or complex conditionals 03:23
03:23 yurivish joined, noganex joined 03:24 AlexDani` joined 03:25 mcsnolte_ joined 03:27 ruoso_ joined 03:29 agentzh joined, agentzh left, agentzh joined 03:32 noganex_ left, AlexDaniel left, yurivish_ left, dalek left, ruoso left, sortiz left, torbjorn left, mcsnolte left, avenj left, peteretep left, pierrot left, ssm left, mcsnolte_ is now known as mcsnolte 03:35 torbjorn joined 03:36 olinkl joined 03:37 AlexDani` is now known as AlexDaniel 03:38 sortiz joined 03:41 peteretep joined 03:48 ssm_ joined 03:54 Herby_ left 04:00 cyberviking joined
teatime \o 04:05
04:08 cdg left 04:09 nige1 joined 04:16 Cabanossi left 04:18 Cabanossi joined 04:24 dalek joined, ChanServ sets mode: +v dalek 04:25 tardisx joined 04:29 matiaslina left, BenGoldberg left 04:35 tardisx left 04:37 tardisx joined 04:58 _notbenh joined 05:05 skids left 05:22 avenj joined, avenj left, avenj joined 05:25 yurivish_ joined 05:26 Sgeo__ joined, Cabanossi left, sortiz left, peteretep left, olinkl left, ilbot3 left, Timbus left 05:27 Timbus joined, peteretep joined, yurivish left, perigrin left, TEttinger left, mre left, perigrin joined 05:28 cyberviking left, ssm_ left, Sgeo_ left, erdic left, felher left, leedo left, olinkl joined 05:29 mre joined, erdic joined, TEttinger joined, leedo joined 05:31 Cabanossi joined 05:40 felher joined 05:41 ilbot3 joined 05:42 pierrot joined 05:43 ssm_ joined
diakopter thank you captionbot.ai 05:43
i.imgur.com/8fHikFv.png
tony-o MadcapJake: a really inefficient/ineffective search is available on modules.zef.pm 05:45
well, it's kind of effective but it's not great 05:46
MadcapJake I've found github.com/krisk/Fuse to be an easy way to get fuzzy search on client-side
tony-o i'm using perl
i did write some of the Levenshtein Damerau XS perl module, that's what i'm currently using - i think i just need to weight the types of matches, i haven't done any tuning to the search yet 05:47
it's currently looking at author/module name/provides 05:48
MadcapJake it doesn't seem to organize them 05:49
modules.zef.pm/search?terms=Test
diakopter this one's better: i.imgur.com/tyNsrWs.png
MadcapJake tony-o: almost finished with this highlight.js PR but I hit an unfortunate road-block: heredocs are completely unsupported. 05:52
06:08 _mg_ joined
moritz heredocs are *hard* 06:08
06:19 vendethiel joined 06:21 CIAvash joined 06:30 mcsnolte left 06:31 firstdayonthejob joined 06:37 wamba joined 06:42 firstdayonthejob left 06:44 vendethiel left
ufobat morning :-) 06:44
06:55 Sgeo_ joined 06:59 leedo_ joined, mre_ joined 07:00 pierrot left 07:04 wamba left, ssm_ left, ilbot3 left, leedo left, mre left, Sgeo__ left, avenj left, dalek left 07:10 rindolf joined, nige1 left, ssm_ joined 07:11 wamba joined
masak morning, #perl6 07:17
Perl 6 day today! \o/ 07:18
07:20 pierrot joined, ilbot3 joined
ufobat what is a perl6 day? 07:23
moritz it's like Friday, only better :-) 07:25
masak ufobat: I have things set up with my employer that I work 80% and use 20% of my time for Perl 6. 07:26
(we're hiring)
tadzik grumbles 07:30
masak :0 07:31
:)
masak pats tadzik
*pat pat*
moritz hugs tardisx
erm
moritz hugs tadzik
tab completion fail :-)
tadzik :} 07:32
masak Hug a Stranger Day! :D
masak hugs mre_
moritz hugs wtw
07:32 vendethiel joined
masak hugs vendethiel 07:33
oh wait. I know you. never mind.
tadzik www.thewalkingdead.com/wp-content/u...wkward.jpg 07:34
masak ct.weirdnutdaily.com/ol/wn/sw/i53/2...19e658.jpg
jeek www.thewalkingdead.com/readme.html 07:36
Oh, that's dangerous.
masak jeek: could you provide some context to that comment?
jeek Their Wordpress install is from December 11, 2012. They're missing three and a half years of security patches. :) 07:37
ufobat huggs huf
tadzik oh-oh
ufobat masak, that sounds great!
huf wasnt me
masak ufobat: it's great when it works ;) 07:38
jeek masak: Your site?
masak jeek: never heard of it
jeek You've never herad of thewalkingdead.com ? You just linked it...
*heard
masak oh, tadzik did
ufobat yeah.. "but there are bugs all over the place! fix it masak.." is it like that?
jeek Err, whoops.
tadzik I linked to it, actually
jeek tadzik, yes. Sorry, not awake.
tadzik and only because that's what came up when I google-imaged for "hawkward" :)
I avoid series that are less than 10 years old 07:39
masak .oO( someone is missing Wordpress patches on the Internet )
ufobat i've got release day today, not perl6 day
jeek Well, at least no one noticed.
tadzik until now! Muahahah
jeek No one that has ever bothered to download and install github.com/wpscanteam/wpscan , at leats. 07:40
*least
Man, I cannot type tonight.
moritz makes me almost want to automatically search for such autodated versions, and automatically exploit them, and then force-update them to newest (and install an auto-updater)
07:40 avenj joined, avenj left, avenj joined
moritz s/autodated/outdated/ 07:40
moritz can't type either
jeek masak: Enough context for you? :) 07:41
masak yes. thank you. 07:45
07:46 zakharyas joined 07:50 jack_rabbit left 07:51 darutoko joined 07:54 Possum left 07:55 kerframil left, g4 joined 07:56 dalek joined, ChanServ sets mode: +v dalek, abraxxa joined, jack_rabbit joined 07:57 RabidGravy joined 07:58 g4 left 08:00 sjoshi joined
Woodi hey! stop that! 08:04
you not hear panama papers was out thanx to great Wordpress ??
08:04 araujo left
Woodi now jurnalists have their version of Big Data (<2Tb) ;) 08:05
08:07 araujo joined 08:09 araujo left 08:10 araujo joined
masak if you could program Perl 6 in the browser instead of JavaScript, would you? 08:10
let's assume no extra cost for the extra layer of indirection -- slightly unrealistic -- except that you would have to compile down to JS or wasm 08:11
RabidGravy maybe, but I didn't really do Perl 5 in the browser when Activestate made a Perl 5 thing for the scripting host for I.E. back in the day ;-) 08:13
08:14 araujo left 08:15 araujo joined, araujo left, araujo joined
masak what I'm especially after is some kind of "one environment" feeling between client and server 08:15
it feels so weird and unnecessary to be writing one client application and one server application
especially as some use cases and code paths effectively straddle the two
08:17 vendethiel left
RabidGravy yeah I think the way Perl 6 is pushes that boundary closer to the client, when I was at $large-bank the other year I felt compelled to make a client event middleware in node.js, I'd probably do that in P6 now 08:18
masak not sure I understand what you want to say with "pushes that boundary closer to the client"... 08:20
08:20 tardisx left, Xliff left
RabidGravy I started Lumberjack::Application because I wanted to test how little javascript I could get away with, the way that e.g. WebSocket lets you do that naturally helps 08:21
masak aha 08:22
wouldn't that... push the boundary closer to the server, though?
CIAvash Yeah, I would like to see Perl 6 -> wasm too
08:23 rurban joined, Possum joined
Woodi would like to see clouds pushed to *home* servers... 08:23
you know, Mrs. H. Clinton way but better :)
08:25 rurban left
RabidGravy yeah, I can foresee something whereby you write server code with some indication that "this is part of the client stuff" and it gets translated to, say, javascript on the way out to the client taking care of all the client/server communication 08:26
masak I see such solutions sometimes. they seem promising but not quite battle-tested yet. 08:27
Woodi VNC, Xserver ? :)
RabidGravy bits of ASP.net went somewhere toward that 08:28
JSP was awful
masak I agree. it would be interesting to dissect *why* JSP was awful. 08:29
like, in the light of current known best practices on the web.
Woodi masak: I think it was ecosystem fault - thing was pushed only for enterprises not plain ppls. and performance... 08:32
so, if Wordpress destroy management trust in PHP technology, what we will use instead ? 08:33
RabidGravy I'd carry on as normal, never used Wordpress 08:34
masak sounds good to me. 08:35
Woodi I just wonder how secure are that mini-httpd-servers from node, Perl, Python, etc...
masak I have used Wordpress, and MediaWiki, but I probably won't much in the future.
RabidGravy well for the most part those things are probably as secure as the most paranoid brain on the development team writing the application can make them :) 08:37
the mini-er the better in general, the fewer default behaviours that the server framework has the less chance of being bitten by some suprise security hole 08:38
08:39 _mg__ joined
RabidGravy of course that plays both ways, if bad programmers implement their own e.g. "serve static content" they can do even worse 08:39
Woodi RabidGravy: but it will be standard-package anyway like: var http = require("http"); in node... and how about performance compared to apache and nginx ?
08:40 _mg_ left, _mg__ is now known as _mg_
Woodi hmm, probably I worry about performance more then security :) 08:40
08:40 pmurias joined
jnthn It seems fairly common to stick nginx or similiar in front of node and friends as a reverse proxy. Seems to perform well enough even with that proxying taking place. :) 08:41
masak Woodi: that sentence is a case where s/then/than/ actually alters meaning
pmurias Perl 6 -> wasm won't be happening any time soon
masak pmurias: I'll take your word for it :/
pmurias for now wasm is just bytecode asm.js
08:43 [particle]1 left 08:44 yurivish_ left, [particle] joined, yurivish joined
pmurias if we really wanted to compile to it we would have to use enscripten and run MoarVM on top of wasm 08:45
08:45 M-matthew left 08:46 tadzik left
pmurias masak: re one environment feeling one big obstacle to that is that the user running part is untrusted 08:46
RabidGravy I think what I am thinking of in the first case is somewhat more high level 08:47
08:47 FireFly left
RabidGravy that is a "thing" whereby you have a template for the UI lke "[% WHENEVER SomeSupply %] ... # draw a table row " and it generates the server part that does all the websocket thing and a client part that connects and does the rendering 08:50
Woodi RabidGravy: so all "state" is moved server side ? and client do rendering only; client can choose prefered theme and things like that ? :) 08:51
08:52 M-matthew joined, M-tadzik joined
RabidGravy more that where the line is drawn is normally unimportant to the programmer 08:53
masak pmurias: oh, that's a good insight. 08:55
pmurias: right, "don't trust user input".
pmurias in the modern web app part it turns into "don't trust the UI" ;) 08:56
masak pmurias: so the tension becomes pretending that the client code is in the same environment while also maintaining input validation from the client.
08:56 M-tadzik is now known as tadzik
masak this could probably be statically checked somehow. 08:56
like, a value that crosses over to the server is automatically "tainted".
RabidGravy that's always been the same since client/server applications started appearing 08:57
pmurias masak: AFAIK there are react.js (and I think for other frameworks too) things that blend the client/server distinction, but instead they support moving the client part to the server and prerendering your webapp 09:00
masak pmurias: Ember's fastboot heads in that direction as well. 09:05
basically using the same code paths on the server to send a pre-rendered page to the client, and then reconstituting the app on the client side. 09:06
Woodi render pixels and send them ;) and VNC additionally resolves sessions problem :) 09:07
masak .oO( any sufficiently advanced tongue-in-cheek is indistinguishable from noise ) 09:09
RabidGravy anyway this is not getting the authentication part of Sofa finished 09:14
just that and making it replace "couchapp" seamlessly and it's good to go ;-)
09:15 ocbtec joined 09:17 vendethiel joined 09:18 ely-se joined
pmurias jnthn: is auto vivication of attributes just an optimalisation or is it important for semantics? 09:23
09:26 lubomir_ joined
jnthn pmurias: Semantics. 09:28
pmurias jnthn: could I just clone the containers at object creation or is possible for the cloning to have some serious sideeffects
jnthn pmurias: Oh...you could do that
pmurias: It's the REPR's job to make sure it returns a fresh container 09:29
pmurias: You could do it at creation time
That was a very data-driven optimization, fwiw.
It's because every routine has a $_, $/, and $!, but 90%+ of routines never used them.
So you get to save 3 memory allocations in a lot of cases :) 09:30
Which made quite a difference :)
pmurias $_, $/, $! are stored in attributes rather then lexicals?
jnthn Oh... 09:31
No, those are lexicals...which also get auto-viv :) 09:32
Oh...
Yeah, there's another semantic detail too
Check isattrinitted
If you don't put off the init then you'll need another way to implement that. 09:33
09:35 dalek left 09:38 Amnez777 left 09:39 Amnez777 joined 09:40 vendethiel left 09:41 dalek joined, ChanServ sets mode: +v dalek 09:42 ely-se left 09:50 avenj left 09:51 vendethiel joined 09:58 lubomir_ left
pmurias jnthn: hmm, most attribute lookups have a statically determined class handle so maybe I'll be able to avoid paying the price everywhere 10:00
10:01 CIAvash left 10:05 M-matthew left 10:09 avenj joined 10:11 M-matthew joined, jack_rabbit left 10:14 vendethiel left 10:15 cpage_ left 10:16 cpage_ joined, TEttinger left 10:21 Roamer` joined 10:24 wamba left 10:28 cibs_ joined 10:31 cibs left 10:33 cibs_ left 10:34 cibs joined
masak m: my $s = "%7B%22type%22%3A%22placement%22%2C%22own%22%3A%5B5%2C6%5D%2C%22neutral%22%3A%5B6%2C10%5D%7D"; $s ~~ s:g['\''%'\''(..)] = chr(:16(~$0)); say $s 10:34
camelia rakudo-moar 4f3f1c: OUTPUT«5===SORRY!5=== Error while compiling /tmp/sYM3DkxZZ5␤Missing quantifier on the left argument of %␤at /tmp/sYM3DkxZZ5:1␤------> 3l%22%3A%5B6%2C10%5D%7D"; $s ~~ s:g['\''%7⏏5'\''(..)] = chr(:16(~$0)); say $s␤»
masak m: my $s = "%7B%22type%22%3A%22placement%22%2C%22own%22%3A%5B5%2C6%5D%2C%22neutral%22%3A%5B6%2C10%5D%7D"; $s ~~ s:g['%'(..)] = chr(:16(~$0)); say $s
camelia rakudo-moar 4f3f1c: OUTPUT«{"type":"placement","own":[5,6],"neutral":[6,10]}␤»
masak cool.
I've come to really appreciate the `~~ s[] =` syntax 10:35
tony-o oh, that's really nice 10:37
10:43 AlexDaniel left 10:46 cibs left, cibs_ joined 10:49 cibs_ left 10:51 cibs joined
RabidGravy that had me scared for a minute 10:53
then I realised it was *still a string*
psch \o 10:54
jazz theory is ridiculous 10:55
10:55 go|dfish left, cibs left
RabidGravy I think I have the "Encyclopedia of Jazz Theory" on the shelf over there ^ 10:55
psch i mean, i don't really know a lot 10:56
but what i start to understand scares me :P
10:56 cibs joined
jast life is a lot less terrifying if you understand *just enough* of everything without getting in more deeply ;) 10:56
RabidGravy it is quite scary :) 10:57
anyhow I'm off out shopping
moritz well, science says you're much more scared of stuff you don't know 10:58
but there are areas where I suspect the opposite is true
climate change, nuclear reactor theory, how software is made
jast science doesn't say anything. humans interpreting scientific findings say things. and that's where science gets scary, too. :} 10:59
awwaiid science is the art of accurately predicting the future
moritz jast: I know, I'm just glossing over the details
11:04 kid51 joined
psch which, curiously, was the advice by jast to not get terrified :) 11:06
jast there's a method to my madness!
psch boos at past psch 11:07
non-deterministic tests *shakes fist*
jast I find that non-determinism adds a lot of excitement to development, tests, debugging, and cooking 11:08
psch the weird bit is that there shouldn't be a case that doesn't pass
11:08 go|dfish joined
psch oh, wait, there is 11:08
well, the pentatonic scale isn't for making chords anyway, so it'll have to go vOv 11:09
11:09 wamba joined, kid51 left
jast depends on the chords 11:10
psch right, but i won't stand for an augmented fifth as a tonic 11:11
11:12 lizmat joined
timotimo doesn't know anything about jazz theory 11:12
11:12 kaare__ joined 11:14 vendethiel joined
timotimo is it "as long as people play in the same scale, they can play whatever the F they want to and people will still cheer"? :P 11:15
psch timotimo: pretty much, minus "in the same scale"
jast IMO scales are overrated 11:16
timotimo "as long as people play, people will cheer", OK
jast I'm more of a "screw theory, just write/play it the way you want it to sound" guy
timotimo i'm at the "i don't care what i want it to sound like, i couldn't make it so anyway" stage of learning how to music 11:18
jast you start by stealing a lot
at some point you become so good at stealing that it's indistinguishable from innovating :}
timotimo so first you become good at stealing so you can make new stuff that's like existing stuff, then you get bad at that again and create stuff that's unlike existing stuff 11:20
and then you create new kinds of music!
jast you could see the stealing as a way of kickstarting your own creative abilities with something that's known to "work" 11:22
at first you don't diverge too wildly in experimenting with making changes, and as you get more of a sense of how it all works you become more bold
timotimo OK, because if you steal from /dev/urandom, you're not guaranteed to notice if you're doing it well or not
11:23 kid51 joined
jast you're not guaranteed either way, but starting from something solid allows for smaller iterations that still "work" 11:23
make a small iteration on /dev/urandom and you're still pretty much in random land
11:25 rurban joined
psch it also strongly depends on what exactly "making music" means i think 11:26
timotimo hehe. 11:27
psch like, if one was to learn an instrument, playing things that already exist for a few years is pretty much mandatory
but e.g. digital composition might work better with just picking a song and trying to recreate it in your favorite DAW 11:28
jast yeah, and that will be part awesome and part depressing... because recreating all the details takes very good listening skills and a very good understanding of what the details you hear mean and what they're made up of 11:33
but you have to start somewhere, so might as well focus on the awesome aspects
11:34 cibs_ joined 11:37 cibs left 11:41 arlenik left, lizmat left
grondilu javascript has something to build functions from a string : var myFunction = new Function("a", "b", "return a * b"); How could I do that in Perl 6 with decent performance? 11:42
(doing sub ($functionbody) { sub (|args) { EVAL $functionbody } } looks silly) 11:44
arnsholt my $sub = EVAL "sub { $body }" # I suppose 11:45
Or something along those lines
grondilu oh damn I so dumb. Yeah the EVAL would be evaluated only once, right?
11:45 TreyHarris left
grondilu so performance should be totally fine. 11:46
m: my &f = EVAL 'sub ($a, $b) { $a + $b }"; say &f(1, 2);
camelia rakudo-moar 4f3f1c: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8C2AYdIj9w␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/8C2AYdIj9w:1␤------> 3sub ($a, $b) { $a + $b }"; say &f(1, 2);7⏏5<EOL>␤ expecting any of:␤ argu…»
grondilu m: my &f = EVAL 'sub ($a, $b) { $a + $b }'; say &f(1, 2);
camelia rakudo-moar 4f3f1c: OUTPUT«3␤»
11:47 TreyHarris joined
grondilu it was so simple I feel genuinely embarassed. 11:47
moritz m: my &f = EVAL 'sub ($a, $b) { $a + $b }'; say f(1, 2); 11:48
camelia rakudo-moar 4f3f1c: OUTPUT«3␤»
moritz you don't even need the & at invocation
11:52 kaare__ left 11:54 rurban left
jnthn finally wrote last week's Perl 6 hacking up: 6guts.wordpress.com/2016/04/15/hea...ap-hooray/ 11:55
(Danger, long post...but hopefully educational :)) 11:56
masak me somehow read "Danger" as the comparative form of the adjective "Dang" :P 11:58
11:59 vendethiel left
grondilu thought 'has ($.a, $.b) = 1, 2' was valid syntax 12:00
jnthn Nope.
jast masak: the dangest mistake
masak I need to read less dangly, clearly.
jnthn grondilu: has $.a = ...; actually thunks the RHS
grondilu: And attaches it to the attribute in question 12:01
(So it's a per-attribute thunk)
masak jnthn: but theoretically, that could happen for a statically-known list of comma-separated things in the RHS too, no?
it's just that we don't do that
er, "just"
12:01 kaare_ joined
jnthn masak: Yeah, but...it quickly gets "complicated" because list assignment is a tad dynamic :) 12:02
masak *nod*
jnthn masak: The moment you get a slip showing up, for example...
masak yeah
jnthn So yeah, we could disect *that* case
masak that, and there's the expectation that the assignments happen "simultaneously", like in `($x, $y) = $y, $x;`
jnthn Yeah 12:03
masak which I guess *could* also be made to happen, but it feels a bit superfluous for attr init
jnthn And then the whole "we only apply the default if the attr wasn't touched in initialization"
masak augh, yes
jnthn So if your BUILD touched $!a but not $!b...
:)
timotimo Danger! High Postage! 12:07
when we type, when we tell! 12:08
12:08 kaare__ joined 12:10 kaare_ left 12:23 TreyHarris left 12:24 TreyHarris joined 12:26 telex left 12:28 telex joined 12:29 ilbot3 left 12:30 ocbtec left 12:31 kid51 left, ilbot3 joined, kid51 joined, ocbtec joined 12:33 cpage__ joined, cpage_ left, cpage__ is now known as cpage_
wamba m: say m/./   for 1,2 12:34
camelia rakudo-moar a45224: OUTPUT«「1」␤「2」␤»
wamba say /./   for 1,2 12:35
m: say /./   for 1,2
camelia rakudo-moar a45224: OUTPUT«/./␤/./␤»
psch m: say /./.WHAT; $_ = 1; say m/./.WHAT
camelia rakudo-moar a45224: OUTPUT«(Regex)␤(Match)␤»
jnthn /./ is a regex object. m/./ means "match this regex now against $_" 12:36
wamba ok, ty 12:37
what kind code is before "for"? 12:38
m: $^a  for 1,2
camelia rakudo-moar a45224: OUTPUT«5===SORRY!5=== Error while compiling /tmp/zOwlwdEkgz␤Cannot use placeholder parameter $^a in the mainline␤at /tmp/zOwlwdEkgz:1␤------> 3$^a7⏏5  for 1,2␤»
moritz wamba: just regular, mainline code 12:39
wamba m: *.say  for 1,2 12:42
camelia rakudo-moar a45224: OUTPUT«1␤2␤»
wamba m:* .say  for 1,2
m: * .say  for 1,2 12:43
camelia rakudo-moar a45224: OUTPUT«*␤*␤»
12:44 lizmat joined
wamba m: *.Int.say  for 1,2 12:46
camelia rakudo-moar a45224: OUTPUT«1␤2␤»
wamba say *.Int  for 1,2 12:47
m: say *.Int  for 1,2
camelia rakudo-moar a45224: OUTPUT«{ ... }␤{ ... }␤»
12:50 lizmat left
Philj Which branch should I be on if I want map().race to work? (If any!) 12:50
ZoffixWin nom is the latest and greatest. As far as I know, race is buggy 12:52
Philj Yeah, I am having more luck with start / await; 12:53
awwaiid buggy? my very limited use of .map().race I thought worked. maybe I was doing .race.map 12:54
Philj my sub returns nothing if I use map.eager/hyper/race, but its fine with start / await; 12:55
wamba if i test race map that it is usually slower than only map :) 12:57
Philj Ditto :) 12:58
But also with no ouput lol 12:59
13:00 Sgeo_ left 13:04 Emeric joined
wamba ok, this is faster with race (^10000).race.map({ $_ if .is-prime })>>.say; 13:05
awwaiid m: %h = a => 5, b => 6, c => 7; say %h[0] 13:07
camelia rakudo-moar a45224: OUTPUT«5===SORRY!5=== Error while compiling /tmp/rJeKBBYZrc␤Variable '%h' is not declared␤at /tmp/rJeKBBYZrc:1␤------> 3<BOL>7⏏5%h = a => 5, b => 6, c => 7; say %h[0]␤»
awwaiid m: my %h = a => 5, b => 6, c => 7; say %h[0]
camelia rakudo-moar a45224: OUTPUT«{a => 5, b => 6, c => 7}␤»
awwaiid How does that work? 13:08
ZoffixWin That's basically (%h)[0]
awwaiid ah
psch m: Any[0].say
camelia rakudo-moar a45224: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YnuX4OCvkL␤Any cannot be parameterized␤at /tmp/YnuX4OCvkL:1␤------> 3Any[0]7⏏5.say␤»
psch anyway, yeah, what ZoffixWin said
Philj oh, so it seems race.map() works, but map().race doesn't
awwaiid fascinating
psch m: say Any.^can('AT-POS')(Any) 13:09
camelia rakudo-moar a45224: OUTPUT«Invocant requires a type object of type List, but an object instance was passed. Did you forget a 'multi'?␤ in block <unit> at /tmp/B32d6NzKIf line 1␤␤»
psch wonders how useful "Did you forget a 'multi'?" there really is
otoh, i don't think that's a typical use-case...
13:09 sufrostico joined 13:12 cdg joined
nine jnthn: the Lexotic that serialization stumbles over seems to be one of the outer lexical symbols that compile_in_context unconditionally dumps into the frame. 13:12
awwaiid If the ascii version of operators are the "texas variant", does the fancy version have a name, or is it just "operator"?
13:14 cdg left 13:15 cdg joined
ZoffixWin Just operator. 13:19
m: sub foo { EVAL 'nextsame', context => CALLER::CALLER:: }; my $x = 42; foo 13:22
camelia rakudo-moar a45224: OUTPUT«nextsame is not in the dynamic scope of a dispatcher␤ in block <unit> at EVAL_0 line 1␤ in sub foo at /tmp/plIvGvPYs8 line 1␤ in block <unit> at /tmp/plIvGvPYs8 line 1␤␤»
ZoffixWin m: multi foo { EVAL 'nextsame', context => CALLER::CALLER:: }; my $x = 42; foo 13:23
camelia rakudo-moar a45224: OUTPUT«Attempt to return outside of any Routine␤ in block <unit> at EVAL_0 line 1␤ in sub foo at /tmp/0V4GvbkIQA line 1␤ in block <unit> at /tmp/0V4GvbkIQA line 1␤␤»
ZoffixWin This is what's causing the spectest failure in PR #743
Well, ignore the $x 13:24
This is a bug, right? 13:25
psch m: multi foo { CALLER::CALLER::.WHAT.say }; foo 13:26
camelia rakudo-moar a45224: OUTPUT«(PseudoStash)␤»
psch m: multi foo { CALLER::CALLER::.^name.say }; foo
camelia rakudo-moar a45224: OUTPUT«PseudoStash␤»
psch erg
ZoffixWin One CALLER:: also works
psch m: multi foo { CALLER::CALLER::.keys.say }; foo
camelia rakudo-moar a45224: OUTPUT«()␤»
ZoffixWin m: multi foo { CALLER::.keys.say }; foo 13:27
camelia rakudo-moar a45224: OUTPUT«($=pod !UNIT_MARKER EXPORT $_ $! ::?PACKAGE GLOBALish $¢ &foo $=finish $/ $?PACKAGE)␤»
psch yeah, so one CALLER out is UNIT
and beyond UNIT there's nothing
ZoffixWin m: multi foo { EVAL 'nextsame', context => CALLER:: }; foo
camelia rakudo-moar a45224: OUTPUT«Attempt to return outside of any Routine␤ in block <unit> at EVAL_0 line 1␤ in sub foo at /tmp/_v_QHv6shf line 1␤ in block <unit> at /tmp/_v_QHv6shf line 1␤␤»
ZoffixWin m: sub foo { EVAL 'nextsame', context => CALLER:: }; foo
camelia rakudo-moar a45224: OUTPUT«nextsame is not in the dynamic scope of a dispatcher␤ in block <unit> at EVAL_0 line 1␤ in sub foo at /tmp/b4zGkclWTm line 1␤ in block <unit> at /tmp/b4zGkclWTm line 1␤␤»
psch but nextsame only works inside of a multi
ZoffixWin Sure. But why is the error different, depending on whether I'm executing my eval in a multi? 13:28
awwaiid ZoffixWin: I ran into this sort of thing in LREP, github.com/awwaiid/p6-lrep/blob/ma...ff-out.txt ... but I don't remember what I all I did to generate that 13:29
oh this was around getting line number info 13:30
oh here is how I made it, github.com/awwaiid/p6-lrep/blob/ma...rystuff.p6 13:31
sorry, probably not helpful 13:32
13:33 vendethiel joined
psch m: multi f() { nextwith 1 }; multi f(1) { say "got 1" }; f() # i'm surprised..? 13:33
camelia ( no output )
psch m: say "still here?"
camelia rakudo-moar a45224: OUTPUT«still here?␤»
psch m: EVAL 'nextsame', context => CALLER:: 13:34
camelia rakudo-moar a45224: OUTPUT«nextsame is not in the dynamic scope of a dispatcher␤ in block <unit> at EVAL_0 line 1␤ in block <unit> at /tmp/ttZ5II1MtN line 1␤␤»
psch the "Attempt to return..." one seems out of place
jnthn psch: nextwith is iterating the *existing* argument list 13:35
13:36 skids joined
psch "which call the next routine with arbitrary arguments (nextwith)" from doc.perl6.org/language/functions 13:36
jnthn uh, candidate list
psch oh
Philj Wow. printing/saying is really slow - any workaround?
psch jnthn: so i'd have to predeclare the other candidate? 13:37
jnthn Same with [call|next][same|with]
psch: No, you need to just make a fresh call to re-evaluate the multi-dispatch
masak Philj: print/say less often?
ZoffixWin Philj, is it the compile time that's slow or runtime? And do you have an example that reproduces the issue?
ZoffixWin recalls a ticket reporting compilation of multiple `print`s ridiculously slow 13:38
psch jnthn: i don't think i understand. what's a fresh call in this context?
Philj Its not the compile time - hangon - I'll put an example together
13:42 kskv joined
Philj After simplifying my example, it seems join is the problem, not print! 13:46
13:48 mcsnolte joined
jnthn psch: When call a multi, we work out at that point what possible candidates match the incoming arguments 13:49
psch: And deferral just iterates through that list
psch: If you use nextwith/callwith, it does *not* recalculate anything
psch jnthn: oh, so redispatching with *with only work towards wider candidates that match the same argument list 13:50
jnthn psch: Correct
Also 13:51
psch m: multi f(Any $) { say "Any" }; multi f(Int $) { nextsame }; f 1
camelia rakudo-moar a45224: OUTPUT«Any␤»
jnthn nextsame and nextwith are equivalent to return callsame and return callwith
Which is why the "return outside of routine" thing
psch ah, yeah, that makes sense
jnthn Also, the context argument to `EVAL` is...um... :) 13:52
"unofficial" :)
I ugess :)
*guess
psch m: multi f(Int $) { say "calling g"; g }; multi f(Any $) { say "no g-calling" }; sub g { EVAL 'nextsame', context => CALLER:: }; f(1) # but it works... ;) 13:53
camelia rakudo-moar a45224: OUTPUT«calling g␤no g-calling␤»
13:53 dj_goku joined, perlpilot joined
jnthn Yeah, *that* much does :) 13:53
It's referring to lexical symbols that'd bite you really :)
13:54 zhi joined, vendethiel left
jnthn ('cus the optimizer looks for EVAL ocurring in the code to know what it can get away with) 13:54
nine jnthn: is there any sense at all in putting objects without serialize REPR functions into an SC? 13:56
jnthn nine: No, they're doomed if we pre-comp 13:59
nine: You thinking of dying on attempting to do so? 14:00
Well, not you personally like, but... :P 14:01
We could put a sanity check in the op that adds something to an SC that it has ->serialize
nine Well that breaks even NQP's build 14:02
14:02 ilbot3 left
nine Ah (IS_CONCRETE(obj) && !REPR(obj)->serialize) works better 14:03
jnthn Yeah, type objects are always trivially serializable :) 14:04
14:05 mnv joined 14:06 mnv left, sufrostico left, sufrostico joined 14:08 abraxxa left
nine What exactly is a BOOTContext? 14:14
14:14 kaare__ left 14:16 ilbot3 joined, tharkun left 14:17 tharkun joined 14:19 kaare_ joined
psch nine: the bootstrap scaffolding for an MVMContext, if the BOOTAttribute/Attribute holds... :) 14:19
+analogy 14:20
jnthn Yeah, the type of an MVMContext REPR
14:24 zhi left 14:25 mprelude left
nine Just not adding non-serializeable objects to the SC would be too easy. Apparently they can be referenced by P6opaques, too and become added when serializing this P6opaque. 14:27
psch hm, is there a "we ran through the whole loop" phaser? 14:28
like, NOTLASTED..?
or am i just misunderstanding LAST 14:29
and it always happens at the last iteration and is equivalent to LEAVE in a for or loop
14:31 kaare__ joined 14:32 sjoshi left
jnthn nine: Yeah, it'll only catch direct additions, not ones that come about during the walk 14:33
14:33 kaare_ left 14:35 kaare__ left 14:37 jolts joined 14:38 kaare_ joined 14:42 uruwi joined 14:46 uruwi_ joined 14:47 uruwi left 14:51 vendethiel joined
japhb Is there a way to just make use of the serialization functionality to freeze an object graph to disk, and later load it directly? In other words, is it inextricably entertwined with precompilation, or can I just provide it a graph root, and ask it to serialize object reachable from there that was not previously serialized (i.e., ignoring the setting and loaded modules)? 14:53
jnthn japhb: Well, it static links against the precise CORE.setting and compiler version 14:54
japhb: Because that's where it finds all the types like Int, Str, Hash, etc.
japhb: So you could only use it as cache, as pre-comp is 14:55
japhb Hmmmm, yeah, that's suboptimal for this use case.
jnthn It'd not be a suitable serialization mechanism if things had to survive the network or upgrades. :)
14:55 ptolemarch joined
jnthn (It wasn't ever intended to support that. :)) 14:55
It's not that the serialization ops themselves are tied tightly to precomp, so much as the result gives you all the same properties of precomp :) 14:56
japhb Oh sure, I was just wondering if it could be bent into that shape, since it would be mighty convenient for cases where you just want to load or store some complex object graph as a whole, and don't need e.g. an ORM's ability to load an individual object. 14:57
nodnod
jnthn It's a bit hard to bend it into that kind of shape, I think.
japhb yeah, sounds like
jnthn And probably better to go with some standardized serialization format, generally 14:59
Then something other than Perl 6 could decode the thing 15:00
ZoffixWin "A fictitious reader wrote in to add that Perl 6 is also slow because it doesn't use x86 Real Mode." twitter.com/scrottie/status/720656691436519424
ZoffixWin has no idea what that is, but I'm guessing we can't use it? :)
japhb True. But there aren't a lot of standard serialization formats that are good at serializing a general object *graph*, rather than just a *tree*.
YAML has some functionality for this, IIRC, but I don't recall seeing there's good YAML support available for Perl 6 yet. 15:01
jnthn ZoffixWin: en.wikipedia.org/wiki/Real_mode 15:02
ZoffixWin: I don't know that it's been used for decades... :)
japhb ZoffixWin: I believe that's just a tongue-in-cheek joke. It's roughly akin to saying we can't run in DOS and 1MB RAM 15:03
ZoffixWin Ah
japhb jnthn: It gets used all the time ... for a fraction of a second at initial boot. :-)
nine japhb: 640K! 15:04
jnthn japhb: Ah, because CPUs start in it by default for back-compat?
geekosaur unless you have uefi boot
japhb nine: EMM386 and HIMEM.SYS
geekosaur well, no, even then it's real mode for long enough to init uefi and switch
japhb jnthn: Yeah, or at least, they used to. Honestly, I haven't checked whether someone finally gave up on that bit of 80's compatibility in the very latest CPUs, but yeah, it was there for at least a couple decades. 15:05
nine Aren't those using protected mode already?
geekosaur they "do" but it's kinda horrid
programs still ran in real mode. when somehting needed to do a protected mode operation, emm386 switched to protected mode, did the thing, then *rebooted* --- after setting the cpu reset vector to a routine that resumed the original rpogram instead of actually rebootingf 15:06
they used an unused bit in the keyboard controller (!) to retain that information across the special reboot 15:07
japhb nine: Sadly, I got my first job out of college based mostly on my knowledge of how to get every K out of that first MB of RAM. Talk about an otherwise wasted skill ....
15:07 rurban joined
japhb geekosaur: Wow, I never knew that bit of trivia. That's horrendous and cool at the same time. 15:07
hoelzro o/ #perl6 15:08
japhb o/ hoelzro
hoelzro o/ japhb
psch o/ hoelzro
hoelzro o/ psch
geekosaur (the reboot was needed because you couldn't go back to real mode after entering protected mode)
japhb #perl6 just became #x86 for a bit there
nine geekosaur: the A20 gate?
geekosaur yeh
nine japhb: I was quite good at squeezing out those Ks, too :) 15:09
15:10 chris2 left
psch 60 tests total for Music::Helpers, and travis also is involved now \o/ 15:11
15:11 vendethiel left, vendethiel joined 15:12 dustinm`_ left
geekosaur oh, and HIMEM.SYS didn't use protected mode, it used a hack that existed even in real mode. if you set a segment register to the highest possible paragraph (0xffff) then it could address one page (minus 16 bytes) of physical memory past the real mode boundary 15:12
15:12 mindos left, PotatoGim left 15:13 jsimonet left, hoelzro left, damnlie left
stmuk moar on MSDOS? :) 15:13
RabidGravy :-O
15:14 damnlie joined
geekosaur sorry, not one page, 64K minus 1 paragraph 15:15
15:15 avalenn joined
geekosaur so HIMEM.SYS did that, relocated some DOS stuff there, and freed up an extra 64K of normal memory 15:15
15:16 pyrimidine joined
grondilu btw pmurias is working on a javascript backend, but how possible would it be to compile moarvm to javascript with emscripten or something like that? 15:16
geekosaur that'd be slow as **** if it worked
grondilu u sure? asm.js and stuff can be pretty fast. 15:17
15:17 mohae joined
grondilu not to mention the upcoming webassembly. 15:17
15:18 mohae left, dustinm` joined, maybekoo2 joined, jsimonet joined
stmuk I saw Quake or Doom or something running ok 15:18
15:19 mohae joined
stmuk under emscripten 15:19
15:19 rurban left, MadcapJake joined
geekosaur sure. emulators that do their own memory management are where it gets problematic 15:19
15:19 mindos joined, timotimo joined, ruoso joined 15:20 frederic1 joined, profan joined 15:21 b2gills1 joined, nebuchad` joined, apejens_ joined, telex left, ashleyde1 joined, yubimusubi joined, telex joined, ocbtec_ joined 15:22 TeamBlast joined 15:23 [particle]1 joined, chris2_ joined
psch huh, but something somewhere does a modulo 0 apparently.. 15:23
...although it's not travis that noticed that :s
pmurias geekosaur: MoarVM under enscripten will have to do it's own gc 15:24
psch cause travis still chokes on File::Which 15:25
well, panda does, actually...
geekosaur right, my point is a naïve translation via enscripten would probably emulate moar's memory management on a huge array representing memory
15:25 ptolemarch left, ocbtec left, avenj left, [particle] left, Possum left, RabidGravy left, mre_ left, Timbus left, ruoso_ left, b2gills left, mohae_ left, pyrimidi_ left, ashleydev left, krunen left, infina left, apejens left, frederico left, ugexe left, nebuchadnezzar left, ChoHag left, profan_ left, stux|RC-only left
geekosaur not even sure that would *fit* in memory... 15:25
15:27 stux|RC-only joined, krunen joined 15:28 Timbus joined
pmurias grondilu: you will loose the jit that way 15:28
15:28 ptolemarch joined, mindos left, MadcapJake left 15:30 parisba_ left, jnap left, AAASS2R joined, Vlavv_ joined, eiro joined, gabiruh joined, infina joined, mre joined 15:31 infina left, infina joined, Peter_R joined, chee joined 15:32 Spot__ joined, RabidGravy joined, chee left, chee joined, Juerd joined 15:33 vendethiel left 15:34 daxim_ joined, ChoHag joined 15:35 kskv left 15:36 PotatoGim joined 15:38 MadcapJake joined 15:39 caasih joined 15:40 mindos joined, Lucas_One__ left 15:41 parisba_ joined 15:44 Lucas_One__ joined, vendethiel joined, ugexe joined, jnap joined, khw joined 15:46 avenj joined, pmurias left
grondilu m: say (^10).sort: :by({cos(tau*$_/10)}) 15:49
camelia rakudo-moar a45224: OUTPUT«(0 1 2 3 4 5 6 7 8 9)␤»
15:49 kid51 left
grondilu m: say sort {cos(tau*$_/100)}, ^10 15:49
camelia rakudo-moar a45224: OUTPUT«(9 8 7 6 5 4 3 2 1 0)␤»
15:49 hoelzro joined
grondilu m: say (^10).sort: :by({cos(tau*$^b/10) <=> cos(tau*$^b/10)}) 15:50
camelia rakudo-moar a45224: OUTPUT«(0 1 2 3 4 5 6 7 8 9)␤»
15:50 webmind joined
grondilu what am I missing here? 15:50
m: say (^10).sort: :by({cos(tau*$^a/10) <=> cos(tau*$^b/10)})
camelia rakudo-moar a45224: OUTPUT«(0 1 2 3 4 5 6 7 8 9)␤»
timotimo m: say map {cos(tau*$_/100)}, ^10
camelia rakudo-moar a45224: OUTPUT«(1 0.998026728428272 0.992114701314478 0.982287250728689 0.968583161128631 0.951056516295154 0.929776485888251 0.90482705246602 0.876306680043864 0.844327925502015)␤»
timotimo m: say map {cos(tau*$_/10)}, ^10
camelia rakudo-moar a45224: OUTPUT«(1 0.809016994374947 0.309016994374947 -0.309016994374947 -0.809016994374947 -1 -0.809016994374948 -0.309016994374948 0.309016994374947 0.809016994374947)␤»
timotimo m: say sort :by{cos(tau*$_/10)}, ^10 15:51
camelia rakudo-moar a45224: OUTPUT«Unexpected named parameter 'by' passed␤ in block <unit> at /tmp/5CgKUFEVON line 1␤␤»
timotimo m: say (^10).sort: {cos(tau*$_/10)}
camelia rakudo-moar a45224: OUTPUT«(5 6 4 7 3 8 2 9 1 0)␤»
timotimo m: say (^10).sort: :by({cos(tau*$_/10)})
camelia rakudo-moar a45224: OUTPUT«(0 1 2 3 4 5 6 7 8 9)␤»
timotimo this is what you're missing, i suppose
grondilu thing is that I wanted to use the :@by version and it did not behave as I expected. So I tried they :$by version and I could not make it work either. 15:53
timotimo :@by?
grondilu yeah this a thing, several sorting criteria with descending priorities. 15:54
timotimo that's just returning a list-like from the by code-block
psch m: role R[::T] { submethod BUILD { self.^add_method(T.^shortname, my method { say T.^name }); self.^compose } }; class C does R[Duration] { }; C.new.Duration # /o\
camelia rakudo-moar a45224: OUTPUT«Duration␤»
psch curiously, that is exactly what i need
it still hurts a bit :/
well, not quite exactly, as the method body has to be a bit different :P 15:55
timotimo hmm, is it a good idea to put that into BUILD, not into something like "compose"?
psch timotimo: i... am not sure
grondilu from S32/Containers: @by differs from $by in that each criterion is applied, in order, until a non-zero (tie) result is achieved
psch if there's a more resilient spot to put it, i'm open to advice
grondilu m: say (^10).sort: :by({cos(tau*$^a/10) <=> cos(tau*$^b/10)} but Ordering) 15:57
camelia rakudo-moar a45224: OUTPUT«5===SORRY!5=== Error while compiling /tmp/5lKHWHt0ok␤Undeclared name:␤ Ordering used at line 1␤␤»
grondilu m: say Ordering
camelia rakudo-moar a45224: OUTPUT«5===SORRY!5=== Error while compiling /tmp/QHQHC3HAM5␤Undeclared name:␤ Ordering used at line 1␤␤»
grondilu is confused now
arnsholt jnthn++ # blog
timotimo clearly outdated speculations
grondilu greps 'method sort' in the core and find no occurence of neither a :$by nor a :@by parameter. 15:58
psch m: say Order 16:00
camelia rakudo-moar a45224: OUTPUT«(Order)␤»
psch m: say Order::.keys
camelia rakudo-moar a45224: OUTPUT«(More Same Less)␤»
psch grondilu: .unique has :&by, there was a discussion recently about the inconsistency there 16:01
ZoffixWin m: say (^10).sort: :do-whatever-you-want-by({cos(tau*$_/10)})
camelia rakudo-moar a45224: OUTPUT«(0 1 2 3 4 5 6 7 8 9)␤»
ZoffixWin Looks like the last example above didn't sort anything
grondilu well, that's disturbing. 16:03
16:04 uruwi_ left
psch m: "foo".say(:in('spanish')) 16:04
camelia rakudo-moar a45224: OUTPUT«foo␤»
moritz methods ignore extra named arguments. News at 11. 16:05
ZoffixWin :)
16:06 vendethiel left
ZoffixWin m: say "foo", :in('spanish') 16:06
camelia rakudo-moar a45224: OUTPUT«Unexpected named parameter 'in' passed␤ in block <unit> at /tmp/IMWh1KyXot line 1␤␤»
ZoffixWin Why only methods?
timotimo because methods can be inherited
TimToady blames Liskov 16:07
RabidGravy blames Godot
TimToady wait!
moritz I don't, by principle!
TimToady waiter! 16:08
waitest!!!
waitester!!!!! 16:09
16:09 sufrostico left 16:10 zakharyas left 16:12 uruwi joined
diakopter blames Godwin 16:12
16:13 webmind left, japhb left, webmind joined 16:14 japhb joined, vendethiel joined 16:17 caasih left 16:18 Spot__ left 16:19 vendethiel left 16:20 Spot__ joined, vendethiel joined, caasih joined
gregf_ m: say "hello", :in('spanish') 16:22
camelia rakudo-moar a45224: OUTPUT«Unexpected named parameter 'in' passed␤ in block <unit> at /tmp/9fT4IVUQ7S line 1␤␤»
16:22 japhb left, japhb_ joined
gregf_ oh in is a filehandle or a stream 16:22
m: say in.^name 16:23
camelia rakudo-moar a45224: OUTPUT«5===SORRY!5=== Error while compiling /tmp/VvgSscfgVh␤Undeclared routine:␤ in used at line 1␤␤»
gregf_ m: say :in.^name
camelia rakudo-moar a45224: OUTPUT«Pair␤»
grondilu found out he can do sort { &first-criterium($^a, $^b) || &second-criterium($a, $b) }, @stuff
grondilu is still a bit confused by the lack of :@by though 16:24
16:27 dogbert17 joined, molaf joined
dogbert17 hello perl6 16:28
working a bit with the documentation in Cool.pod
the following text is incorrect no 'Coerces the invocant (or in method form, its argument)' 16:29
zoffix mentioned the other day that it should be 'Coerces the invocant (or in sub form, its argument)'
16:30 uruwi left
dogbert17 there are a few methods with the incorrect wording, i'll change them if noone raises any objections 16:30
masak dogbert17: go right ahead. that phrasing will always be Wrong. 16:31
dogbert17 ok, will do. Btw do you know if the undocumented cis function has a normal name? 16:32
psch m: say &cis
camelia rakudo-moar a45224: OUTPUT«sub cis ($) { #`(Sub|48437624) ... }␤»
psch m: say cis 1 16:33
camelia rakudo-moar a45224: OUTPUT«0.54030230586814+0.841470984807897i␤»
16:33 arc joined, arc is now known as arcetera
dogbert17 e.g. the normal name for cotanh, or long name is hyperbolic cotangent 16:33
16:33 arcetera left, arcetera joined
psch en.wikipedia.org/wiki/Cis_(mathematics) 16:33
so it apparently means cos(x) + i*sin(x) 16:34
16:34 sufrostico joined
dogbert17 so if I was to document it I would write that it calculates cos(x) + i*sin(x)? 16:35
psch i'd say so, yeah
16:35 mre left
moritz or exp(i * x) 16:36
dogbert17 Eulers formula?
exp(i * x) = cos(x) + i*sin(x) 16:37
moritz m: for ^10 { say exp(i * $_) - cis($_) }
camelia rakudo-moar a45224: OUTPUT«0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤»
moritz m: for 0, 0.1 ... 2 { say exp(i * $_) - cis($_) }
camelia rakudo-moar a45224: OUTPUT«0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤0+0i␤»
16:38 vendethiel left, eiro left
dogbert17 I'll whip something up and then I believe that all mathematical subs/methods in Cool have at least some documentation :-) 16:38
moritz ++dogbert17 16:39
16:39 eiro joined, sortiz joined
sortiz \o #perl6 16:40
16:43 mre joined
TimToady oh, now I see where the c...i...s comes from 16:45
16:47 vendethiel joined, eiro left
masak and a hyperbolic cis() function ought to be cish() ;) 16:48
16:50 jnap left, jnap joined 16:53 khw left 16:54 infina left, infina joined
dogbert17 in the meantime, does anyone know what the 'unpolar' method is supposed to do? 16:55
diakopter the opposite of unequator 16:57
dogbert17 :-)
16:58 eiro joined
moritz dogbert17: presumably create a Complex from polar coordinates 16:59
m: say unpolar(1, pi/2) 17:00
camelia rakudo-moar a45224: OUTPUT«6.12323399573677e-17+1i␤»
moritz m: say unpolar(5, pi/2)
camelia rakudo-moar a45224: OUTPUT«3.06161699786838e-16+5i␤»
dogbert17 so converting from polar coordinate system to a cartesian one 17:02
timotimo sounds about right
17:05 khw joined
psch hm, i really need to rethink this whole Chord design 17:06
17:06 firstdayonthejob joined 17:08 keix joined
dalek c: 7ad6d59 | (Jan-Olof Hendig)++ | doc/Type/Cool.pod:
Added documentation for cis and replaced the word method with sub in a few places
17:08
17:11 vendethiel left
psch ...but why do my tests pass but a oneliner dies? /o\ 17:15
17:16 matt_ joined, matt_ is now known as Guest23064 17:18 pyrimidi_ joined
[Coke] psch: code? 17:18
psch [Coke]: github.com/peschwa/p6-Music-Helper...02-basic.t is the test file 17:19
the module itself is around 400 loc or so
and the oneliner does exactly what one of the loops does
17:19 PotatoGim left
psch i'm pretty sure github.com/peschwa/p6-Music-Helper...rs.pm#L180 has something to do with it 17:19
17:20 mindos left
psch and i do think it's a terrible idea to do it like that, so i'll just ditch that again and try to do it less... whatever you want to call what i have there 17:20
17:21 Emeric1 joined, sufrosti1o joined, arcetera_ joined
RabidGravy I've seen worse ;-) 17:21
usually when I've written it 17:22
17:22 profan_ joined, vendethiel joined 17:23 avalenn left
[Coke] what's the oneliner? 17:23
17:23 _jolts joined, _jolts left 17:24 jnap_ joined
psch perl6 -Ilib -e'use Music::Helpers; my $C = Note.new(:48midi); my $c = Chord.new(notes => [$C, $C + M3, $C + M3 + m3]); $c.chord-type.say' 17:24
17:24 parisba_ left
psch does with "Method 'ACCEPTS' not found for invocant of class 'R1'" 17:24
*dies
17:24 _jolts joined, _jolts left
[Coke] ah. sadly, too complicated for me to dig into before I leave work. :) 17:25
psch no worries
it's in a branch for a reason :)
17:26 parisba_ joined, khw left, jnap left, sortiz left, sufrostico left, arcetera left, molaf left, caasih left, Spot__ left, webmind left, hoelzro left, avenj left 17:27 mohae left, firstdayonthejob left, japhb_ left, ugexe left, MadcapJake left, chee left, b2gills1 left, profan left, pyrimidine left, jolts left, tharkun left, ilbot3 left, skids left, cdg left, Emeric left, M-matthew left, tadzik left, araujo left, agentzh left, Emeric1 is now known as Emeric
psch huh, travis couldn't test successfully 17:28
17:28 rindolf left, wamba left, mohae joined
psch so maybe the passing tests are just an artifact of... something? vOv 17:28
17:29 jolts joined, jolts left, sufrosti1o left 17:30 jolts joined, jolts left, M-matthew joined
RabidGravy some weird unintended dependency 17:30
17:30 japhb joined 17:31 parisba_ left, jnap_ left
psch dependency on what though? 17:31
17:31 ocbtec_ left, chee joined 17:32 avalenn joined, M-tadzik joined, chee left, chee joined
psch like, master tested successfully at least once, and even in the state i branched from iirc 17:33
17:33 yubimusubi left, darutoko left, cdg joined, rindolf joined, darutoko joined 17:34 tharkun joined, sortiz joined 17:35 khw joined, jolts joined, jolts left, sufrostico joined, ocbtec joined 17:36 jolts joined, jolts left 17:37 molaf joined, avenj joined, avenj left, avenj joined 17:38 diegok left, luis left, MadcapJake joined 17:40 matiaslina joined, diegok joined, jolts joined, jolts left 17:41 jolts joined, jolts left 17:42 luis joined, mindos joined 17:45 araujo joined 17:46 jolts joined 17:47 jolts left, skids joined, lostinfog joined, araujo left, caasih joined 17:48 jolts joined, jolts left, b2gills joined 17:50 PotatoGim joined 17:52 jolts joined, jolts left, jnap_ joined, Spot__ joined 17:53 jolts joined, jolts left, ilbot3 joined 17:56 uruwi joined, jolts joined, jolts left 17:57 webmind joined, jolts joined, jolts left 18:00 spider-mario joined 18:01 jolts joined, jolts left, parisba_ joined 18:02 jolts joined, jolts left 18:05 jolts joined, jolts left 18:06 ugexe joined, jolts joined, jolts left, firstdayonthejob joined, ocbtec left 18:09 Possum joined, _mg_ left, jolts joined, jolts left 18:10 _mg_ joined, jolts joined, jolts left 18:12 hoelzro joined, nebuchad` is now known as nebuchadnezzar, FROGGS joined
ZoffixWin Hm... awhile back, I asked if traits were "roles" and someone said they were roles composed at compile time. Now I'm reading docs.perl6.org/language/functions#Traits and it says they're SUBS run at compile time... And they are defined as subs, so why are they roles or was that incorrect? 18:12
psch ZoffixWin: a trait_mod is a special kind of Routine, that usually applies a role to its LHS 18:13
dalek c: e0a47b9 | (Zoffix Znet)++ | doc/Language/functions.pod:
Fix typo
hoelzro ZoffixWin: that was me! I think that the concept of traits as subs (like trait_mod) is a rakudo-based implementation detail 18:14
psch ZoffixWin: as in "has $.x is rw;" fits to "sub trait_mod<is>(Attribute $a, :$rw!) { ... }"
hoelzro but I may have misspoken
18:14 jolts joined, jolts left
psch well, "usually" is probably a bit inaccurate 18:15
18:15 lostinfog left, jolts joined, jolts left
psch "conceptually", maybe, but even that's kind of eh.. 18:15
ZoffixWin m: multi sub trait_mod:<is>(Routine $r, :$doubles!) { $r.wrap({ 2 * callsame; }) }; sub square($x) is doubles {$x * $x}; say square 3; 18:16
camelia rakudo-moar a45224: OUTPUT«18␤»
psch traits fit with roles insofar that they work similar to what "but" does, but then "but" is a trait_mod itself...
ZoffixWin Alright. 18:17
Woodi jnthn: when object goes out of scope then it is unmarked so can be mass-freed at gc time... so doing noting is nice optimisation :) but maybe doing .free on fresh-out-of-scope objects can be netto gain ? eg. object is probably in cache
perlpilot ZoffixWin: maybe start reading at S02:468
ZoffixWin What's 468? A line number? 18:18
perlpilot ZoffixWin: Also, I wouldn't say that "trait is a role", but that is a common way they can be attached to things.
ZoffixWin: yeah. 18:19
(sorry, I kinda expected the bot to be around and make a link for me)
18:19 jolts joined, jolts left 18:20 jolts joined, jolts left 18:21 jolts joined
RabidGravy the traits/roles equivalence is a Moose thing, where traits really are just roles applied to meta thingies 18:22
psch is reminded of perl6advent.wordpress.com/2011/12/...y-and-how/ 18:24
18:25 vendethiel left, agentzh joined
psch about 60% through, the "very simple aspect oriented programming" bit 18:25
ZoffixWin FWIW, the link was design.perl6.org/S02.html#Properties_on_Objects 18:26
18:27 M-tadzik is now known as tadzik 18:31 cpage_ left 18:34 vendethiel joined 18:35 cdg left
masak is now trying out the Nex game -- written in Perl 6 -- remotely over the web with a friend 18:38
timotimo masak: i wonder if you'd be interested in "tak": cheapass.com/sites/default/files/Ta...-10-16.pdf and www.playtak.com/ 18:41
18:44 _mg_ left 18:48 khw left
masak timotimo: yeah, stacking games can be fun 18:54
timotimo: I tend to be drawn to the ridiculously simple ones, though, and this one already looks a little bit too complex for my tastes :) 18:55
18:55 sufrostico left 18:57 vendethiel left, cpage_ joined 19:02 cpage_ left
El_Che can the piano players here recommend a good piano lamp for a digital piano (standup). I bought this (www.amazon.de/König-Meyer-12297-000-63-Pianoleuchte-silber/dp/B00J5AJPFM) but sent already 2 back. They flicker 19:04
19:04 sufrostico joined 19:05 cpage_ joined
RabidGravy I've got one that sort of clamps on a music stand, takes a small "normal" bulb 19:06
El_Che less likely to flicker than led maybe
19:07 vendethiel joined
RabidGravy looks like www.djmmusic.com/p-3712-km-double-m...122-6.aspx but just one bulb 19:09
El_Che thx
19:10 FROGGS left 19:11 sufrostico left 19:12 snarkyboojum joined 19:13 snarkyboojum left 19:14 cpage_ left 19:18 cpage_ joined, pyrimidine joined 19:19 mohae_ joined 19:20 uruwi_ joined 19:21 diego_k joined 19:22 Emeric1 joined, mindos_ joined, PotatoGim left, caasih left, mindos left, Emeric left, infina left, diegok left, infina joined, Emeric1 is now known as Emeric, uruwi left, pyrimidi_ left, b2gills left, sortiz left, mohae left, infina left, infina joined 19:23 mindos_ is now known as mindos, sortiz_ joined 19:25 b2gills joined 19:26 M-matthew left, pierrot left, caasih joined 19:27 sufrostico joined 19:28 vendethiel left 19:29 M-matthew joined 19:30 PotatoGim joined 19:32 pnu left, mindos left 19:33 mindos joined, pnu joined 19:34 thowe left 19:35 Actualeyes left 19:37 thowe joined 19:40 arcetera_ left 19:41 allessklaar joined 19:42 itaipu joined, allessklaar left 19:47 cpage_ left 19:57 rafl left 19:58 rafl joined 19:59 araujo joined, araujo left, araujo joined 20:00 emdashcomma_ left 20:01 emdashcomma joined 20:04 cpage_ joined 20:05 cpage_ left 20:07 sufrostico left 20:09 cpage_ joined, tharkun left 20:12 rindolf left 20:13 pierrot joined 20:18 darutoko left, jjido joined 20:20 sufrostico joined, jjido_ joined 20:22 tharkun joined 20:23 jjido left, rafl left, Possum left 20:25 Possum joined, sufrostico left 20:27 sufrostico joined 20:28 rafl joined 20:34 sufrostico left 20:46 cpage_ left 20:50 neuron joined
neuron Hi 20:51
20:51 itaipu left
neuron I'm looking at NativeCall example on Windows 20:51
The function to create dialog looks like sub MessageBoxA(int32, Str, Str, int32) 20:52
But the first parameter is really a pointer
So I would like to define the function as sub MessageBoxA(HWND, Str, Str, int32)
20:53 kid51 joined
neuron But trying to create such class fails on me: class HWND is repr('int32') { } 20:53
20:53 skids left
neuron Lookup by name of unknown REPR: int32 20:53
hoelzro neuron: you probably want a repr('CPointer')
neuron That was other thing I tried 20:54
But then, NativeCall reports error, it does not like to work with such class.
Calling MessageBoxA(Int, Str, Str, EnumMessageBox) will never work with declared signature (HWND, Str, Str, int32 --> int32) 20:55
nine neuron: If a HWND really is an int32, have a look at rakudo's src/core/natives.pm to see how int32 is defined
neuron ( I should really paste whole code somewhere ) 20:56
20:56 sufrostico joined
neuron Well, on Windows HWND is really a pointer 20:56
20:56 rurban joined
dogbert17 the docs for Cool mentions a method called capitalize which I can't find doing 'say Cool.^methods'. Has it been removed? 20:56
neuron my native int32 is repr('P6int') is Int is nativesize(32) { } 20:57
20:58 MasterDuke joined 20:59 jjido_ left
MasterDuke I'm trying to look at some profiles I generated (about 2-5Mb) in Linux, but Firefox and Chrome both take very long to read them, and go unresponsive when doing so 21:00
any other browsers known to be good? or other suggestions?
neuron Ah, class HWND is repr('CPointer') is Int { }. Tank you nine ! 21:02
RabidGravy you may not actually need the Int there if you change the sub declaration too
neuron RabidGravy : sorry, that's out of my league at the moment, can you be more specific please? 21:05
Which sub?
RabidGravy eh? If you declare "sub MessageBoxA(HWND, Str, Str, int32)" then you don't need the "is Int" 21:06
21:06 riatre_ is now known as riatre 21:07 Amnez777 left 21:08 japhb left
neuron ah, I have tried that as a first thing, but pastebin.com/YNQ4LEGE 21:08
timotimo neuron: github.com/jnthn/zavolaj/blob/mast...pi-call.p6 - this may be interesting to you 21:09
21:10 sufrostico left
neuron timotimo: that's where I started. It is using plain int32, which I'm trying to improve, to create real object HWND 21:10
masak first nex game tonight was a roaring success
we played till the bitter end
(I won)
neuron Just for the sake of exploring the object model in P6
timotimo are you actually allowed to introspect a HWND?
masak I think this is a first -- Perl 6 and rakudo are now stable enough to do this
RabidGravy neuron, I'm not quite sure what you are trying to do there
timotimo also, your new method doesn't create a HWND, it just returns the Int you got passed in in your latest paste 21:11
masak also, but thanks to heroku++ and to pnu++
RabidGravy if you want to pass (HWND *)NULL then just the HWND type object, not a new object
timotimo that's right, the undefined object stands in as the null pointer
RabidGravy so "say MessageBoxA(HWND., "We can haz NCI?", "oh lol", MB_YESNO);"
timotimo which of course doesn't port properly to systems where you can actually dereference the null pointer and store data there
neuron ah, hmm 21:12
timotimo there's a stray dot in rabidgravy's code
neuron let me chew on that for a sec :)
21:12 colomon joined
colomon o/ 21:12
21:13 cpage_ joined
neuron Ok, I think I see what's going on. 21:13
RabidGravy timotimo, does rakudo run on any of those systems?
neuron What I wanted to achieve, was to be able to call MessageBoxA(NULL, ....) where the NULL would automagically become HWND class
Maybe that's silly thing to do though 21:14
21:14 japhb joined
neuron I thought I would create HWND class, which would have new(int32) constructor, so P6 could eventually figure out what I meant 21:14
RabidGravy no, the API doesn't work like that 21:16
timotimo RabidGravy: i don't even know which systems have that. i think solaris perhaps?
colomon any opinions on the current best module to use to read JSON? I’m running into JSON::Tiny performance issues again.
RabidGravy or possibly some microcontroller or some such
neuron tried to compile P6 on Solaris 12 today but failed miserably
RabidGravy neuron, if you pass NULL as the first argument to the MessageBox function in user32 then it means "there is no owner window", it doesn't get filled in 21:17
masak I have a discussion topic for tonight
how much do people on this channel feel like they're benefitting from theory?
RabidGravy typically you would have got an HWND from a function that created a window 21:18
masak as in, on a scale from "all I do every day I learned on the job" to "theory is everything and without it I'd be nothing", where do people feel they fall?
21:19 TEttinger joined
neuron RabidGravy: yes, but i thought I could make it (HWND*)NULL sort of. So that the MessageBoxA would not accept random numbers, only HWND class or NULL. 21:19
hoelzro masak: you mean in general? or as applies to perl6/this channel?
21:19 ptolemarch left, Amnez777 joined
masak hoelzro: I guess I mean in general. 21:20
RabidGravy neuron , right, so the HWND type object in your code IS NULL
a (HWND *)0
masak how much do people feel assisted/propped up by theory?
how important is theory in people's day-to-day activities?
RabidGravy same as the Int or Str or whatever type object is "undef"
timotimo i don't remember what that system was and i can't seem to find anything about it on-line 21:21
sorry about the noise, then
21:21 sufrostico joined
neuron RabidGravy: You are talking about MessageBoxA(HWND, ....) again, right? 21:22
colomon masak: “90+% of what I do every day I learned on the job”.
RabidGravy neuron, yes
masak colomon: could you tell me something about the remaining 10%? I'm curious.
21:23 jjido joined
colomon masak: actually, looking at your comments a bit more there, I think you’re making (or I’m making) an artifical distinction between theory and “on the job”. 21:24
masak fair enough.
colomon Perfectly possible to learn theory on the job.
masak I mean, surely something could be both.
RabidGravy I tend to describe how I work as "having an internal pattern book", I have a feeling for what works well and what doesn't based on practical observation and previous implementations, never recourse to theory knowingly 21:26
colomon In terms of the 10%, I was thinking of things learned in school. I still use a good bit of math, some design ideas picked up in Lisp-based AI classes
probably some other stuff. 21:27
but I did a bunch of reading my first few years on the job — pattern books, C++ programming books, misc. Knuth....
21:29 Emeric1 joined
colomon and seriously tried out a lot of things a later mostly rejected. ;) 21:30
21:31 Emeric left, Emeric1 is now known as Emeric, Emeric left
masak ok, nice to hear 21:33
I feel with my current job I rely on theory *heavily*
I feel that's rather unusual
the trick is finding it among all the practice, though
colomon nice gig if you can get it. :)
masak I feel my relationship with Perl 6 is the same, though 21:34
21:35 tharkun left, tharkun joined
masak it's like... sure, there's a lot of practice even in what I do -- but the bits of it that are meaningful and have staying power all have some degree of theory in them 21:35
maybe this is just my way of saying that I'm an irredeemable pattern matcher, so I stumble on theory everywhere. I dunno.
dalek c: 8e218cf | (Jan-Olof Hendig)++ | doc/Type/Cool.pod:
Added tanh, atanh, cotanh and acosech to the coercion table and removed capitalize from the same
21:39
RabidGravy y'see I was never particularly taught computer science theory, I was taught *programming* then thought screw this, and went and did a literature degree :) 21:40
masak I'm in the same boat there. I never formally took CS.
I have, however, tried my best to make up for it since. 21:41
particularly by reading up a bunch on parsers and compilers.
hoelzro masak: I want to say if 0 is "all I do every day I learned on the job", and 100 is "theory is everything", I would say...40?
masak oh, interesting. so, a slight majority is from theory? 21:44
no, wait.
masak can't count
a slight majority is from practical experience? :) 21:45
hoelzro yup
masak that's still a lot less than colomon, for some reason. discuss.
hoelzro I really appreciate theory, but most of what I use is from experience
things like how caching affects performance, etc
masak like, you seem to be using four times as much theory as colomon
colomon Well, I’m doing CAD file I/O stuff. If there’s direct theory there, no one ever taught me. 21:46
and the broader software organization stuff i mostly rely on guts, not theory. :) 21:47
masak someone on the #python channel today asked me about an interview question. it was basically "given an input such as `x ** 3 + 2 * x ** -2` (of arbitrary polynomials over x), find its derivative". I explained to them how to do this with parsing/ASTs/traversal/calculus 21:48
21:49 jjido left
masak someone pointed out that my AST was overpowered for the task, since something like (coefficient, power) would be enough for each term in this case 21:49
which is fair enough.
21:49 vendethiel joined
masak but basically, my ability to solve this problem -- artificial as it is -- is all due to me knowing about parsers and AST traversal (and calculus) 21:50
when I see the problem, I see strangelyconsistent.org/blog/its-ju...tree-silly 21:51
21:57 neuron left
colomon don’t be silly, it’s a hash. ;) 21:58
masak ;)
colomon whereas when reading, say, a STEP file, you could do a formal parser, but that would be overkill 22:01
22:01 perlpilot left
colomon so you just hack something out 22:02
RabidGravy if in doubt hack it out 22:03
hoelzro masak: maybe I overestimated, but I think about things like time complexity and data structures a lot 22:04
probably more than I need to =P
[Coke] waves from the highway. 22:05
RabidGravy don't IRC and drive
22:07 cpage_ left 22:11 cpage_ joined 22:15 kid51 left, vendethiel left
masak .oO( don't unicycle and privmsg ) 22:18
22:18 rurban1 joined 22:20 Sgeo_ joined
masak oh, and I'm all in the "hack it out" school too 22:20
but it's like when I do that, I do it against a backdrop of "I'm going to come back to this if there's a need" and "this may count as tech debt if X or Y happens"
22:21 rurban left
masak in fact, I'd say TDD has helped me relax into a managed kind of sloppiness in many cases 22:22
psch irclog.perlgeek.de/perl6/2016-04-15#i_12345969 expresses a lot of how i currently feel about "theory" 22:24
note, that's mostly contextualized by music and its theory, 'cause recently that's most of what i spend my time on 22:25
wrt programming/"code", i've never hardly a particularly strong grasp on theory
although i often wished i had, i never felt obviously stumped by that
that can easily be explained away by "you just don't know how a better theoretical base could help you" 22:26
masak or you're using lots of theory, but don't know it ;)
psch on the other hand, just today i've ran into "i wish i could make this pretty" without knowing established patterns that could make it so
masak: entirely possible, but i theory that's gathered by trial-and-error doesn't feel real to me, for some reason 22:27
as in, if i have a hunch that a bunch of nested loops should be expressed differently because i know that nested loops are "slow", it doesn't feel like theoretical knowledge to me
s/but i theory/but theory/ 22:28
masak talking about theory/practice wrt compilers and VMs is highly relevant for something like rakudo or something like MoarVM
psch is just catching up with the clog
i also find myself agreeing with hoelzro there, around irclog.perlgeek.de/perl6/2016-04-15#i_12346006 22:29
masak because (it's quite clear to us) there's a bunch of theory in there, but there's also a bunch of "no-one has done this before, let's try it this way"
RabidGravy but "theory that's gathered by trial-and-error" is a "pattern book", however that book might be stored 22:30
psch RabidGravy: i agree, but i can't help but feel a difference between a pattern crafted by a sufficiently realistic abstraction and a pattern learned by experience 22:31
(i am not sure how "storage" plays a role there, though...) 22:32
RabidGravy "book"
psch oh, so possible options for storage are "intuitive knowledge" and "papers by leading researchers" 22:33
plus whatever else
22:33 wamba joined
psch yeah, i can see that 22:33
s/intuitive knowledge/heuristics/ # probably
RabidGravy but hopefully the latter have been tried and found to work (and bad ones thrown out) some of the advocates of "design patterns" ten/fifteen years ago lost sight of that and it become an untested abstraction in itself 22:34
22:34 sufrostico left
psch isn't sure how to scope this back to compilers and VMs 22:35
i am definitely lacking in heuristics there :)
...i am also not sure scope can be verbed like that
masak sure it can 22:36
psch on the other hand, that's where i think music is so fascinating
masak we scope things all the time here
psch like, assuming a standard western tuning, you can play whatever you like
and it can probably be explained theoretically
masak yes
we talked about well-tempering the other day, actually 22:37
psch but then, taking a standard western tuning as base already severly limit what you *can* play
+s
so it's not surprise that whatever works, actually works
RabidGravy but then it's bounded sufficiently that it's fairly small
psch i had had the thought of trying to make music the other way around
as in, take white noise, throw billions of high-q notch filters at it, see what works 22:38
RabidGravy then you go into Terry Riley's microtonal stuff
22:40 colomon left
RabidGravy psch, I have a large number of "instruments" who's sole purpose is to make various forms of "noise" (in the reasonable technical sense) and another group of devices which either alter the amplitude or harmonic content over time 22:40
22:40 colomon joined
[Coke] (theory) mostly don't care. 22:41
masak I had a feeling people would fall all over the spectrum on this one. excellent!
psch in general i'd say "i wish i knew more, but it doesn't seem to matter too much either way" 22:42
well, excluding things like maths, obviously :)
[Coke] And I have ... half of a compsci degree. (BS of computer systems engineering)
psch RabidGravy: right, but in the technical sense every percussive instrument is a noise generator 22:49
22:49 Amnez777 left
RabidGravy I have these two modules in my rack right now www.youtube.com/watch?v=7ZeXbmSkV3U 22:55
22:59 Amnez777 joined
masak 'night, #perl6 23:00
23:00 firstdayonthejob left 23:04 sufrostico joined
RabidGravy right that's me done 23:05
23:05 rurban1 left
RabidGravy toodles 23:05
23:06 skink joined 23:10 RabidGravy left
colomon finally does enough profiles to realize that in his slower cases, JSON::Tiny is not the source of the problem. 23:17
23:24 matiaslina left
colomon doesn’t suppose someone has already written a decent 3D spatial tree in p6? 23:24
23:29 colomon left 23:30 mcsnolte left 23:32 colomon joined 23:37 sufrostico left 23:38 Amnez777 left
timotimo would that be like a quadtree? 23:42
23:44 spider-mario left, colomon left 23:45 AlexDaniel joined
AlexDaniel heh, somebody mentioned captionbot. Nice: files.progarm.org/2016-04-16-02444..._scrot.png 23:45
timotimo huh 23:47
japhb timotimo: 3D spatial tree examples are octree, kd-tree, bsp-tree, etc. 23:51
23:51 cpage_ left
timotimo ah, quadtrees are usually not used for 3d 23:51
japhb timotimo: Only if your 3D happens to be very thin in one dimension (which actually does happen, for e.g. racing games 23:52
timotimo mhm
japhb Colomon: Speaking of theory, which 3D spatial tree you want is a decent theory question that depends a lot on your problem space 23:53
23:54 Amnez777 joined
japhb For example, there are structures that are tree-like but don't strictly partition, such as bounding sphere trees, that work for certain problems quite well 23:54
(I found bounding sphere trees to be one of the more efficient structures back in my Perl 5 graphics engine days, because sphere-to-frustum is a really fast test in perl5, and more complex structures which had better theoretical performance fell prey to per-op overhead) 23:55
timotimo what kind of graphics engine stuff have you made? :) 23:56
japhb timotimo: A few little things -- an OpenGL Doom level viewer, a stress test designed to find the boundary of CPU v. GPU bottlenecks for dynamic languages, etc. 23:58
timotimo oooh
i've recently implemented a super simple particle system in pure perl6, but it doesn't perform well ;(
japhb The craziest was probably one that implemented a graphics engine on top of pTk's 2D primitives. 23:59
timotimo wat :)
23:59 cpage_ joined
timotimo that's Tk? as in TCL/TK? 23:59