»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:13
naddiseo joined
|
|||
naddiseo | Is there a way to declare union types? | 00:14 | |
00:14
ab5tract joined
|
|||
vendethiel | naddiseo: no | 00:20 | |
naddiseo: you might be interested in timotimo's adt module | |||
naddiseo | Does subset Foo where (Int | Str); work ? | 00:21 | |
raiph | m: subset Foo where (Int | Str) | ||
camelia | ( no output ) | ||
vendethiel | naddiseo: yeah, but as a untagged union. | ||
(and runtime-typechecked) | |||
naddiseo | K, I think that's what I want. | 00:22 | |
Now to figure out "P6opaque: no such attribute '$!signature'" | |||
00:23
pmurias_ left
00:27
Ugator left
00:35
aborazmeh joined
|
|||
raydiak | m: subset Foo of Str|Int; my Foo $foo; $foo = "foo"; say $foo; | 00:36 | |
camelia | rakudo-moar 30edf7: OUTPUT«foo» | ||
raydiak | m: subset Foo of Str|Int; my Foo $foo; $foo = 123; say $foo; | ||
camelia | rakudo-moar 30edf7: OUTPUT«Type check failed in assignment to '$foo'; expected 'Foo' but got 'Int' in block <unit> at /tmp/VLfMSGO_zs:1» | ||
raydiak | ^, ^^ which of those is broken? | 00:37 | |
00:40
night0x joined
|
|||
raydiak thought we were of the strict typing persuasion, meaning maybe the "foo" shouldn't have worked, but ianae | 00:41 | ||
raydiak rather hopes he is wrong about that | 00:42 | ||
naddiseo | m: enum A <Block>;subset B; | 00:43 | |
camelia | rakudo-moar 30edf7: OUTPUT«===SORRY!===P6opaque: no such attribute '$!signature'» | ||
naddiseo | Yeah.. what's that about? | ||
I know it's something to do with "Block" | 00:44 | ||
but that error is very uninformative. | |||
00:46
night0x left
00:48
pdcawley left
|
|||
raydiak | naddiseo: agreed it's not very helpful...sometimes --ll-exception can help give a clue with those unhelpful internal error messages | 00:49 | |
raiph | m: enum A <Code> | 00:50 | |
camelia | rakudo-moar 30edf7: OUTPUT«===SORRY!===P6opaque: no such attribute '$!signature'» | ||
raiph | m: enum A <Block> | ||
camelia | ( no output ) | ||
raiph | m: enum A <Foobar> | ||
camelia | ( no output ) | ||
raiph | m: enum A <Named> | 00:52 | |
camelia | ( no output ) | ||
naddiseo | Thanks for your help. I'm off now. | 00:55 | |
00:56
naddiseo left,
night0x joined
00:57
Brian_ joined
00:59
night0x left,
aborazmeh left
01:00
aborazmeh joined,
Brian_ left
01:07
dayangkun joined
01:08
night0x joined
01:10
PZt joined
01:11
night0x left
01:18
gfldex_ left
01:29
dayangkun left
01:33
ab5tract left
01:51
hekmek left
01:54
raiph left
01:58
labster joined
02:05
grettis left
02:08
night0x joined
02:09
Vlavv joined
02:15
ab5tract joined
02:17
rmgk is now known as Guest15907,
rmgk_ joined,
Guest15907 left,
rmgk_ is now known as rmgk
02:26
raiph joined
02:27
hekmek joined
02:43
ninjazach joined
02:49
night0x left
|
|||
raiph | m: enum A <Code> #123457 | 03:07 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123457 | ||
camelia | rakudo-moar 30edf7: OUTPUT«===SORRY!===P6opaque: no such attribute '$!signature'» | ||
03:09
atroxaper joined
03:16
atroxaper left
03:17
dj_goku joined
03:18
ab5tract left
03:22
ssqq joined,
ninjazach left
03:25
ninjazach joined
03:30
hekmek left
03:32
Mso150 joined
03:46
jack_rabbit joined
03:50
Mso150 left
|
|||
JimmyZ | m: enum A <Str> | 03:55 | |
camelia | ( no output ) | ||
03:55
ssqq left
03:58
noganex joined
04:01
noganex_ left
04:10
raiph left
04:12
anaeem1_ joined,
anaeem1_ left
04:13
anaeem1 joined
04:14
atroxaper joined
04:18
anaeem1 left,
anaeem1 joined
04:20
atroxaper left
04:27
ninjazach left
04:31
aborazmeh left,
aborazmeh joined
04:32
aborazmeh left
04:37
doublelel joined
|
|||
TimToady | m: le 42 # French? | 04:43 | |
camelia | rakudo-moar 30edf7: OUTPUT«===SORRY!=== Error while compiling /tmp/RUKgoSEL0MUndeclared routine: le used at line 1. Did you mean 'lc'?» | ||
TimToady | don't get the error here either | ||
m: == 42 # French? | |||
camelia | rakudo-moar 30edf7: OUTPUT«===SORRY!=== Error while compiling /tmp/FL5NlYBVcxPreceding context expects a term, but found infix == insteadat /tmp/FL5NlYBVcx:1------> ==⏏ 42 # French?» | ||
TimToady | .oO(c'est la life, universe, and everything) |
04:44 | |
(continuing a conversaton that started on #moarvm) | 04:46 | ||
04:52
mr-foobar left
04:58
doublelel left
04:59
esaym left
05:02
ab5tract joined
05:06
esaym153 joined
05:07
ab5tract left
05:08
kaare_ joined
05:11
doublelel joined
06:07
pecastro left
06:15
kaare_ left
|
|||
moritz | timotimo: at least for the perl6.org domains, yes | 06:21 | |
mathw | Does anyone know how NativeCall looks for libraries and more importantly how I can get it to look somewhere it's not currently looking? | 06:26 | |
moritz | mathw: iirc you can pass absolute pathes to the "is natve" trait | 06:32 | |
06:36
Woodi left,
kaare_ joined
|
|||
mathw | hmm I don't think this is a library path problem | 06:40 | |
06:51
ab5tract joined
06:56
ab5tract left
07:02
erkan joined
|
|||
moritz | I looked at prices for signing of wildcard certs: www.sslshopper.com/best-ssl-wildca...icate.html | 07:02 | |
"ouch" | |||
07:02
rindolf joined
|
|||
moritz | maybe we should wait for letsencrypt.org/ | 07:03 | |
or offer self-signed certificates until then | |||
07:08
perturbation joined
07:14
ab5tract joined
07:19
ab5tract left
|
|||
moritz | it's a bit perverse that firefox shows more security warnings for self-signed certificate than for an unencrypted connection | 07:21 | |
07:21
Isp-sec joined
07:24
darutoko joined
07:27
erkan left
07:30
erkan joined
07:33
perturbation left
07:44
gfldex joined
07:52
FROGGS joined
|
|||
dalek | : 9f8892a | FROGGS++ | misc/perl6advent-2014/schedule: picked slot 20 |
08:06 | |
FROGGS | I hope that's okay (I didn't follow discussions here on channel for a few days) | 08:07 | |
JimmyZ | masak: s/sekkind/second/ ? | 08:12 | |
08:14
virtualsue joined
08:22
brrt joined
08:23
blackbolt joined
08:25
Woodi joined
|
|||
blackbolt | hi, can someone help me? "cannot look up attributes in a type object" here's code: pastebin.com/wsgmxy6D | 08:27 | |
brrt | blackbolt - i'll try | ||
blackbolt | :) | 08:29 | |
08:30
rurban joined
|
|||
brrt | ok, first thing i spot is that in perl6, class instance variable are prefixed with a twigil | 08:31 | |
m: class Foo { has $.bar; }; my $f = Foo.new(:bar(4)); | |||
camelia | ( no output ) | ||
brrt | or | ||
blackbolt | ohhh, i rebuild code. there is "$.dataBase" | 08:32 | |
brrt | m: class Foo { has $!bar; method gist { $!bar.gist } }; say Foo.new(:bar("Hai")) | ||
camelia | rakudo-moar 30edf7: OUTPUT«(Any)» | ||
brrt | (i would have somewhat expected that to work, hmm) | 08:33 | |
and... i'm a little foggy on initializers, but i think you want submethod BUILD rather than method new | |||
or even sub new | |||
08:34
erkan left
|
|||
blackbolt | i want to create connection with DB | 08:34 | |
08:37
erkan joined,
erkan left,
erkan joined
|
|||
FROGGS | m: class Foo { has $.bar; method gist { $!bar.gist } }; say Foo.new(:bar("Hai")) | 08:41 | |
camelia | rakudo-moar 30edf7: OUTPUT«Hai» | ||
FROGGS | make the attribute public | ||
08:42
Mso150 joined
|
|||
FROGGS | so in pastebin.com/wsgmxy6D line 3 should read 'has $.dataBase;' and line 12 should be '$!dataBase = ... | 08:43 | |
though, the variables in line 13 are undeclared | |||
(at least in the pasted code, I guess they are declared and initialized before the class definition) | 08:44 | ||
blackbolt | ohhh thanks, that help FROGGS | 08:45 | |
08:46
virtualsue left
|
|||
FROGGS | :o) | 08:46 | |
08:48
kaleem joined
08:49
telex left
08:50
telex joined
|
|||
Woodi | hallo today :) | 08:50 | |
q: can I clone from git repo in one directory to other dir ? or maybe copy will do ? | 08:51 | ||
jnthn | Woodi: Yes, just git clone /that/directory /where/you/want/it | 08:52 | |
Woodi | ok. I can. but for backap I just pack&unpack repo directory ? or git is more sensitive ? | 08:54 | |
jnthn | The .git directory contains the full repo history, so if that's in your backup then you've what you need. | 08:57 | |
Woodi | I wonder about inodes and some such becouse I hear git is "filesystem"... but for now I just need somewhere to compile :) thanx jnthn++ | 08:59 | |
09:00
davido__ joined
09:02
davido___ left
09:04
Isp-sec left
|
|||
Woodi | anyway, R* probably is a lot of work, could we cut something down ? | 09:05 | |
09:06
TuxCM left
09:07
|Tux| joined
09:09
molaf__ joined
09:11
atroxaper joined
09:13
molaf_ left
09:19
atroxaper left
09:28
erkan left,
hekmek joined
|
|||
masak | JimmyZ: fixed; thanks. | 09:30 | |
antenoon, #perl6 | |||
09:31
erkan joined,
mvuets joined
|
|||
mathw | hi #perl6 | 09:42 | |
JimmyZ | m: my num $x = 3.5; | 09:48 | |
camelia | rakudo-moar 30edf7: OUTPUT«This type cannot unbox to a native number in block <unit> at /tmp/i0Olun1iis:1» | ||
JimmyZ | m: my num $x = 3.5e0 # known? | ||
camelia | ( no output ) | ||
jnthn | Yes, and correct. | 09:49 | |
rindolf | mathw: hi, sup? | 09:50 | |
mathw | I was trying to get NativeCall to talk to ncurses and I couldn't :( | 09:52 | |
jnthn: oh I ran into that one earlier, what's the reasoning? | 09:53 | ||
jnthn | 3.5 is a Rat | ||
mathw | oh | ||
well no wonder it won't unbox | |||
jnthn | The error could do with mentioning the type in question, mind... | 09:54 | |
09:59
fhelmberger joined
10:02
erkan left
|
|||
mathw | yes it's a LTA error message | 10:04 | |
10:05
erkan joined,
erkan left,
erkan joined
|
|||
mathw | Now I just need to memorise literal formats for things which can unbox to num and I'll be a happy man | 10:05 | |
except for the ncurses problem that is | |||
However, ncurses is a problem by itself | 10:06 | ||
10:08
virtualsue joined
10:12
ptc_p6 joined
|
|||
mathw | are there kinds of native library that NativeCall just can't handle yet? | 10:19 | |
I keep getting "cannot locate native library libncurses.so" but it's right there - however, it's a text file which says INPUT(libncurses.so.5 -ltinfo) in it | 10:20 | ||
moritz | mathw: Num literals always contain an e, like 1e0 | 10:21 | |
10:21
ab5tract joined
|
|||
jnthn | mathw: That's a linker script, looks like, not an actual library. | 10:21 | |
mathw | yeah | ||
jnthn | So no surprise trying to dynamically load it doesn't end well... | 10:22 | |
mathw | I'm trying to find the real library... | ||
jnthn | It's named right there in the script? | ||
libncurses.so.5 ? | |||
mathw | presumably gcc, if it saw that, would know what to do with it | ||
yes it is | |||
but it appears to be invisible | |||
jnthn | Oh. :S | ||
mathw | also | ||
Cannot locate native library 'libncurses.so.5.so' in method postcircumfix:<( )> at lib/NativeCall.pm6:129 | 10:23 | ||
it's putting .so on the end for me | |||
that's from an is native('libncurses.so.5') trait | |||
10:25
ab5tract left
|
|||
Woodi | mathw: there was same problems with ncurses before. maybe corect one is in /lib somewhere ? | 10:27 | |
mathw | Woodi: hah! it is | 10:28 | |
silly | |||
Woodi | ppls use some tricks in modules to get corect one | ||
mathw | on the other hand, if NativeCall insists on looking for libncurses.so.5.so it's going to be perpetually disappointed regardless of the path searched | 10:29 | |
itz | I put a sym link in on debian so I had a shared lib with .so on the end | ||
(probably not a good solution)_ | |||
mathw | it's a solution if you happen to be in a position to do that | 10:30 | |
it's not a good long-term solution though | |||
Woodi | but that linker "script" problem should be resolved by linker or some other _system_ tool... or NativeCalls works in not standard way ? | ||
itz | I assume NativeCall should be modified to support .so.\d as well as .so | 10:31 | |
jnthn | Patches welcome ;) | ||
Gotta go for a bit & | |||
FROGGS | itz: NativeCall does not attempt to locate a library, though it fiddles with its name... | 10:32 | |
mathw: is it possible that your NativeCall is outdated? | |||
10:32
erkan left
|
|||
FROGGS | mathw: there were patches in that area lately | 10:32 | |
itz | oh so it just appends .so to libfoo? | ||
FROGGS | itz: yes | ||
sort of | 10:33 | ||
itz | I should just look :) | ||
FROGGS | mathw: I am thinking of that commit: github.com/jnthn/zavolaj/commit/14...e17f94b6f7 | ||
itz: github.com/jnthn/zavolaj/blob/mast...l.pm6#L104 | |||
10:35
erkan joined
|
|||
mathw | FROGGS: I installed it this morning | 10:35 | |
yeah that's not going to help because <alpha> won't match a digit will it | 10:36 | ||
moritz | correct | ||
mathw | It doesn't mess with it until I put the .5 on the end | ||
10:37
abraxxa joined
|
|||
itz | # TODO: more extension guessing | 10:37 | |
mathw | yeah I'm just trying to think of what the rules should be | ||
itz | maybe glob a number and pick the highest> | ||
Woodi | hmm, NativeCall is not a part of Rakudo ? NC is probably very good candidate for standard module. actually I prefer to have NC in the "core" over object stuff and grammars ;) | 10:38 | |
10:39
nige joined
|
|||
itz | hmmm I'm wondering whether this is actually a path rather than filename issue | 10:41 | |
mathw: are you a debianish 32/64 bit mixed library system? | 10:42 | ||
mathw | itz: yeah it's an Ubuntu box | ||
Woodi: it's in Rakudo Star, that's about as core as it gets | 10:43 | ||
itz | locate libncurses.so shows one without a numerical suffix | ||
10:43
ab5tract joined
|
|||
FROGGS | which is the linker script, no? | 10:43 | |
mathw | itz: which is a linker script. NativeCall doesn't seem to be able to handle it | ||
itz | oh yeah ASCII text | ||
FROGGS | mathw: NativeCall just delegates to dlload or what it is called | ||
mathw | dlopen() | 10:44 | |
I assume | |||
FROGGS | yeah, that | ||
mathw | or whatever the VM uses - NativeCall just asks NQP to do it | ||
I'll have to hack NativeCall to not mess with the name and see if that works | |||
thent ry to figure out a suitable patch | |||
FROGGS | github.com/MoarVM/MoarVM/blob/mast...all.c#L578 | 10:45 | |
Woodi | mathw: R* is *such* official thing ? I didn't know that... | ||
FROGGS | Woodi: it is what we think official means | 10:46 | |
Woodi | I like R* and also that official bit :) but I thinked it was: let's show the World we are here, we have something working and we are damn you forum-X NOT dead!" | 10:49 | |
mathw | R* is what it's expected people will actually install and use | 10:50 | |
so you get a compiler and some useful modules | |||
so ultimately it should be safe to assume people will have NativeCall | 10:51 | ||
among other things | |||
rather like Perl 5 programmers can assume that you've got Data::Dumper | |||
Woodi | but by removing some modules from R* we can promote our modules online repository :) make habits of using it in CPAN way | 10:53 | |
and "where is D::D" is FAQ #1 :) | |||
10:53
brrt left
10:54
darutoko- joined
|
|||
mathw | yes! Once I get NativeCall looking for the right library it works nicely | 10:56 | |
oh there'll be loads of modules that aren't in * | |||
but I think NativeCall ought to be | |||
this ncurses binding I'm working on probably oughtn't | 10:57 | ||
10:57
darutoko left,
Mso150 left
11:01
erkan left
|
|||
mathw | jnthn: I sent a pull request for a fix to NativeCall which detects ".so.<.digit>+$" and leaves it alone, to allow loading libfoo.so.43 etc. Working for me. | 11:01 | |
itz | mathw++ | 11:04 | |
11:04
erkan joined
11:05
atroxaper joined,
virtualsue left
|
|||
geekosaur | that's not a general solution since the runtime library can look like libfoo.so.1.5.9 or etc. | 11:06 | |
mathw | good point | 11:07 | |
easy enough to fix though | 11:08 | ||
11:09
smls joined
|
|||
geekosaur | and, as a general thing, it still bugs me a bit that NativeCall needs what the primary Linux distributions consider devel / link-time libraries even though they only need it for the .so symlink | 11:09 | |
but I have no idea how to fix that sanely | |||
11:10
atroxaper left
|
|||
smls | Maybe it should be possible to specify both the library name and version (as separate fields), and let it construct/guess the .so name based on both? | 11:11 | |
mathw | I think there's a more general solution in here somewhere | 11:12 | |
that allows cross-platformness as well | |||
but I don't have time to do that right now. Time to go wrestle with .NET again | |||
The pull request is updated anyway, now handles .so.1.2.3.2.2.3.2 etc. | 11:13 | ||
moritz | mathw++ | 11:14 | |
11:22
ab5tract left
11:23
ab5tract joined
|
|||
rurban | are there ever more than 3 subversions? | 11:24 | |
I think the limit is 3 | |||
Woodi | but why dlopen not all that automatically ? | 11:28 | |
not do* | |||
11:31
erkan left
|
|||
itz | "Plain Threads are the GOTO of todays computing" | 11:34 | |
11:34
erkan joined
|
|||
huf | what's manual memory management then? :) | 11:36 | |
i guess threads fit a bit better since they're also used to muck up control flow :) | |||
rurban | I believe they prefer coros via fibers | 11:38 | |
Ulti | manual memory management was the GOTO of last Tuesday | ||
Woodi | modularisation with routine calls replaced gotos ? | ||
huf | dont forget loops and if/else | 11:39 | |
Woodi | dye | 11:40 | |
they don't have loops back there ?? | |||
huf | well, they had at *least* if by the time we got the goto we know | ||
Woodi | so we need to lern to like shedulers in every not trivial case ? | 11:43 | |
JimmyZ | top | 11:46 | |
11:52
smls left
11:53
erkan left
11:56
ab5tract left
11:57
atroxaper joined
11:58
Ugator joined
12:01
krunen joined
|
|||
Woodi | defining <<constant lib = 'libncursesw.so.5';>> and using it in <<is native( lib );>> works for me. so probably '.5' suffix makes the trick, on Debian at least. | 12:02 | |
but I have /usr/lib/libncursesw.so which is a linker script... anyone know what should deal with that script ? do dload() should trigger execution of that script or script needs to be parsed to have file for dload() call ? | 12:04 | ||
12:09
blackbolt left
|
|||
vendethiel | wow, can't believe I didn't knew about ?& | 12:14 | |
masak | it's mostly there for consistency with ~& and +&, IIUC. | ||
it's not very useful. | |||
unless you happen to be Dijkstra and hate short-circuiting. | 12:15 | ||
vendethiel | "¿¿ ¡¡ for the job. Ah, Unicode." You mean spanish, not Unicode :) | ||
masak | I guess. | 12:16 | |
12:16
erkan joined,
erkan left,
erkan joined
|
|||
vendethiel | masak++ | 12:16 | |
moritz | how would you describe a Channel in a short sentence? | 12:17 | |
vendethiel | .oO( use the stream word, I dare you ) |
12:18 | |
12:23
ab5tract joined
|
|||
rurban | Channel: typed messages | 12:24 | |
moritz | rurban: not in Perl 6 land | 12:27 | |
JimmyZ | gist.github.com/zhuomingliang/26e3...6848908793 # help, I can't get it working | 12:31 | |
moritz | JimmyZ: the problem is that $!x and $!y are natives, so you can't bind to them | 12:33 | |
JimmyZ: you have to say submethod BUILD(:$x, :$y) { $!x = $x; $!y = $y } | |||
JimmyZ: or leave out submethod BUILD altogether; the default works fine. | 12:34 | ||
fwiw, the profiler shows that this program spends nearlly all its time in Point constructor | 12:37 | ||
(method new) | |||
JimmyZ | moritz: the default is a bit slower | 12:38 | |
12:38
kaleem left
12:43
lizmat left
|
|||
moritz | JimmyZ: well, better than not working at all :-) | 12:44 | |
12:46
Alula left,
robinsmidsrod joined
12:47
raydiak joined,
Alula joined,
ingy joined
12:48
hugme joined,
ChanServ sets mode: +v hugme,
ab5tract left
|
|||
JimmyZ | moritz: yeah, I'm tryig profile some codes. | 12:52 | |
12:55
erkan left
|
|||
abraxxa | tadzik: should i send the pull request for rakudobrew? | 12:56 | |
12:57
anaeem1__ joined
|
|||
woolfy | PerlJam: I will do a release when my head clears up, when I can learn again, and I will learn how to program in Perl 6, try to understand all the stuff related to a release... | 12:57 | |
12:57
anaeem1__ left
12:58
erkan joined
|
|||
woolfy | PerlJam: and I am afraid that might not happen in my lifetime anymore... Sorry. | 12:58 | |
13:01
anaeem1 left
|
|||
tadzik | abraxxa: dind't you? :) I didn't have time to look through it properly yet | 13:02 | |
masak hugs woolfy | |||
abraxxa | tadzik: no, wanted to know before if you're ok with my code | ||
woolfy | masak++ | 13:03 | |
moritz also hugs woolfy | |||
masak | woolfy: I wish you get better, but regardless of that, you're a very important help to the Perl 6 community. | 13:04 | |
tadzik | abraxxa: oh, just send it, if I'm not it'll be easier for me to point it out :) | ||
masak | woolfy: thank you. | ||
woolfy: if you want, I could explain closures to you every Thursday. I think I would enjoy that. :P | |||
woolfy | oww... too many hugz and too many nice words, can't handle that. | 13:05 | |
masak | fwiw, Perl 6 is a very nice language to grok closures in for the first time. | ||
moritz | woolfy: no need to handle it, just let it happen :-) | ||
woolfy | No idea what closures are. Even lizmat cannot explain them too me, and she really tried, several times. | ||
masak resists the urge to explain right now | 13:06 | ||
woolfy is happy with that resistance | 13:07 | ||
masak | .u 𝌛 | 13:08 | |
yoleaux | U+1D31B TETRAGRAM FOR RESISTANCE [So] (𝌛) | ||
13:08
dayangkun joined
|
|||
rurban | woolfy: closures are just functions with lexical variables | 13:11 | |
lexical: compile-time private | 13:12 | ||
woolfy | rurban: thanks for the explanation, that's what lizmat told me repeatedly, and still, I don't get it, nor do I know what the significance is. | 13:13 | |
rurban: so leave it at that... | |||
rurban | nothing special. a normal function | ||
masak | rurban: that's what Wikipedia says too. I find it a most unhelpful explanation -- and wrong -- unless you understand closures already. | 13:14 | |
13:14
hekmek left
|
|||
masak | that "are just" part hides all the interesting bits, and the reason you'd want them in the first place. | 13:14 | |
rurban | the big difference was in 1984 when all vars were dynamic | ||
moritz | woolfy: there's no significance, they are just handy sometimes :-) | ||
13:15
hekmek joined
|
|||
woolfy | eekkk... stop that, all go back to developing Perl 6, MoarVM, NQP, Parrot! Grrr! :-) | 13:16 | |
masak | hehe | ||
moritz happily does | |||
masak aussi | |||
moritz | actually, doc writing | ||
masak | actually, sekkrit project | ||
rurban just endless regression tests on various machines | |||
moritz | masak: to be revealed in the advent post on the 24th? :-) | 13:17 | |
when I have a Promise instance, how do I schedule code to be run when the promise is broken? | 13:19 | ||
m: my $p = start { sleep 0.1; say "done 1" }; $p.in(10).then({ say 'done 2'}).result | 13:22 | ||
camelia | rakudo-moar 30edf7: OUTPUT«Invocant requires a type object, but an object instance was passed in method in at src/gen/m-CORE.setting:20897 in block <unit> at /tmp/e9pFhStUFA:1» | ||
masak | moritz: no, I can't promise that. development's been slower than I initially thought. | ||
arnsholt | masak: I find that a common theme with technical Wikipedia articles. Clear and straightforward if you know it already, all but inscrutable if you don't | 13:23 | |
13:23
andreoss joined
|
|||
arnsholt | Heck, some of them are inscrutable even if you do know it. The article on Hidden Markov Models for example, is complete gibberish (unless you're a statistican) | 13:24 | |
andreoss | do cached functions share a cache between threads? | ||
nige | here is a draft advent post - perl6advent.wordpress.com/2014/12/2...83df5bcefa | 13:25 | |
13:25
Rounin joined
|
|||
nige | feedback welcome | 13:25 | |
13:26
kaleem joined
|
|||
andreoss | nige: 404 | 13:27 | |
moritz | nige: you could link to doc.perl6.org/type/Perl6%3A%3AMetam...od_methods when talking about .^methods | 13:28 | |
nige | hmm - ok | ||
moritz: looking | |||
moritz | andreoss: you need a wordpress account (and be logged in) to preview, I believe | ||
andreoss: if you /msg me your email address, I'll send you an invitation | 13:29 | ||
nige: nice post | |||
nige | moritz good suggestion - have added link | 13:30 | |
vendethiel | do we have an extensive advent post about MAIN subroutines? I think I could write something on abusing it, along with subsets, for great good | 13:34 | |
I thought about writing a role-abusing post, but that's nowhere near mainstream reasonable | |||
moritz | vendethiel: perl6advent.wordpress.com/2010/12/0...main-subs/ | 13:35 | |
vendethiel: but that's four years ago; if you want to write about it again (and add some new facets), that's fine | |||
13:36
jack_rabbit left
|
|||
vendethiel starts on writing a gist | 13:38 | ||
I'll see if I can come up with more interesting stuff :) | 13:39 | ||
Ha, but, what's the syntax wordpress accepts? bbcode? | |||
moritz | vendethiel: HTMLish | 13:40 | |
vendethiel | doesn't look great. but hey, I can use <a> and stuff I guess | ||
moritz | vendethiel: basically HTML, but it'll insert <br/> for linebreaks, and <p> boundaries for newlines | ||
vendethiel | alright, thanks. | 13:42 | |
13:43
psch joined
|
|||
psch | hi #perl6 \o | 13:43 | |
andreoss | m: my int $x = 4; my int $y = 2; my int $r = $x / $y ; | 13:50 | |
camelia | rakudo-moar 30edf7: OUTPUT«This type cannot unbox to a native integer in block <unit> at /tmp/57YkYcK2G6:1» | ||
timotimo | yeah, the / operator gives you a Rat | ||
you want div instead | |||
moritz | m: my $p = Promise.new; $p.break; say $p.result | 13:59 | |
camelia | rakudo-moar 30edf7: OUTPUT«False in method result at src/gen/m-CORE.setting:20851 in block <unit> at /tmp/DPnqRJb6YW:1» | ||
moritz | m: my $p = Promise.new; $p.break; say $p.cause | 14:00 | |
camelia | rakudo-moar 30edf7: OUTPUT«FalseError while creating backtrace: Op 'backtrace' needs an exception object in method new at src/gen/m-CORE.setting:12115 in method backtrace at src/gen/m-CORE.setting:12266 in code at src/gen/m-CORE.setting:12276 in method gist at…» | ||
moritz | bug, I'd say? | ||
m: say so Promise | 14:02 | ||
camelia | rakudo-moar 30edf7: OUTPUT«Invocant requires an instance, but a type object was passed in method Bool at src/gen/m-CORE.setting:20855 in sub prefix:<so> at src/gen/m-CORE.setting:4296 in block <unit> at /tmp/DzQ3LHQz2i:1» | ||
moritz | also a bug | ||
m: say Vow | 14:06 | ||
camelia | rakudo-moar 30edf7: OUTPUT«===SORRY!=== Error while compiling /tmp/ahBo0I3hPuUndeclared name: Vow used at line 1» | ||
dalek | c: 8000e26 | moritz++ | util/new-type.p6: Add a util for generating a stub doc for a new type |
14:12 | |
c: 43b8eb8 | moritz++ | lib/Type/Promise.pod: document Promise |
|||
kudo/nom: 413a2d5 | moritz++ | src/core/Promise.pm: Make Promise.Bool a multi otherwise "so Promise" dies |
14:13 | ||
nige | vendethiel I'd like to see another MAIN advent entry - always been partial to a Perl5 modulino - and MAIN is modulinos on steroids | 14:14 | |
www.drdobbs.com/scripts-as-modules/184416165 | 14:15 | ||
for a 'modulino' reference | |||
moritz | also MAIN now supports better usage messages when semantic comments/pod is attached | ||
14:16
abraxxa left
|
|||
nige | indeed | 14:16 | |
moritz | that's something that has been mentioned before, but only in passing | ||
nige | a work colleague uses "Munner" - multiple runner - for lots of devops work - search.cpan.org/~micvu/App-Munner-0.../Munner.pm | 14:18 | |
a mash up of MAIN + Munner + Modulinos could be an interesting advent post idea ... | |||
talking of $work bbl & | 14:19 | ||
colomon ponders | 14:20 | ||
colomon suspects modulinos may not be the best way of doing things in p6 | 14:21 | ||
vendethiel | moritz: do we have an advent post on subsets? | 14:23 | |
colomon | vendethiel: pretty sure there's one of those from the early days | ||
moritz | vendethiel: I'd have to search too (I don't know all the 120+ topics so far by heart :-) | 14:24 | |
vendethiel | yeah, you knew the other one because you wrote it :) | ||
moritz | vendethiel: well, I (co-)wrote at least 20 advent posts so far, I'm pretty sure I don't remember all the topics I wrote about :-) | 14:25 | |
vendethiel | moritz: yes, pod comments is a big part ofi t | 14:26 | |
moritz | vendethiel: day 24 is still up for taking (unless TimToady++ wants to claim it) | 14:28 | |
vendethiel: or a 25th post-advent special :-) | |||
andreoss | how to evaluate a list eagerly, but not wait until calculation is ready? | 14:29 | |
moritz | andreoss: my $promise = start { eager @list }; | 14:30 | |
andreoss: and when you want to wait, say 'await $promise' | |||
andreoss | i.e always evaluate ahead | ||
moritz: it won't work with infinite lists | 14:31 | ||
dalek | kudo/nom: deb1e6d | timotimo++ | src/core/Attribute.pm: a tiny speedup for auto-generated attribute accessors |
||
moritz | andreoss: don't wait for the promise then | ||
andreoss: or you can simply iterate the list, that will evaluate it | 14:32 | ||
timotimo | m: say "an improvement of { 19718.16ms | ||
camelia | rakudo-moar 30edf7: OUTPUT«===SORRY!=== Error while compiling /tmp/oViOY2Qc2JUnable to parse expression in block; couldn't find final '}' at /tmp/oViOY2Qc2J:1------> say "an improvement of { 19718.16⏏ms expecting any of: …» | ||
timotimo | ... | ||
m: say "an improvement of { 18815.48 / 19718.16 } was had in one benchmark." | |||
camelia | rakudo-moar 30edf7: OUTPUT«an improvement of 0.9542209 was had in one benchmark.» | ||
14:32
ecocode joined
|
|||
timotimo | 4.5% is definitely not "nothing". nice. | 14:32 | |
the commit also reduces the amount of scalars generated | 14:33 | ||
to 1/3rd in this benchmark's case | 14:34 | ||
m: say "gc time went down to { 3374.84 / 3733.63 }" | 14:35 | ||
camelia | rakudo-moar 30edf7: OUTPUT«gc time went down to 0.9039032» | ||
14:35
liztormato joined
|
|||
timotimo | interesting | 14:35 | |
liztormato | moritz: vendethiel i'll gladly give up my slot | ||
vendethiel | no no no | ||
liztormato | No? | 14:37 | |
I've already done 3 | |||
14:38
kaleem left
|
|||
masak | arnsholt: "it's easy if you know it" | 14:40 | |
arnsholt: it's a really hard problem to explain something to someone whose background/prior knowledge you don't have a handle on. | 14:41 | ||
arnsholt: nLab is the same, for what it's worth. I can sort of see that what they say makes sense, and hangs together, and consistently uses a vocabulary and a set of techniques -- but it all hangs together in such a way that the only way to know something is to know everything. | 14:42 | ||
arnsholt | Yeah. AKA, teaching is hard | 14:43 | |
mathw | yes, teaching is hard | 14:44 | |
PerlJam | arnsholt: yeah, but nLab is an example of making it *harder* :) | ||
masak | despite this, I like nLab. | 14:45 | |
arnsholt has never heard about nLab | |||
masak | arnsholt: this is a good place to start. ncatlab.org/nlab/show/nPOV | 14:48 | |
arnsholt | Right. Looks interesting | 14:49 | |
I think. Modulo not knowing anything about category theory, or much math beyond basic calculus \= | 14:50 | ||
=) | |||
masak | category theory is basically a useful mapping language between disciplines of mathematics. | 14:51 | |
it's useful to computer scientists exactly to the extent computer science is mathematics. i.e. some branches of it more than others. | 14:52 | ||
andreoss | moritz: it defenetly evaluates iterations one by one paste.fedoraproject.org/161315/14190007/ | ||
mathw | I've never managed to get my head around category theory | 14:53 | |
this was a slight impediment while attempting to get a PhD in a language research group | |||
andreoss | any time it starts a promise a dot printed, new line will be printed when promise is accessed | ||
masak | maybe I should hold a category theory seminar on IRC. | ||
mathw | I don't really think I need to know it anymore | 14:54 | |
I'm not designing type theories | |||
Woodi | woolfy: probably easiest way to start programming (or needeing it) is to become sysadmin on some *nix system :) eg. agregate some common things into script | ||
PerlJam | Woodi: I dunno ... there are many Perl people that starting programming for entirely different reasons and I'd say "become a sysadmin" would have been way too high a bar for many of them. | 14:58 | |
15:00
ecocode left
15:01
isBEKaml joined,
rindolf left
|
|||
andreoss | i don't know what this type of evaluation is called, "lazy" is not the right term i guess. | 15:01 | |
"lookahead evaluation"". is it a thing? | 15:02 | ||
vendethiel | not sure | ||
Woodi | PerlJam: I think administration is simpler then programming. and I can't agree that sysadmin job is way to high for anyone :) but I understand it in "traditional" Unix/BSD way - rc scripts or /etc/init.d, /etc thingies, /var thingies.. | ||
isBEKaml | Woodi: that's because you know where to look and what those stuff entails. Can't generalize/extrapolate that for the rest... | 15:04 | |
15:06
liztormato left
15:09
erkan left
|
|||
Woodi | isBEKaml: key thing is _need_ to do something or wanting it. sysadmin job is simpler then netadmin job which is simpler to expert programming and so on... | 15:09 | |
masak doesn't think woolfy needs to be a sysadmin ;) | |||
hoelzro | morning #perl6 | 15:10 | |
15:11
atroxaper left,
kaare_ left
15:12
erkan joined,
erkan left,
erkan joined
|
|||
PerlJam | Woodi: Any, need is a prerequisite; but there are many more needs than just those relating to computing fields. Look at the human genome project, the need was for sequencing the genome; programming just became a way to get computers to tell you stuff about your lab results. | 15:13 | |
er, s/Any/Aye/ | |||
mathw | the way to start programming is to have a problem you can solve by writing a program | 15:14 | |
OR to just be really interested | |||
PerlJam | people come to programming from many fields. Some of the ones I've bumped into came from "library science" (I'm still not quite sure what that is :), publishing, astronomy, bioinformatics, GIS, and nursing. None of those people would have ever learned to program if they had gone through "sysadmin" to get there :) | 15:16 | |
psch aughs at PerlJam tripping his balanced parens parser | 15:17 | ||
mathw | library science is about the remarkably difficult task of classifying, indexing and finding published information | ||
PerlJam | heck, I started programming "seriously" because I was playing with AutoCAD in the mid 1980s and wanted it to automatically tally materials costs for the things I designed. | ||
mathw | my boyfriend does a bit of coding just because he needs AutoCAD to do stuff sometimes | 15:18 | |
although his last thing was some kind of Excel VBA atrocity | |||
I decided not to enquire too closely | |||
don't want to risk actually having to see the code | |||
PerlJam | mathw: where is the scientific method employed in library science? | 15:19 | |
15:19
andreoss left
|
|||
jnthn is squeemish enough about having to see VB, let alone VBA :) | 15:19 | ||
isBEKaml | PerlJam: autoLISP? :-) | ||
PerlJam | isBEKaml: yep :) | 15:20 | |
isBEKaml | does AutoCAD still come with that LISP variant these days? | ||
PerlJam | I dunno I haven't used AutoCAD in years | ||
vendethiel | moritz: how do you write a piece of code in wordpress-html? | ||
isBEKaml | vendethiel: dunno about WP. Why not just use <pre></pre> for preformatted tags? | 15:21 | |
vendethiel | well, because you don't get syntax hl | ||
isBEKaml | ah | ||
mathw | PerlJam: no idea. I didn't say it was well-named. | 15:22 | |
15:22
davido__ left
|
|||
psch | vendethiel: WP has [code] and <code>, the former can take a language="" attribute and adds a horizontal scrollbar. beware html entities with both of those | 15:24 | |
15:24
davido__ joined
|
|||
dylanwh | My wife does cad -- yes, autolisp still exists. | 15:25 | |
PerlJam | someone had some excellent syntax highlighting in one of the earlier advent entries this year. Find the entry and ask how he/she did it. :) | ||
dylanwh | "every other language/framework they've added is in some sort of deprecation cycle" | ||
15:26
FROGGS left
|
|||
rurban | Many people came from AutoLISP | 15:26 | |
dylanwh | I've oftne used autolisp as a counter-point when people say elisp is horrible. Although I've only recently used elisp, I once had to make autolisp speak to a perl webapp and Lotus Notes | 15:28 | |
moritz | vendethiel: I personally just write pod, and then use pod2html | ||
no syntax hilighting, but that's OK, IMHO | |||
dylanwh | (for lotus notes, I implemented a bad 1-lisp so I didn't have to write business login in Lotus BASIC) | ||
hoelzro | I was bringing some old (2+ years) code up to speed, and I noticed that Str.encode returns a specific type depending on the encoding (ex. utf8) | 15:29 | |
I had a method declared as 'returns Buf', but apparently a utf8 isn't a Buf, so it always failed; what would be the proper returns declaration to deal with the results of a Str.encode | 15:30 | ||
(without getting as specific as utf8, that is) | |||
moritz | m: say utf8 ~~ Blob | ||
camelia | rakudo-moar deb1e6: OUTPUT«True» | ||
moritz | hoelzro: Blob | ||
hoelzro | ah ha | 15:31 | |
thanks moritz | |||
moritz | m: say Buf ~~ Blob | ||
camelia | rakudo-moar deb1e6: OUTPUT«True» | ||
15:31
treehug88 joined
|
|||
hoelzro | so utf8 isa Blob, and Blob does Buf? | 15:31 | |
Woodi | hey, thes day "sysadmin job" is just doing stuff on your laptop :) and I still think that way is very simple way to some need for programming. never say that it is _only_ way, just good. | 15:33 | |
dalek | volaj: fc4fdf6 | (Matthew Walton)++ | lib/NativeCall.pm6: Detect libnames with .so.<.digit>$ and use them unchanged. This allows things like "is native('libncurses.so.5')" which would previously attempt to load libncurses.so.5.so. |
||
volaj: 64b11de | (Matthew Walton)++ | lib/NativeCall.pm6: Extend recognition of libraries with .so.<digit>+ to .so(.<digit>+)+ This allows calling libraries named like libfoo.so.1.2.2 |
|||
volaj: a0e685f | jnthn++ | lib/NativeCall.pm6: Merge pull request #53 from mathw/master Detect libnames with .so.<.digit>$ and use them unchanged. |
|||
jnthn | hoelzro: No, Buf ~~ Blob. Buf is a mutable Blob, at least by spec. | 15:34 | |
hoelzro | ahhhh | ||
jnthn | hoelzro: utf8 is a Blob 'cus if you can modify it, well, you can make it not be utf8 any more... :) | ||
hoelzro always forgets the order of the arguments for ~~ | |||
it's RHS.ACCEPTS(LHS), right? | |||
jnthn | Right | ||
Yeah, catches me out occasionally do, though the design makes sense. | 15:35 | ||
s/do/too/ | |||
hoelzro | $str ~~ $regex is a good mnemonic for me | ||
Woodi | actually, is .so.x(.\d)+$ a good thing ? | ||
will work, no doubt :) | 15:37 | ||
geekosaur | will work until you hit something like old openssl (libssl.so.0.9.8f) | 15:45 | |
Ugator | maybe only expand to .so if there is no .so? | 15:47 | |
15:48
mvuets left
15:50
sqirrel joined
|
|||
vendethiel | moritz: we have a very old post (2010) about smart matching which shows subset but not subset itself | 15:51 | |
mathw | \o/ | 15:53 | |
Woodi: feel free to provide patches | |||
This fixes my requirements for the immediate future | 15:54 | ||
but I'm not convinced it's the right fix for all of the future | |||
vendethiel | mathw: I tried writing some tests for it, but it relies a lot on global $*ENV state | ||
moritz | vendethiel: then go for it | 15:55 | |
vendethiel | moritz: I'm writing a MAIN advent right now :) | 15:56 | |
moritz | vendethiel: do allocate a day in the 'perl6/mu' repo in file misc/perl6advent-2014/schedule | 15:59 | |
vendethiel | moritz: only if I'm satisfied with what I wrote | 16:00 | |
16:01
doublelel left
|
|||
moritz | doc.perl6.org/type/Promise # feedback very welcome | 16:01 | |
vendethiel | "my Int $a" <- typed variable? type-checked variable? | 16:06 | |
moritz | typed variable | ||
vendethiel | is .IO.e still the prefered way to check if a file exists? I havn't been following up most of the latest IO refactorings... | 16:09 | |
.oO( if I take lizmat's post place on it, maybe I'll never know ) |
|||
jnthn | vendethiel: I don't recall that changing, though I've only been following so closely too | 16:10 | |
mathw | I'm sure I saw that in someone's code recently | 16:13 | |
moritz | vendethiel: yes, .IO.e is fine | ||
mathw | and it certainly works :) | ||
16:13
liztormato joined
|
|||
liztormato | vendethiel: IO.e will continue to work | 16:14 | |
vendethiel | amazing :) | ||
16:14
ecocode` joined
|
|||
liztormato | Refactoring is mostly under the hood | 16:14 | |
vendethiel | Do we have an advent calendar about POD-ing a subroutine parameters and stuff? | 16:15 | |
okay, good to know | |||
PerlJam | vendethiel: We've got perl6advent.wordpress.com/2011/12/1...g-perl-6/, but things have changed since then. | 16:16 | |
moritz | liztormato: if you have a bit of time, a review of doc.perl6.org/type/Promise would be great | 16:17 | |
hoelzro | PerlJam: did I forget to update that post? | ||
16:18
doublelel joined
|
|||
liztormato | I was just looking at it | 16:18 | |
PerlJam | hoelzro: not sure actually | ||
16:18
isBEKaml left
|
|||
moritz | liztormato: I guess I should be more patient then :-) | 16:18 | |
hoelzro looks | |||
I did | |||
liztormato | moritz: I understand method new is inherited. | 16:19 | |
But maybe it deserves a manual entry as well | |||
At least stating the absence of named parameters | |||
jnthn | moritz: For .anyof, a cute example is Promise.anyof($something, Promise.in(2)); | 16:20 | |
16:20
mr-foobar joined
|
|||
moritz | liztormato: he, I also considered that :-) | 16:20 | |
jnthn: will add, thanks | |||
liztormato | Now you get the impression you cant or shouldnt Promise.new | ||
16:21
FROGGS joined
|
|||
moritz | liztormato: maybe just an example in the synopsis at the beginning would help | 16:21 | |
liztormato | Yup. | ||
16:22
anaeem1_ joined
|
|||
[Coke] | once I install a fresh perl6, I have to do a panda rebootstrap from the panda source dir? | 16:22 | |
moritz | [Coke]: yes | 16:23 | |
[Coke]: or you can use rakudobrew to do it all for you | |||
jnthn | moritz: It's worth maybe being more clear somehow that Promise.in, start, anyof, and allof are Promise "factories" that keep/break the Promise, and it's only ones made by Promise.new where you grab the vow and keep/break them yourself. | 16:24 | |
[Coke] | moritz: note to self. never. ever. ever. do this at work. | 16:25 | |
because I do it every six weeks or so, long enough for me to forget that it just dies.] | |||
moritz | [Coke]: and I thought it opened a porn site while your boss was watching, or something like that | ||
:-) | |||
jnthn: good point | 16:26 | ||
[Coke] | moritz: normal path: upgrade perl6, reinstall. realize I've broken every installed module. run panda. panda is also broken. go to panda source, rebuild... dies halfway through because I forgot to set the http_proxy; rerun; dies near the end because something doesn't support http_proxy; switch to non-work wifi network, realize that at some point, the rebootstrap failed, and it didn't reinstall all my modules. | 16:28 | |
moritz | [Coke]: :( | ||
[Coke] | so, nothing quite as bad as your scenario, but very frustrating, and I do it constantly. then I remember why I waited so long to do the update! ;) | ||
ok, I think I am recovered now. :P | 16:29 | ||
16:36
lizmat joined
|
|||
dalek | c: 347e492 | moritz++ | lib/Type/Promise.pod: [Promise] incorporate feedback from jnthn++ and lizmat++ * explain that you can only keep and break promises yourself if you created them with .new * timeout example for Promise.anyof |
16:36 | |
lizmat is finally back after a ~4 hour upgrade to Yosemite | 16:37 | ||
dalek | c: 79a7a83 | moritz++ | lib/Type/Promise.pod: [Promise] Make it clear that method vow returns a Vow |
16:38 | |
16:39
liztormato left
|
|||
moritz | gist.github.com/moritz/b3819df0106dd7ff9b24 # draf for day 23 | 16:39 | |
... now formatted | 16:40 | ||
16:40
kaare_ joined
|
|||
moritz | *draft | 16:40 | |
16:41
sqirrel left
|
|||
lumimies | moritz: s/time address/time to address/ | 16:44 | |
moritz | lumimies: thanks | 16:48 | |
fixed | |||
vendethiel | seems like S26 link is broken | 16:50 | |
moritz | eeks, that's not generated by the usual synopsis build process :( | 16:51 | |
moritz tries perl6-m --doc=HTML S26-documentation.pod > S26.html | 16:52 | ||
itz wonders why they bothered with 0x213B | 16:54 | ||
moritz | design.perl6.org/S26.html restored | ||
vendethiel | moritz++ | ||
dalek | ecs: d8509e2 | moritz++ | S (2 files): Update perlcabal.org/syn/ links to design.perl6.org |
16:55 | |
16:55
atroxaper joined
|
|||
dalek | href="https://perl6.org:">perl6.org: fd08d90 | moritz++ | source/ (30 files): Update perlcabal.org/syn/ links to design.perl6.org |
16:57 | |
: d1f7714 | moritz++ | / (11 files): Update perlcabal.org/syn/ links to design.perl6.org |
|||
16:58
doublelel left
|
|||
moritz | lumimies: did you like the draft? | 17:01 | |
vendethiel | moritz: where is in S26 the part about adding comments to parameters? | 17:03 | |
hoelzro | vendethiel: look for method cast in S26 | 17:06 | |
method cast(#|{ A spell } Spell $s) | |||
you could also put the params on separate lines interspersed by #|/#= | |||
vendethiel | hoelzro++ #was looking for "argument" or "parameter" | ||
hoelzro | vendethiel: I just happen to know that document fairly well =P | ||
lumimies | moritz: Yeah, especially the web scale :) | 17:07 | |
hoelzro | vendethiel: #|/#= should work for any declaration | 17:08 | |
17:08
fhelmberger left
17:10
telex left
|
|||
vendethiel | alright | 17:12 | |
17:12
telex joined
|
|||
vendethiel | hoelzro: yeah, I know you made major changes to it =) | 17:14 | |
17:20
dayangkun left
|
|||
moritz | lumimies: :-) great | 17:23 | |
woolfy | masak, Woodi: I have been "sort of a sysadmin" for quite some years, and used Perl (4 & 5) for that... Just the capability of learning new stuff and remembering stuff is a problem. Don't get a severe burnout, it will change your life. | 17:37 | |
gtodd | ++ on masak not getting burned out | 17:39 | |
well ++ everyone not getting burned out | |||
17:42
nige left
|
|||
TimToady has been planning to do the 24th | 17:46 | ||
17:47
erkan left
17:48
\Grrr joined,
\Grrr left
17:49
erkan joined
|
|||
dalek | : c576b49 | (Carl Masak)++ | misc/perl6advent-2014/schedule: book TimToady++ on 24th |
17:50 | |
17:50
erkan left,
erkan joined
|
|||
masak | hey, I want it to happen ;) | 17:50 | |
17:51
rurban left
|
|||
flussence | m: await Promise.in(1).then({ fail }) # um, what? :) | 17:55 | |
camelia | rakudo-moar deb1e6: OUTPUT«===SORRY!===Could not find symbol '&Return'» | ||
FROGGS | flussence: `fail` tries to return from the surrounding routine | 17:56 | |
therefore it tries to locate a Return symbol | |||
m: { fail } | |||
camelia | rakudo-moar deb1e6: OUTPUT«Unhandled exception:  at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:13845 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29)…» | ||
FROGGS | m: my $foo = -> { fail }; $foo() | 17:57 | |
camelia | rakudo-moar deb1e6: OUTPUT«Unhandled exception:  at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:13845 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29)…» | ||
moritz | m: await Promise.in(1).then(sub { fail }) | ||
camelia | rakudo-moar deb1e6: OUTPUT«===SORRY!===Too many positionals passed; expected 0 arguments but got 1» | ||
FROGGS | m: await Promise.in(1).then(sub ($) { fail }) | ||
camelia | rakudo-moar deb1e6: OUTPUT«Unhandled exception:  at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:13845 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink:29)…» | ||
FROGGS | m: await Promise.in(1).then({ .break }) | 17:58 | |
camelia | rakudo-moar deb1e6: OUTPUT«===SORRY!===Access denied to keep/break this Promise; already vowed» | ||
FROGGS | eww :o) | ||
moritz | FROGGS: works as designed | 17:59 | |
jnthn | you break it in then by throwing :) | 18:00 | |
flussence | after reading the code, I'm guessing the first error is referring to X::ControlFlow::Return... | ||
it's a LTA error message (imho), and I think I've seen it happen before around faily code | 18:02 | ||
jnthn | I'm not really sure what the semantics of a Promise.start evaluating to a Failure should be | ||
dalek | : c19d955 | lizmat++ | misc/perl6advent-2014/schedule: Free up day #22 for ++vendethiel |
18:03 | |
jnthn | Does it break the Promise, or does it keep the Promise but the result is a Failure? | ||
The latter keeps it non-fatal | |||
lizmat | vendethiel: there is no escape now | ||
:-) | |||
18:03
vendethiel left
|
|||
flussence | I'm not really sure what I'm *doing*, but I bet other people are gonna try the same thing somewhere down the line :) | 18:03 | |
TimToady | lizmat: oops, he escaped | 18:04 | |
lizmat | oh dear :-( | ||
flussence | anyway I thought the whole point of Failure is that it's a non-fatal, lazy exception that you can pass around... | ||
second seems right to me | |||
FROGGS | moritz: yes, I thought so... | 18:05 | |
the 'eww' was more like: 'I should finally take a look at Promises' | |||
jnthn | flussence: That's my gut feeling too. | ||
TimToady | is it trying to pass it through a type constraint that doesn't allow for Failure? | 18:06 | |
jnthn | Dunno | 18:09 | |
m: say Promise.start(sub ($) { fail "foo" }).result.perl | 18:10 | ||
camelia | rakudo-moar deb1e6: OUTPUT«===SORRY!===Too few positionals passed; expected 1 argument but got 0» | ||
jnthn | huh... | ||
m: say Promise.start(sub ($) { fail "foo" }) | 18:11 | ||
camelia | rakudo-moar deb1e6: OUTPUT«Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 16, uncaught_handler => Callable), status => PromiseStatus::Broken)» | ||
jnthn will have to take a closer look... | |||
Though I should probably be packing at the moment... :) | 18:12 | ||
tony-o | anyone using perl6+jvm on freebsd? | 18:13 | |
18:15
vendethiel joined
18:19
grettis joined
18:23
spider-mario joined,
eiro left
18:24
eiro joined
18:25
rindolf joined
18:28
tgt joined
18:29
tgt left
|
|||
lizmat | jnthn: I'll have a look at that Promise issue | 18:35 | |
go pack! have fun! don't get (too) sick! | |||
18:37
Mso150 joined
18:38
psch left
18:56
anaeem1_ left
|
|||
moritz | method send(Channel:D: \item) { | 18:58 | |
X::Channel::SendOnClosed.new.throw if $!closed; | |||
nqp::push($!queue, nqp::decont(item)); | |||
} | |||
isn't that prone to race conditions? | |||
vendethiel | probably is | 18:59 | |
flussence | today I fixed a failing test in my code, but I still don't know *why* this works, and that's really bothering me... github.com/flussence/Test-ClientSe...257cea759b | 19:01 | |
lizmat | moritz: hopefully the locking happens in the nqp::push on the $!queue ? | 19:03 | |
alternately, nqp::push in inherently lock free ? | |||
jnthn | lizmat: It's not that the op is | 19:04 | |
moritz | lizmat: yes, but somebody could close the queue between the $!closed check and nqp::push, no? | ||
jnthn | lizmat: It's that $!queue has the REPR BlockingConcQueue | ||
lizmat | moritz: in which case you would get a different (or no) error | ||
jnthn | moritz: Yes, there's a race there | ||
19:05
d4l3k_ joined
|
|||
jnthn | And you'd get no error, just a lost value. | 19:05 | |
bartolin | tony-o: I'm running daily builds+spectests of rakudo.jvm on freebsd. but I don't do anything else with those. | ||
jnthn | It's a little tricky to fix in combination with the queue providing backpreassure, which it's going to need to. | 19:06 | |
moritz | I'll open an issue | ||
19:06
kaare__ joined
19:07
__rnddim__ joined,
petercom1and joined,
shlomif joined,
BooK_ joined,
hekmekk joined,
muraiki_ joined
19:08
orevdiabl joined,
vike1 joined,
eviltwin_b joined,
rindolf left,
kaare_ left,
dalek left,
lue left,
BooK left,
petercommand left,
hekmek left,
eviltwin_b is now known as geekosaur,
prammer_ joined,
SHODAN joined
19:09
shlomif is now known as rindolf,
d4l3k_ is now known as dalek,
ChanServ sets mode: +v dalek
|
|||
tony-o | bartolin: i'm getting an error trying to build tag 2014.06 on freebsd with make: don't know how to make j-all | 19:09 | |
configures fine, make fails with that error, any ideas? | 19:10 | ||
moritz | tony-o: did you configure with --backends=jvm? | ||
tony-o | yes | ||
19:10
muraiki_ is now known as muraiki
|
|||
tony-o | i built with --gen-nqp --gen-parrot --gen-moar --backends=moar,jvm,parrot | 19:11 | |
i haven't tried building with *just* jvm | |||
moritz | tony-o: does 'make m-all' and 'make p-all' work? | ||
tony-o | i'll give those a shot | ||
bartolin | tony-o: hmm, my daily builds started in october only. | ||
tony-o: I'd try that first (only building with --backends=jvm) | 19:12 | ||
tony-o | bartolin: maybe i'll bump it up to october if m-all and p-all works | ||
moritz | tony-o: but why the interest in such an old version? | ||
tony-o | moritz: generating module graphs and all of that jazz | ||
moritz | tony-o: btw --backends=all exists | ||
tony-o | ty | 19:13 | |
bartolin | tony-o: my daily builds are quite stable | ||
tony-o | bartolin: did you use pkg or ports to install jdk ? | 19:14 | |
bartolin | tony-o: mom, have to look that up | ||
tony-o | mom? | ||
moritz | "moment" | 19:15 | |
tony-o | moritz: gonna have to try it when i get home, accidentally disabled ssh | 19:16 | |
moritz | tony-o: :-) | ||
tony-o: the other day I ran an "ifdown br0" to disable the bridge interface, not knowing that it acted as the primary interface of the host | 19:17 | ||
tony-o | i know FROGGS has a matrix but i'm building out a huge array of OSes + perl6s to test all modules and create some graphs | ||
bartolin | tony-o: obiously I installed jdk with pkg ("pkg install openjdk") | ||
tony-o | moritz: lol, i've done that before too :) | ||
moritz | tony-o: and then had to do a trip to the data center to recover | 19:18 | |
tony-o | mine was a ticket cause the server was in quebec | ||
19:18
erkan left
|
|||
lizmat | dinner& | 19:18 | |
tony-o | moritz: i'm working on something like this (this is a mockup) darcsys.com/smoke/module_build.html | 19:19 | |
moritz | tony-o: nice | 19:20 | |
tony-o | like npm for perl6 | ||
but with all the cool stuff metacpan has | |||
19:21
erkan joined,
erkan left,
erkan joined
19:24
FROGGS left
|
|||
bartolin | moritz: if I fiddle with network or firewall configuration I sometimes schedule a (network-restart|firewall-reset|reboot) via at or cron -- say half an hour later. maybe the biggest problem is to re-schedule it if everything works fine | 19:24 | |
El_Che | bartolin, moritz : I've found that at does a good job for that kind of thing | 19:27 | |
at +5m restore_something | |||
moritz | El_Che: yes, I think that's a good idea | ||
El_Che | of course, if you have console access, it's not as important | 19:28 | |
19:28
atroxaper left
|
|||
moritz | though on the virtual systems, I can just use virt-manager to open a terminal | 19:28 | |
El_Che | there you go :) | ||
TimToady | oh for the good old days when a computer was just a computer... :) | 19:29 | |
moritz | jnthn, lizmat: is Channel.poll the non-blocking version of Channel.receive? | ||
jnthn | moritz: Yes; returns Nil if there's nothing to receive, iirc | 19:30 | |
moritz | jnthn: that seems to match my reading of the source code. | ||
itz | where does readdir live? if it has a home | 19:34 | |
moritz | itz: there's a dir() function | ||
m: say dir() | |||
camelia | rakudo-moar deb1e6: OUTPUT«"/home/camelia/rakudo-inst-2".IO "/home/camelia/ugexe-was-here".IO "/home/camelia/evalbot".IO "/home/camelia/test".IO "/home/camelia/.viminfo".IO "/home/camelia/rakudo-inst-1".IO "/home/camelia/.bashrc".IO "/home/camelia/.ssh".IO "/home/camelia/std".IO "/h…» | ||
moritz | those are IO::Path objects | ||
itz | ah ty | 19:35 | |
19:38
anaeem1 joined
19:45
rurban joined
19:48
FROGGS joined
|
|||
FROGGS | tony-o: what if you'd use the testers.perl6.org reports from its database? | 19:51 | |
19:51
hekmekk is now known as hekmek
|
|||
bartolin | tony-o: I was able to build rakudo.jvm 2014.06 on FreeBSD 10.1 (using OpenJDK 1.7.0_71 installed via pkg). my build command was 'perl Configure.pl --gen-moar --backends=jvm; make' | 19:54 | |
FROGGS | tony-o: you can then still generate reports for all compilers and backends using panda | 19:55 | |
hoelzro | does anyone know off hand where the "$^VAR" behavior is documented, particularly the part about $^ being ordered, and that order determining which parameter they represent? | 19:57 | |
bartolin | FROGGS: could you point me to some instructions how to provide data for testers.perl6.org? | ||
FROGGS | bartolin: PANDA_SUBMIT_TESTREPORTS=1 panda install Foo | 19:58 | |
and | 19:59 | ||
bartolin: PANDA_SUBMIT_TESTREPORTS=1 panda smoke | |||
though, smoke will just attempt to install everything | |||
it is not what one would expect by a smoke option | 20:00 | ||
bartolin | FROGGS: great. I hope I find some time to extend my daily test runs to smoke panda as well | 20:01 | |
itz | everything in the ecosystem? | ||
FROGGS | that'd be awesome :o) | ||
itz: yes | |||
raydiak | hoelzro: design.perl6.org/S06.html#Placeholder_variables | 20:02 | |
hoelzro | thanks raydiak | ||
raydiak | yw | ||
20:02
anaeem1 left
|
|||
raydiak | oh nice...design.perl6.org is more pleasant to read at than perlcabal.org/syn | 20:03 | |
moritz | raydiak: you mean the URL? or the layout? | ||
raydiak | s/ at/ | 20:04 | |
FROGGS | [Coke]: we've got a problem: github.com/coke/rakudo-star-daily/...figure.log | ||
raydiak | moritz: the url | ||
moritz: does it want a new layout? | |||
20:04
cognominal joined
|
|||
moritz | raydiak: it wants, yes | 20:07 | |
20:07
darutoko- left
|
|||
moritz | raydiak: something more p6ish :-) | 20:07 | |
El_Che | "p6ish" :) | 20:08 | |
raydiak | moritz: I can let that percolate in my head...feel free to spam out any more specific ideas you may have and I'll throw them in the pressure cooker too :) | 20:10 | |
El_Che | are there any p6 books planned now it's closer to christmas? | ||
the O'reilly one would be somewhat outdated :) | |||
moritz | raydiak: well, it has much more text content than www.perl6.org, so it shouldn't be as generous with the margins | 20:11 | |
raydiak | moritz: indeed, the different structure of it will make it turn out differently than docs in several ways (esp the nav too) | ||
moritz | raydiak: and that also makes it more important that the body text remains black on white | ||
raydiak | sure | 20:12 | |
hoelzro | moritz: re: your channel race condition ticket, I found similar behavior in IO.pm | ||
raydiak | oh, anyone else who has input to give is welcome too, of course...just don't tell me to write the whole thing as a webgl js app or something :) | ||
hoelzro | I was hoping to clean some of that up, but $work&$life | 20:13 | |
moritz | raydiak: being able to read it with JS disabled is also a hard requirement from me :-) | ||
raydiak | moritz: we're on the same page there :) | ||
raydiak has never in his past life as a professional software engineer and web developer, broken down and used js for things like layout or text rendering or other such fragile nonsense | 20:15 | ||
moritz | raydiak++ | ||
dalek | rl6-roast-data: 00088f9 | coke++ | / (5 files): today (automated commit) |
20:16 | |
c: f7ed0e0 | moritz++ | lib/Type/Channel.pod: document class Channel |
20:19 | ||
raydiak | moritz: no promises on exact timing, things have been a bit rough here for me lately, and the impending holidays...but things like this which are fairly easy for me and make P6 look better generally go to the top of my list instead of the bottom :) | 20:20 | |
20:20
rindolf left,
raiph joined
|
|||
moritz | raydiak: that's great, and no pressure :-) | 20:20 | |
raydiak: the mechanism that generates the synopsis HTML is a bit arcane, but I'll do my best in assisting with patching it | 20:21 | ||
synopsebot: give me link to S02, will you? | 20:22 | ||
or S02/Literals/ | |||
FROGGS | S02:1 | ||
synopsebot | Link: perlcabal.org/syn/S02.html#line_1 | ||
moritz | who runs it? and can change the link to design.perl6.org? | ||
FROGGS | S02#Literals | ||
tadzik does | |||
dalek | p/parrot-rpa: 25963c3 | rurban++ | src/vm/parrot/ (2 files): nqp.ops: fix parrot compiler warnings, enable --debugging BUFFER_IS_EMPTY was undeclared pmc_sub.h is from parrot fix const casts for comp_sc, nqp_nfa_run, IO_VTABLE* fix wrong free(fates) => mem_sys_free(fates) |
||
moritz | oh, it's on github | 20:23 | |
then I can too :-) | |||
github.com/tadzik/synopsebot/pull/4 opened | 20:25 | ||
20:26
Isp-sec joined
|
|||
raydiak | moritz: thanks, that'll be helpful to stop me from nerd-sniping myself over a tangled knot of sed or some other creativity-sapping obstacle | 20:27 | |
raydiak notices perl6now.com | |||
whats that about? | |||
moritz | no idea, but it looks dangerous :-) | 20:28 | |
20:28
atroxaper joined
|
|||
moritz | or like a mis-configured webserver | 20:29 | |
raydiak | moritz: doesn't it? anyway, while my head is in this space, do you think the fixed-width on the docs site is a mistake? | ||
moritz | raydiak: fixed width? what do you mean? | 20:30 | |
raydiak | moritz: the content area is fixed to like 800 wide or so | ||
moritz | raydiak: doesn't look like it for me | 20:31 | |
raydiak: if I resize my browser window, it follows | |||
raydiak: we're talking about doc.perl6.org, rightß | |||
raydiak | moritz: not if you go wide enough | ||
moritz: yes | |||
moritz | s/ß/?/ | ||
ah, a max-width | |||
raydiak | yep | 20:32 | |
moritz | that seems reasonable to me | ||
because if lines becomes too long, it's hard to find the correct line | |||
raydiak | it's something I do when I'm worried about the spacey broken look of small text in big wide boxes | ||
moritz | when the eye scans from the right end of the line to left of the next line, and loses the correct vertical position | ||
raydiak | ah, that's what it is...some of these things I understand in a little more instinctual way...just look at it and feel "ugh" | 20:33 | |
anyway, I thought maybe that was part of what you were saying you don't want for design.perl6.org, which makes sense because there aren't any short parts to speak of :) | 20:34 | ||
but thought I'd ask if it's offensive on the docs site too while I'm at it | |||
moritz | raydiak: no, what I meant is perl6.org/ | 20:35 | |
20:35
atroxaper left
|
|||
moritz | raydiak: that one has lots of whitespace everywhere, and probably too much for the design notes | 20:35 | |
20:35
mvuets joined
|
|||
moritz | (though maybe I'm misjudging that) | 20:35 | |
raydiak | moritz: oic.../agree | ||
nah really it's good for what perl6.org is (a collection of small parts) but I totally agree that it wouldn't be quite right for the design docs | 20:37 | ||
moritz | raydiak: then we're in violent agreement :-) | ||
moritz wonders why the new types, Channel and Promise, won't show up in the search on doc.perl6.org | 20:39 | ||
raydiak has noticed at different times many things seem to be missed by the search | |||
esp keywords like the loops and so forth | 20:40 | ||
moritz: I see Promise and Channel, think you have a cache issue | |||
20:41
hekmek left
|
|||
moritz | they seem to be misisn in js/search.js | 20:41 | |
*missing | |||
the good part is that it means I won't have to debug js | |||
the bad part is that it means I'll have to debug htmlify.p6 :/ | |||
raydiak | moritz: you mean for the keywords? I do see channel and promise in the search here | 20:43 | |
moritz | raydiak: I mean in the search box in the top right (needs JS) | 20:44 | |
raydiak | yes, the search box does show Promise and Channel for me | ||
so either you have an old cached version loaded and it's not broken, or it is broken and I'm the one with the old cached version | 20:45 | ||
moritz | moritz@pat:~/p6/doc>grep Channel html/js/search.js | 20:46 | |
{ label: "Type: Channel", value: "Channel", url: "/type/Channel" }, | |||
I could have sworn it wasn't there just a moment ago | |||
oh well | |||
tony-o | FROGGS: is testers.perl6.org down? | ||
moritz | raydiak: a ctrl + shift + r fixed it, thanks | 20:47 | |
FROGGS | tony-o: not for me | ||
raydiak | moritz: yw...sometimes even that doesn't fix it for me, and I have to directly navigate to the js file and reload that | ||
moritz | raydiak: I think you just saved a ton of fruitless debugging time :-) | 20:48 | |
jnthn | FROGGS, tony-o: Works for me here too | ||
FROGGS | tony-o: though very slow, because it still does too much dynamicly | ||
raydiak | \o/ /me did something genuinely useful today :) | ||
jnthn | FROGGS: testers.perl6.org/authors is "not found", though | ||
tony-o | there we go | ||
moritz | raydiak: one thing you could try it open a private tab/window (ctrl+shift+p) and load the site there | ||
FROGGS | jnthn: that's NYI :D | ||
jnthn | Oh, then I can assume I'm an awesome author until it is :P | 20:49 | |
tony-o | lol | ||
FROGGS | *g* | ||
I bet | |||
moritz | jnthn, lizmat: doc.perl6.org/type/Channel another thing to review when you have free time | ||
raydiak | moritz: oh nice one, never thought to use that for much besides multiple simultaneous logins to the same site | ||
moritz | raydiak: many people aren't even aware of the multiple logins use case | 20:50 | |
jnthn | moritz: "...a thread-safe queue that helps you to a series of objects..." | 20:51 | |
I that's missing a verb... :) | |||
moritz++ # working on concurrency docs | 20:52 | ||
raydiak | moritz: it blows peoples minds when I show them and they realize how many accounts they can have logged in to farmville at the same time :P | ||
dalek | c: 60a9e31 | moritz++ | lib/Type/Channel.pod: Channel: missing verb, jnthn++ |
||
moritz | raydiak: :-) | ||
raydiak | afk for a while...thanks for the chat moritz, makes my day a little better when I connect with a human being for a moment :) | 20:54 | |
moritz | raydiak: have a fun afk time :-) | 20:55 | |
[Coke] | FROGGS: that's from september 26th. | 20:58 | |
there is still a perl6 eval server running on host07 | 20:59 | ||
er, host07 | |||
ER HOST08! | 21:00 | ||
FROGGS | ohh, my bad | ||
[Coke] | FROGGS: looks like I dropped that on the floor when I stopped running things on host08. | 21:01 | |
I will see about getting that running again on hack. | |||
21:14
azriel joined
21:21
Sqirrel joined
21:31
ptc_p61 joined
21:33
ptc_p6 left,
atroxaper joined
|
|||
masak | 'night, #perl6 | 21:36 | |
21:37
atroxaper left
21:48
go|dfish left
21:50
go|dfish joined
|
|||
moritz | support.ntp.org/bin/view/Main/Secur...tl_putdata I'm glad I haven't installed ntp on the new machines yet | 21:57 | |
22:01
__rnddim__ is now known as lue
22:10
gtodd left,
gtodd joined
|
|||
dalek | c: 35f76f6 | lizmat++ | lib/Type/Channel.pod: Some text tweaks, hope moritz++ is ok with them |
22:10 | |
geekosaur | aaaand support.ntp.org is either not reachable from here or smashed flat... | ||
lizmat | smashed flat, I would presume | 22:12 | |
moritz | geekosaur: buffer overflow in the ntp server, might allow remote code execution through crafted NTP packets | 22:14 | |
lizmat++ # doc rewording | |||
geekosaur | so I gathered from the url (I know far too much about ntp these days...) | ||
moritz -> sleep | 22:16 | ||
lizmat | gnight, moritz | 22:17 | |
22:17
erkan left
22:20
erkan joined,
erkan left,
erkan joined
22:24
grettis_ joined
22:28
grettis left
22:34
FROGGS left
22:39
Rounin left
22:40
rurban left
22:42
mvuets left
22:43
kaare__ left
23:02
treehug88 left
23:06
carlin joined
23:08
Isp-sec left
23:23
spider-mario left,
atroxaper joined
23:24
cognominal left,
telex left
23:26
telex joined
23:28
araujo left
23:30
atroxaper left,
Ugator left,
araujo joined
23:31
Ugator joined
|
|||
tony-o | moritz: bartolin: appears the problem is that the JVM configure runs out of memory but it continues to configure for everything else (and i was sitting here watching text fly by) | 23:39 | |
23:48
vendethiel left
|
|||
TimToady | you should use make for that so it'll track the dependencies :P | 23:53 | |
Those who do not understand make are doomed to reinvent it--poorly. Then again, those who do understand make don't seem to do it any better... | 23:58 |