»ö« 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.
AlexDaniel- glue? huh? 01:00
pilne: I don't think the answer is correct. I'm really confused now
AlexDaniel- what do you guys mean by glue? 01:01
pilne is nativecall intended to help with "hotspots" by leveraging the (usually) higher performance "c" can offer, or is it meant to just allow the functionality that the c-code provides? FFI isn't always blazing fast (: 01:02
AlexDaniel- FFI may not be as fast, but the stuff that you're running is as fast as it can get 01:03
at least that's how I understand it
so yes, you can rewrite a chunk of your code that's otherwise slow in C and then use that from nativecall
and as long as you're not doing too many calls through nativecall, it should really speed things up for you 01:04
s/from nativecall/through nativecall/
geekosaur pilne, that was what I meant when I said glue 01:08
pilne gotcha
geekosaur generally when we are dealing with hotspots we use nqp instead of perl 6, because C has no reasonable way to deal with MOP, or undefined, or ...
geekosaur you *could* hypothetically deal with a hotspot that way, but you lose so much that you might as well just have written in C to start with 01:09
AlexDaniel- not just hypothethically. If you're crunching numbers then it's a reasonable way to go 01:10
pilne true, and i'm guessing that if i can get my brain around perl6 i could theoretically learn nqp as well 01:11
geekosaur you can think of perl 6 as a lot of sugar for nqp ('not quite perl6'). 01:13
it forces you do handle a lot of things yourself, but is still much more perl 6 than C or etc.
pilne does that go as deep down the rabbit hole as "everything is a function that is sugaring various twisted depths of the lambda calculus" that haskell is? (: 01:14
geekosaur *to handle
mm. there are some similarities, but it's not lambda calculus. it has a vastly simplified object system, for example 01:15
pilne whew, i stand a fighting chance (:
haskell, and advanced macro-ing magiks in lisps are the two things i'm yet to say i'm able to confidently understand. 01:16
geekosaur like, anything involving the meta-object protocol is not present at nqp level; it's part of the perl 6 sugar on top
finanalyst l6 01:40
finanalyst Hi. I'm trying to run the Linux command uuidgen 10x and get the result into an array. 01:42
AlexDaniel- finanalyst: alright. What have you tried so far? 01:43
finanalyst tried my $i=shell 'for i in {1..10}; do uuidgen; done' but get '{1..10}'
if my $i=shell 'for i in 1 2 3 4 5 ; do uuidgen; done', I get a list of 10 uuid 01:44
AlexDaniel- finanalyst: ok, what about something like this 01:45
finanalyst sorry, not all there. my $i=shell 'for i in 1 2 3 4; do uuidgen; done', :out; for $i.out.lines { .say }
AlexDaniel- my @d = do for ^10 { run(:out, 'uuidgen').out.slurp } 01:46
finanalyst AlexDaniel: Looks good. Does slurp call .close, or do I need to close the pipe created by run? 01:47
bmurphy1976 Given $file="test file.txt" and qqw{touch "$file"} gives me (touch "test file.txt"), is there some variant of {touch $file} that gives me the same result (preserving the space) where I don't have to wrap "$file" in quotes?
geekosaur don't use qqw unless you want to capture all the output. here, you want run. 01:49
geekosaur oh, you aren;t running it just generating it 01:49
uh...
still do you really want qqw there? I would just do ('touch', $file) 01:50
you ask for expansion, you get expansion
bmurphy1976 well I want some kind of expansion... I get that I can just write it out but there are cases where all the noise of "," everywhere makes the commands hard to read 01:52
AlexDaniel- finanalyst: I think you can do .slurp(:close)
finanalyst AlexDaniel: Thanks. your version works but adds \n to value. .out.get also works but does not add \n.
AlexDaniel- finanalyst: then maybe .out.slurp(:close).trim-trailing
bmurphy1976 so it seems like putting "$var" in quotes to preserve whitespace is the lesser evil but was trying to see if there was a way I could have my cake and eat it too
finanalyst AlexDaniel: Thanks a mil. .trim-trailing is what I needed. 01:54
AlexDaniel- finanalyst: .trim should also work, but it will trim leading whitespace also
geekosaur I don't see a version that only word splits before interpolation 01:57
bmurphy1976 Thanks. I had no luck finding it either hence why I popped in here to see if I had missed something obvious 01:58
I can live with the quotes. It's not like bash is any better ;)
AlexDaniel- uhhh… 02:07
AlexDaniel- .tell bmurphy1976 I recommend not to use «» anywhere. If it happens that you forget the quotes, then you're screwed during run time. But if you split stuff yourself there's no possibility that it will go wrong 02:08
yoleaux AlexDaniel-: I'll pass your message to bmurphy1976.
AlexDaniel- .tell bmurphy1976 also, if your example above you're missing -- between your command and your file arguments
yoleaux AlexDaniel-: I'll pass your message to bmurphy1976.
AlexDaniel- .tell bmurphy1976 otherwise it won't work with filenames starting with “-”. In other words, all shell pitfalls apply. … and if so, why make your life harder by bringing in this idiotic quoting from shells? 02:10
yoleaux AlexDaniel-: I'll pass your message to bmurphy1976.
teatime Are there any valid codepoints that, encoded standalone (in a one-codepoint-long string), would not make a valid unicode string? 03:09
TEttinger 0xffff 03:10
dunno if that's a valid codepoint, but probably not 03:11
maybe a surrogate
teatime TEttinger: I'm not sure precisely which category 0xFFFF fits into... but yes, that is an example of an illegal/invalid character. 03:25
and the very last codepoint in the BMP, so if you only wanna search the BMP, use it as your top value
a useful optimization, but you are then exluding valid existing unicode codepoints in the supplementary planes
azawawi hi 03:44
azawawi github.com/Microsoft/language-serv...rotocol.md # Seems like the direction Atom is taking with future language integrations (autocomplete, find definitions, warning/error diagnostics, ..etc) 03:47
teatime did I seriously just say that in #perl6 03:52
.tell TEttinger my appologies, I was confused and thought you answered the question in #ruby that led me to ask my question here. sorry :) 03:53
yoleaux teatime: I'll pass your message to TEttinger.
TEttinger oh heh 03:54
yoleaux 03:53Z <teatime> TEttinger: my appologies, I was confused and thought you answered the question in #ruby that led me to ask my question here. sorry :)
TEttinger I'm uh not in #ruby
AlexDaniel- teatime: define “valid unicode string” 03:59
teatime AlexDaniel-: yeah, that was a sub-question, is there such a thing. but if not, is there a def. of "valid grapheme cluster"?> 04:02
was just curious, I can read the specs for sure 04:03
AlexDaniel- teatime: well, not really. You can create a string with any code point actually 04:08
teatime: *but* it does not mean that you can encode it as valid utf-8
for example
m: my $x = “\xD800” # by itself it's alright
camelia ( no output )
AlexDaniel- m: my $x = “\xD800”; $x.encode # but this is not ok 04:08
camelia Error encoding UTF-8 string: could not encode Unicode Surrogate codepoint 55296 (0xD800)
in block <unit> at <tmp> line 1
AlexDaniel- and therefore you can't print it also
m: my $x = “\xD800”; say $x.uniname # but this is not ok 04:09
camelia <Non Private Use High Surrogate-D800>
AlexDaniel- teatime: another limit you may be interested to know about is the amount of codepoints in a grapheme
technically, you can have as many as you want to, but rakudo has an arbitrary limit 04:10
which is around 1024 or something like that
AlexDaniel- m: my $x = “\x0303” x 1030; 04:11
camelia Too many codepoints (1030) in grapheme
in block <unit> at <tmp> line 1
AlexDaniel- m: my $x = “\x0303” x 1024;
camelia Too many codepoints (1024) in grapheme
in block <unit> at <tmp> line 1
AlexDaniel- m: my $x = “\x0303” x 1023;
camelia ( no output )
AlexDaniel- ya
teatime: that's all I know. Maybe samcv will be able to tell you about some other interesting facts 04:12
teatime: now, if you're thinking that you can store stuff in base 0x10FFFF, then you're correct, with some exceptions however 04:13
one is stuff that you can't store in utf-8 of course, and another is normalization 04:14
AlexDaniel- so rakudo is free to reorder stuff and swap code points according to unicode rules, so you can't really roundtrip arbitrary things 04:14
but that's explained here docs.perl6.org/language/traps#All_...By_Default 04:15
and UTF8-C8 is something you may want to know about
teatime: speaking of valid/invalid strings, another limit comes to mind 04:20
m: my $x = ‘x’ x 4294967295
camelia ( no output )
AlexDaniel- m: my $x = ‘x’ x 4294967296
camelia Repeat count (4294967296) cannot be greater than max allowed number of graphemes 4294967295
in block <unit> at <tmp> line 1
AlexDaniel- so if you want to store a 10GB string, you just can't 04:21
or you can… depending on what encoding we're talking about :)
and what characters you have there
codepoints rather 04:22
anyway o/
samcv hello 04:51
hi teatime
HoboWithAShotgun m: say sqrt(2) * sqrt(2) == 2 08:19
camelia False
HoboWithAShotgun m: say sqrt(2) * sqrt(2) =~= 2
camelia True
HoboWithAShotgun m: say ( sqrt(2) * sqrt(2) ).Rat == 2
camelia True
HoboWithAShotgun m: say 2**0.5 * 2**0.5 == 2 08:20
camelia False
eater m: say (sqrt(2) * sqrt(2))
camelia 2
eater m: say (sqrt(2) * sqrt(2)) == 2
camelia False
eater :D
wat 08:21
timotimo m: say (sqrt(2) * sqrt(2)) - 2
camelia 4.44089209850063e-16
timotimo m: say (sqrt(2) * sqrt(2)) eq 2
camelia True
eater m: say (sqrt(2) * sqrt(2)).nude
camelia No such method 'nude' for invocant of type 'Num'. Did you mean any of these?
none
note

in block <unit> at <tmp> line 1
eater oh
it's not a Rat
timotimo yeah
we don't have rat-giving trig either
eater why doesn't sqrt return a Rat? 08:22
m: say sqrt(2).Rat * sqrt(2).Rat
camelia 1.9999990
eater :D
HoboWithAShotgun well, it's a crux. you can define pi as some large rational, but then you end up having rounding errors elsewhere 08:24
timotimo m: say pi.^name
camelia Num
HoboWithAShotgun like angles in a triangle not addding up to 180°
timotimo m: say pi.Rat(0.0000001).nude
camelia (103993 33102)
timotimo m: say pi.Rat(0.001).nude 08:25
camelia (333 106)
timotimo m: say pi.Rat(0.1).nude
camelia (22 7)
HoboWithAShotgun how do i tell wether &($handler) contains something callable? 10:33
&($handler).defined seems to be always true
moritz $handler ~~ Callable 10:36
HoboWithAShotgun m: class c { has $.handler; }; my $m = c.new.^methods.first({ .name ~~ "handler" }); $m.defined.say 10:41
camelia True
HoboWithAShotgun there. how do i test wether $m contains something i can call
moritz if first() doesn't find a method, it'll return something undefined 10:45
so $m.defined seems like a good test to me
(and .^methods should only ever return callable stuff)
m: class c { has $.handler; }; my $m = c.new.^methods.first({ .name ~~ "mishandler" }); $m.defined.say
camelia False
HoboWithAShotgun but the handler method is always there 10:46
question is wether the attribute the methode refers to has a value 10:47
moritz well, you need to call it to get to the attribute
HoboWithAShotgun yeah
i just realized that too 10:48
moritz m: class c { has $.handler; }; my $o = c.new; my $m = $o.^methods.first({ .name ~~ "handler" }); say $m($o) ~~ Callable
camelia False
moritz m: class c { has $.handler; }; my $o = c.new(handler => sub () {} ); my $m = $o.^methods.first({ .name ~~ "handler" }); say $m($o) ~~ Callable
camelia True
moritz btw call by name is easier this way: 10:49
m: class c { has $.handler; }; my $o = c.new(handler => sub () {} ); say $o."handler"() ~~ Callable
camelia True
tyil melezhik: hi 10:57
melezhik tyil: hi :) 10:58
yoleaux 10 Oct 2017 17:58Z <tyil> melezhik: nice article on sparrowdo, I might check it out when I have time to spare
tyil ^ I am doing that, as you may have noticed
melezhik ok, thanks!
tyil I have tried to clean up the code in the bootstrap script, travis is currently taking a look at it
melezhik sure, I have already noticed you made a fork ...
tyil I want to be clear on this that I only tested it on my funtoo laptop 10:59
not on any other target
melezhik yeah, I see
tyil wouldnt want to break it for everyone but me :< 11:00
melezhik yeah, anyway I will review once you make a MR ...
tyil alright 11:01
thanks for the support so far, hope I can help you back a little as well
.hug melezhik
huggable hugs melezhik
melezhik tyil: a quick examination of your fork gives me a sense that you're better in bash/sh programming then me ((: , but of course I will check thoroughly 11:04
melezhik tyil: see ya 11:04
tyil ttyl :> 11:05
pmurias starts working on NativeCall for the js backend 11:25
mst I am faintly terrified by that statement, and I meant that as a compliment. 11:26
Geth ecosystem: a21fe95eca | (Jarkko Haapalainen)++ (committed using GitHub Web editor) | META.list
Add CommandLine::Usage
11:33
HoboWithAShotgun is there something akin to a method container? something you can add callables to and when you call it, all contained get called with the same arguments 11:35
like what c# does, someclass.someevent += handler
moritz iirc jnthn++ developed an AOP-inspired meta class for a talk once that did similar things 11:51
but my memory is blurred, don't know where to find it
Geth doc: b5437dc762 | (Will "Coke" Coleda)++ | doc/Type/Signature.pod6
Fix signature typo, can't have two invocants

Found by running xt tests.
11:53
synopsebot Link: doc.perl6.org/type/Signature
Geth doc: e7b5321d08 | (Will "Coke" Coleda)++ | xt/words.pws
learn new exception type
Geth doc: 52863626db | (Zoffix Znet)++ (committed using GitHub Web editor) | doc/Language/operators.pod6
Remove useless "note that"
12:56
synopsebot Link: doc.perl6.org/language/operators
Geth doc: cdf2a42039 | (Zoffix Znet)++ (committed using GitHub Web editor) | doc/Language/operators.pod6
Document `temp`'s behaviour with delayed reads
13:20
synopsebot Link: doc.perl6.org/language/operators
borisd hello, i'm looking for nine , are you here? 13:24
jnthn borisd: On vacation, iirc 13:26
borisd jnthn: ok, thx... does he read his cpan-mail?
i guess so, right? :-P 13:27
jnthn No idea, but I'd guess so. Though if I was on vacation I'm not sure I'd be spending it reading mine ;-) 13:28
Brumbazz Hi, I'm trying to get the following perl6 code to work, but I have no clue what I'm duing wrong.. pastebin.com/aP5FAuBJ I want to evaluate the regex expression in the variable $str. I then want to capture the word "THIS" such that I can print it out if the regex matches. Thanks in advance :) 13:54
moritz Brumbazz: you can't add captures in <{...}> 14:01
Brumbazz: a workaround is to assign the <{...}> construct itself to a capture
m: my $str = '\'Who is \'(.*?)\?'; if "Who is THIS?" ~~ / $<who>=<{$str}> / { print "match ! $<who>[0]"; }
camelia match ! THIS
moritz ... and yet another regex detail I didn't cover in my book
Brumbazz moritz: Thanks a lot :) 14:02
Do you have a link to your book ?
moritz Brumbazz: www.amazon.com/Parsing-Perl-Regexe...1484232275 14:03
not yet published though (in production phase right now)
borisd Hey moritz , seems you just got an email from reb, thats me he is talking about :-)
moritz borisd: I did not get an email 14:04
Brumbazz moritz: thanks :> Alright :)
thanks again, it works!
moritz borisd: in case somebody is still using my old [email@hidden.address] that doesn't work anymore. Please use [email@hidden.address] instead
borisd moritz: yep, he used the old one, I'll tell him 14:05
moritz borisd: thanks
borisd moritz: you should have the mail now... it's still in a very early stage of planning. Stay tuned... maybe give a short reply. thx 14:07
borisd p6: say "bye bye"; 14:11
camelia bye bye
borisd :-)
arg_ how do I combine commandline arguments: ./program -abc 16:01
From: sub MAIN(:a($a), :b($b), :c($c)) { ... } 16:02
ugexe you cant unless there is a 3rd party module 16:03
-abc is the same as :$abc
arg_ I thought that would be --abc 16:04
atroxaper arg_: there are no such functionality out of the box, as I know.
ugexe the `-` vs `--` doesn't have a real distinction
although maybe its intended to have such
ugexe but there is nothing stopping you from doing :foo(:bar(:$bar)), so it can't really make an assumption about aliases 16:05
arg_ you cannot share them though 16:05
ugexe what do you mean 16:06
arg_ sub MAIN(:ab(:a($a)), :ab(:b($b))) { ... }
ugexe right, i wasnt suggesting to do what I showed above. that was meant to show that the default behavior likely can't just translate multi options with `-` without making &MAIN signature work different than all other routines 16:07
atroxaper Does somebody know why my module is not appear in modules.perl6.org? There are no scan running for several days (modules.perl6.org/update.log) 16:09
ugexe you could grep @*ARGS for .starts-with('-') && not .starts-with('--'), then split on nothing (.comb) and prefix each option with a `-` 16:09
ugexe such that when MAIN gets called it doesnt see -abc, but -a -b -c 16:10
wander arg_: docs.perl6.org/language/functions#...entry-MAIN 16:12
ugexe something like: @*ARGS = @*ARGS.map({ $arg.starts-with('-') && not $arg.starts-with('--') ?? $arg.substr(1).comb.map({"-$_"}).Slip !! $arg })
wander I think -abc and --abc both pass named para abc 16:13
ugexe rather: @*ARGS = @*ARGS.map(-> $arg { $arg.starts-with('-') && not $arg.starts-with('--') ?? $arg.substr(1).comb.map({"-$_"}).Slip !! $arg })
wander and I am curious of github.com/perl6/doc/issues/1595 16:14
ugexe things would be easier if we could just start identifiers with - and -- :P 16:16
sub MAIN(:$--foo, :$-foo) { $-foo -= --$--foo } 16:17
wander hah, with sigil it may be implemented one day 16:22
but identifiers like barely --foo parsed difficultly 16:24
wander and so far, as mentioned in issue #1595, --foo equals -foo 16:25
wander (when trying to pass named para to sub MAIN 16:26
[Coke] I have a bunch of proc-async jobs I create. I want to max out how many I am trying to run at a given time. Is there a better way to do this than keeping an array of X running jobs, waiting for one of them to finish, picking that one, removing it from the list, add another one to the list, loop until done? 16:35
(starting the job only when adding it to the running list)
arg_ ugexe: I just get "This type cannot unbox to a native string: P6opaque, Bool". 16:38
jnthn [Coke]: I'm sure there's a module that does that for you 16:41
[Coke] Ah. Proc::Q seems likely. 16:42
wander @*ARGS = @*ARGS.map(-> $arg { $arg.starts-with('-') && !$arg.starts-with('--') ?? $arg.substr(1).comb.map({"-$_"}).Slip !! $arg }); say @*ARGS; 16:43
arg_: ^^ works for me
it convert -abc into -a -b -c
[Coke] .tell zoffix Proc::Q fails its tests here.
yoleaux [Coke]: I'll pass your message to zoffix.
ugexe perl6 -e '@*ARGS = @*ARGS.map(-> $arg { ($arg.starts-with("-") && not $arg.starts-with("--")) ?? $arg.substr(1).comb.map({"-$_"}).Slip !! $arg }); say @*ARGS.perl; sub MAIN(Bool:D :a(:$aa)!, Bool:D :b(:$bb)!, Bool:D :c(:$cc)!) { say $aa; say $bb; say $cc }' 16:45
as wander points out: it was precedence issue with `.. not .. ?? .. !!`. so !$arg ... or (not $arg ...) both fix your problem 16:46
[Coke] tries to drop back to 2017.09 and see if that works. 16:49
arg_ ugexe: I had to parenthesise: ($_.starts-with('-') && not $_.starts-with('--'))??
it works now (:
Geth doc/master: 5 commits pushed by 陈梓立++, (Patrick Spek)++ 17:01
TimToady HoboWithAShotgun: you can use .wrap to put wrappers around methods, but that's about all the support we put in originally for AOP (other than attempting to specify when the compiler could start assuming routines wouldn't be wrapped for optimization purposes)
TimToady other than that, Modules Will Happen :) 17:02
El_Che can PR's be sent to rakudo.org website? 18:26
I don't see it on github
timotimo do you have rakudo forked on github? 18:28
El_Che yes
timotimo it should offer you to make a pr when you go to the "branches" list and select that branch
from the "compare" view 18:29
El_Che I mean the website contant, not rakudo itself
timotimo oh! 18:31
no, that lives in a wordpress
El_Che I see github.com/nxadm/rakudo-pkg/releases was added, but it's not a aref, just text. Small fix :) 18:32
timotimo where is it?
found it 18:33
El_Che rakudo.org/how-to-get-rakudo/#Insta...Star-Linux
El_Che also, maybe we should also mention the Linux subsystem on windows. Should I send you a paragraph? 18:33
timotimo you may. refresh the page to see how i worded the link 18:34
El_Che Or maybe: If you use the Linux Subsystem of Windows 10, you can install the Ubuntu 16.04 package (run /opt/rakudo/bin/fix_windows10 after the install). 18:35
timotimo where do i put that? 18:36
El_Che ubuntu 16.04 has rakudo 2015.11 on the repo's and we don't want people installing that
Following the last sentence of the paragraph ("modules you might wish to use.") 18:37
timotimo hm, you think we can somehow disambiguate ubuntu's package vs the package from your repo? 18:39
El_Che good point 18:39
Or maybe: If you use the Linux Subsystem of Windows 10, you can install nxadm's Ubuntu 16.04 package (run /opt/rakudo/bin/fix_windows10 after the install). 18:40
timotimo yeah, that's good 18:40
Geth doc: a57e71904b | (Aleks-Daniel Jakimenko-Aleksejev)++ | doc/Type/Proc/Async.pod6
Revert "Don't recommend code that does not work"

This reverts commit 70084290cf881af88546d507fc2ba4448bfa7aaf.
18:41
synopsebot Link: doc.perl6.org/type/Proc/Async
Geth doc: b63da2ad13 | (Aleks-Daniel Jakimenko-Aleksejev)++ | doc/Type/Proc/Async.pod6
Prevent frustration with older Rakudo versions

See RT #132016.
synopsebot RT#132016 [resolved]: rt.perl.org/Ticket/Display.html?id=132016 [TESTNEEDED] Supply.merge and signals ( signal(SIGTERM).merge(signal(SIGINT)) )
timotimo have a look, i updated the page 18:43
we should probably also link to the unix subsystem for windows stuff from the windows section above? 18:44
El_Che yeah, I was thinking about that
El_Che (I case you want to run Raudo on the Linux Sybsystem of Windows 10, look under nxadm's rakudo-pkg" <- link to Linux & Unix-like oeprating systems 18:45
timotimo check a look 18:49
El_Che thx timotimo 19:15
timotimo YW, thanks for your contributions :) 19:15
tyil .tell melezhik the funtoo build is going to be more of a pain to fix than I anticipated, Funtoo recently updated its package manager, and the docker images havent accounted for this change yet 19:36
yoleaux tyil: I'll pass your message to melezhik.
pilne i am guessing, that hosting a perl6 app takes a server that one has a lot of freedom of choice to install things on? 21:47
unlike the dime-a-dozen options for things like perl5/php/python 21:48
[equa] yeah. my favorite host doesn't support perl6 despite having a lot of other languages 21:52
[equa] hell, they have 4 different schemes but still only perl 5 21:53
pilne i see there is a heroku buildpack, not sure how current/good it is, and heroku isn't quite my favorite solution overall, but other than that i'm coming up blank on the googlefu
lol, talk about a fragmented ecosystem, love a lot about scheme outside of that
[equa] oh, and two different non-scheme lisps 21:54
still been trying to find a perl 6 host, actually
HoboWithAShotgun allright. you don't have to wonder your mouse event loop be slow if you have a fat Dump of the entire widget tree in there 21:55
ugexe hackerrank lets you submit answers in something called LOLCODE but not perl6 21:55
jdv79 wasn't there a lolcode compiler for parrot 21:58
or was that some other lame lang on the first versions of nqp 21:59
yeah, parrot looks like 22:01
HoboWithAShotgun ... to disk 22:02
ShadowManu have a good day fellow programmer folks. I'm intending to use a scripting language for automating Continuous Integration (and Delivery) tasks. In particular, I will be playing with AWS, so mostly its about running commands and connecting through network. I had either bash (because of tradition), or javascript (because of own usage) but I don't feel them suited for comfy scripting. I was taking a look at learning perl and comes the 23:57
Juerd ShadowManu: Your line ends after 'comes the' because of the message length limitation of IRC. 23:58
timotimo :( 23:59
Juerd Welcome back 23:59