The web in a box - a next generation web framework for the Perl programming language

IRC log for #mojo, 2014-12-23

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:59 Grinnz jberger, your forkcall module is working awesomely. i'm thinking about throwing together a CPAN module of my simplified helper method as a plugin
01:03 Grinnz whats the usual namespace for packaged plugins? Mojolicious::Plugin::?
01:36 rem_lex joined #mojo
01:44 woz joined #mojo
01:46 woz_ joined #mojo
01:48 jberger Grinnz: yes, though let me see it, it might just be easier to include it with the module itself (assuming we both agree on that)
01:50 Grinnz sure, that's another option.. let me commit what i have so far
01:52 Grinnz https://github.com/Grinnz/Mojolicious-Plugin-ForkCall/blob/master/lib/Mojolicious/Plugin/ForkCall.pm
01:55 jberger Grinnz: interesting, though I think the regular delay helper does most of this
01:56 Grinnz that was kind of the idea ;)
01:56 jberger I could probably reduce it by calling that internally
01:56 Grinnz is it compatible in that way?
01:56 jberger probably
01:57 jberger I'm about to have dinner, but after that let me take a crack at it
01:57 Grinnz i'll write up a quick Mojo::Lite test file
02:00 jberger cool
02:01 klapperl_ joined #mojo
02:02 jberger try using the delay helper, make the wrapper callback die $err if $err and do not handle the error event
02:02 jberger it might just work like you want
02:13 Grinnz the delay helper passes it to Mojo::IOLoop->delay though, i'm not sure what i could pass to that to use the forkcall object
02:14 Grinnz I put up a test file though, https://github.com/Grinnz/Mojolicious-Plugin-ForkCall/blob/master/t/forkcall.t
02:19 Grinnz i do like the die $err if $err idea
02:19 Grinnz put all the exception handling in one place
02:27 jberger I would also require a callback
02:28 jberger there's no automatic rendering available, you aren't reusing the ForkCall instance (using the finish event)
02:28 Grinnz hmm true
02:29 jberger using it the way you propose, not passing in a callback basically is an invitation to a timeout on the client side
02:29 Grinnz right, the only way it wouldn't be is if you rendered before the initial action ends
02:30 Grinnz but would render_later still make it wait?
02:32 Grinnz doesnt look like it would, thats just what disables the automatic rendering
02:33 Grinnz i can think of one or two usecases for rendering and then having an unmanaged fork call in the background
02:33 jberger but if you did that, you wouldn't want an error to try to send a 500
02:33 jberger that's when you would use FC by itself
02:33 Grinnz sure, that makes sense
02:35 hshong joined #mojo
02:38 aramaki_ joined #mojo
02:51 jberger Grinnz: sent you a pr
02:52 jberger you must have made some changes though, I'm getting a merge conflict
02:52 Grinnz heh, yeah i just added the changes we were talking about
02:54 Grinnz hmm i think i get it... i'll be honest, Mojo::IOLoop->delay still confuses the fuck outta me
02:56 jberger once you grok it, its frikken brilliant
02:57 jberger but yeah, it's tough until then
02:57 Grinnz ahh and $c passed to the callback, not a bad idea
02:58 jberger anyway, what you see is, in using the delay helper, there's almost nothing left
02:58 jberger wtf?
02:59 jberger something is not right here
02:59 jberger oh, you use tabs don't you
02:59 Grinnz hahaha
02:59 klapperl joined #mojo
02:59 jberger argh!
03:03 jberger Grinnz: one other thing, if you want don't want to drive your users (and devs!) crazy, don't use 5 sec sleeps/timers in your non-blocking code
03:04 Grinnz yeah i was gonna lower that :P
03:04 jberger s/code/tests/
03:06 jberger the longest I use is 1
03:06 jberger https://github.com/jberger/Mojo-IOLoop-ForkCall/blob/master/t/basic.t#L19
03:06 jberger everything else I use next_tick
03:13 doby joined #mojo
03:15 Grinnz well anyway, if you want to just include that with Mojo::IOLoop::ForkCall by all means, it looks good to me
03:17 jberger do you think it's worth it?
03:18 jberger it basically saves two lines of code if you are doing things right
03:18 jberger the error handling
03:18 purl the error handling is, like, really hard. or minor, for now
03:18 Grinnz i certainly will keep using it, it makes the syntax much nicer
03:19 jberger purl: botsnack
03:19 purl :)
03:20 jberger maybe I will, it doesn't hurt, and by my own prescription at mojoconf, (top-level) helpers ought to be named the decamelized version of the plugin name, and I can't think of what else a helper of that name might do
03:21 jberger that was (of course) before nested helpers existed (which still ought to follow the same proscriptions)
03:21 Grinnz nested helpers??
03:21 purl nested helpers is a new thing now, or maybe that's just an idea being discussed, which might help that second problem
03:21 Grinnz lol
03:21 jberger purl, no, nested helpers are a really cool thing
03:21 purl okay, jberger.
03:22 Grinnz haha
03:23 genio ok, so... I started using Mojo::Pg on a small project and all I have to say thus far is...
03:23 genio sri++
03:24 Grinnz i need to find a reason to use postgres for something...
03:24 Grinnz all of my projects are either for work and thus stuck on mysql, or use sqlite or storable
03:25 genio Migrations in Mojo::Pg are nice.  It's making life a bit easier
03:48 hshong` joined #mojo
03:50 woz joined #mojo
03:54 noganex_ joined #mojo
03:55 Grinnz_ joined #mojo
04:18 jberger Grinnz: can you plase proofread for me?
04:18 jberger https://github.com/jberger/Mojo-IOLoop-ForkCall/blob/master/lib/Mojolicious/Plugin/ForkCall.pm
04:22 Grinnz i think it should croak instead of die on arg error
04:22 Grinnz and s/controler/controller/ on line 99 :P
04:23 Grinnz otherwise, looks good
04:25 jberger the caller isn't what you think it is anyway :-)
04:25 Grinnz i suppose...
04:26 Grinnz i never like seeing die messages in lines of some module code though :(
04:26 jberger we have on occasion tried to work out how to unwind the stack on non-blocking code, but its really tough stuff
04:26 Grinnz that part isn't non-blocking
04:27 Grinnz i'm just talking about the die when a callback isn't passed
04:27 jberger oh, that's probably true
04:31 inokenty-w joined #mojo
04:35 jberger Grinnz: but these are the shennanigans you have to do to get that right :-)
04:35 jberger https://github.com/jberger/Mojo-IOLoop-ForkCall/blob/master/lib/Mojolicious/Plugin/ForkCall.pm#L7
04:35 Grinnz o_0
04:36 jberger https://github.com/jberger/Mojo-IOLoop-ForkCall/blob/master/t/helper.t#L23
04:36 jberger :-)
04:36 Grinnz never heard of @CARP_NOT lol
04:38 jberger I think that probably setting @Mojolicious::Plugin::CARP_NOT should work, I think, though I haven't tested it to be sure
04:39 Grinnz Carp docs apparently list a bunch of different ways to do t
04:39 jberger otherwise, the error is reported in Mojolicious::Controller, because its the AUTOLOAD method that is actually invoking the helper
04:40 Grinnz file scoping it is probably the best practice in this case
04:41 jberger package scope
04:41 jberger but close enough
04:41 aramaki joined #mojo
04:41 jberger its more like a class property actually
04:42 jberger and that is why I think inheritance works (I think it was written that way(
04:42 jberger )) # OCD!!!
04:42 Grinnz relevant_xkcd.png
04:43 jberger Grinnz: would you like a mention as Grinnz or your real name in CONTRIBUTORS
04:43 jberger ?
04:46 jberger ETIMEOUT
04:47 Grinnz real name is fine, thats what my cpan id is
04:48 jberger Dan Book?
04:48 jberger I see it on your github
04:48 Grinnz yep
04:48 jberger I know a Dan Brook
04:48 Grinnz haha
04:48 jberger kinda odd
04:48 Grinnz for some reason people always think thats my last name
04:48 irq joined #mojo
04:51 jberger shipped
04:53 jberger https://metacpan.org/release/JBERGER/Mojo-IOLoop-ForkCall-0.16
04:54 jberger Grinnz++
04:55 jberger but you should still learn how to use delays!
04:56 Grinnz haha
04:57 Grinnz i think the main problem i have is the method names don't seem to represent what they're actually used for
04:58 jberger we've had people say this before, but they've never been able to come up with anything better
04:58 Grinnz like ->begin returns a callback, doesn't make any sense to me
04:58 jberger that's usually the method that people target
04:58 Grinnz ill have to think on it :P
04:59 jberger the importing thing to remember is that you can call begin more than once to kick off more than one non-blocking task
04:59 jberger the execute in "parallel" and collect the results in the next step
05:00 jberger so you are scheduling those to begin and the callback is to make sense of the results later
05:00 Grinnz the active event counter seems strange to me too, maybe some kind of infographic would help there :P
05:00 jberger Grinnz: have you read my blog series?
05:00 Grinnz i have not
05:00 jberger I think I do my best to clear things up
05:00 tempire Grinnz: once it clicks, you'll wonder why you had so much trouble with it.
05:00 jberger jberger: http://blogs.perl.org/users/joel_berger/2013/10/writing-non-blocking-applications-with-mojolicious-part-1.html
05:00 Grinnz i hope not, because then i won't be able to suggest improvements :P
05:00 jberger three parts to that series
05:01 tempire And you'll realize begin is the perfect name.
05:01 jberger there are a few other good posts on the topic
05:01 tempire By that point, you'll have crossed over, and there's no going back.
05:01 jberger but they are interspersed with other things
05:01 jberger tempire: agreed
05:01 jberger <3 delays
05:01 Grinnz what's really confusing to me is thinks like ->begin(0) showing up in the docs
05:01 Grinnz things*
05:02 jberger that's when you need to keep the original invocant
05:02 woz joined #mojo
05:02 tempire jberger: That probably just sounds like nonsense at this point.
05:02 jberger often, when your non-blocking task is complete, you don't need the object anymore, just the errors and the results
05:02 tempire I feel like you have to run into the problem with multiple $tx before it becomes anything more than poppycock
05:03 jberger so the default it to slice it off so that it doesn't take up room in the argument stack for the next step
05:03 jberger tempire: yeah
05:04 jberger or get step signatures like this: https://github.com/jberger/MojoForum/blob/master/lib/MojoForum/Helpers.pm#L142
05:04 tempire Huh.
05:04 tempire Wonder why github isn't syntax highlighting that file
05:05 jberger its been doing that more and more on perl files I
05:05 jberger ve noticed
05:25 jberger nonblocking is hard
05:25 * jberger goes to bed
05:25 jberger nn
05:25 preaction let's go shopping!
05:25 * jberger slaps preaction with a walkeye pike
05:27 * jberger wouldn't go shopping this time of year!
05:27 jberger what are you crazy?
05:27 jberger o/
05:28 irq_ joined #mojo
06:22 Eddy joined #mojo
06:45 Eddy joined #mojo
06:45 Eddy joined #mojo
06:48 Eddy joined #mojo
06:50 woz joined #mojo
07:03 rem_lex joined #mojo
07:21 woz joined #mojo
07:25 Vandal joined #mojo
07:45 dod joined #mojo
07:48 ribasushi jberger: #cpantesters is a mostly read-only channel
07:49 ribasushi you wanted #cpantesters-discuss
07:50 ribasushi jberger: wrt your actual question - not sure what's up, besides Mojolicious being upgraded from 5.68 to 5.69
07:51 ribasushi jberger: it may also be worth it cranking up debug output in your tests whenever AUTOMATED_TESTING is set (conventionally set on all smokers)
08:20 sugar joined #mojo
08:34 alnewkirk joined #mojo
08:44 buu joined #mojo
08:44 buu So
08:44 buu The following oneliner fails (500 internal error): perl -MData::Dumper -MMojo::UserAgent -le'my $ua = Mojo::UserAgent->new; my $BASE_URI = "http://www.happymtg.com/decks"; my $base_tx = $ua->get($BASE_URI); print Dumper $base_tx->error'
08:45 buu The following oneliner succeeds: perl -Mojo -le'print g("http://www.happymtg.com/decks/")->body
08:45 buu W.T.F.
08:51 eseyman joined #mojo
08:54 buu Please someone tell me I'm not insane
08:59 aleksey joined #mojo
09:01 irq joined #mojo
09:10 woz joined #mojo
09:12 fhelmberger joined #mojo
09:37 eseyman joined #mojo
09:48 irq sri: thanks for the change in Mojo-Pg-1.03. I thought I was doing something wrong before. Now I have one reused connection only (confirmed with pg_log). However, $pg->on(connection => sub { say 'Connected' }) seems to continue reporting many (re)connections, as before. Is that expected?
09:54 ryozi joined #mojo
09:56 basiliscos joined #mojo
10:10 SimonAW joined #mojo
10:10 woz joined #mojo
10:15 basiliscos joined #mojo
10:34 neyasov joined #mojo
10:47 tiger joined #mojo
10:52 sugar_ joined #mojo
10:57 go|dfish joined #mojo
11:21 amon joined #mojo
11:28 eseyman joined #mojo
11:29 nicomen buu:use MOJO_USERAGENT_DEBUG=1 there could be different headers playing in, like UserAgent: or perhaps some Connection:
11:29 nicomen buu: or maybe it's just the trailing slash
11:41 nicomen http://curlpipesh.tumblr.com/ haha
13:02 neilhwatson joined #mojo
13:11 sugar__ joined #mojo
13:11 punter joined #mojo
13:26 paulg joined #mojo
13:36 neyasov_ joined #mojo
13:47 ignacio_ joined #mojo
15:04 woz joined #mojo
15:09 jberger hmmmm, if batman and sri are both against me, perhaps I'm in the wrong :-/
15:15 marty joined #mojo
15:16 marty_ joined #mojo
15:25 Grinnz nicomen, lol
15:34 sh4 joined #mojo
15:44 Grinnz jberger, i think it's convenient, but i don't use Mojo::DOM for anything...
15:55 Ptolemarch joined #mojo
15:57 zivester joined #mojo
16:04 sugar joined #mojo
16:16 woz joined #mojo
16:19 muraiki joined #mojo
16:27 denis_boyun joined #mojo
16:35 ver joined #mojo
16:40 Dandre left #mojo
16:41 Dandre joined #mojo
16:46 disputin joined #mojo
17:04 batman jberger: what does "in the wrong" mean? Is it the same as just "wrong"..?
17:05 batman I just don't want to add a bunch of maybe helpful methods.
17:05 batman I was pro val(), since it's already in jquery.
17:07 batman I have also never had the use for url() myself.
17:25 Grinnz_ batman: "on the wrong side"
17:29 fhelmberger joined #mojo
17:29 inokenty-w joined #mojo
17:29 disputin joined #mojo
17:34 batman ok
17:34 batman thanks
17:45 jonquest joined #mojo
18:02 cfedde using more words makes it more polite.
18:02 cfedde we see this all over common english. The multi-word form is acceptable but the single word form is offensive.
18:04 woz joined #mojo
18:13 jberger cfedde: never thought of it that way :-)
18:14 jberger batman: I'm probably going to withdraw, mst gave me a different idea
18:14 batman ok.
18:14 batman sorry for not knowing where the first idea came from :(
18:15 jberger I was composing this answer: http://stackoverflow.com/a/27582201/468327
18:16 jberger and I realized that I to Mojo::URL->new($dom->{href})->.... quite often
18:16 jberger s/to/do/
18:16 Grinnz_ helpers for Mojo::DOM gogo
18:16 jberger Grinnz_: thought about that, but I like mst's suggestion better (at least for now)
18:17 Grinnz_ i was only half serious :P
18:17 batman :)
18:17 jberger and no, I haven't actually said what it is
18:17 Grinnz_ it's bacon isn't it
18:17 Grinnz_ everything's better with bacon
18:18 disputin joined #mojo
18:20 jonquest joined #mojo
18:21 jberger Grinnz_: yep, you guessed it!
18:32 jberger hahaha, that was almost too easy
18:32 jberger perl -Mojo -Ilib -MMojo::Autobox -E 'g("mojolicio.us")->dom->at("a")->{href}->url->host->byte_stream->say'
18:32 jberger \o/
18:35 hernan604 autobox cool
18:45 jberger what things can we autobox? json encode and decode
18:46 jberger url and byte_stream obviously
18:46 jberger collection?
18:46 purl i think collection is softer though
18:46 tempire sri: Did you ever find a solution for upsert in postgres?
18:46 jberger purl forget collection
18:46 purl jberger: I forgot collection
18:46 tempire or anyone else for that matter
18:46 dod joined #mojo
18:48 jberger oh, even dom
18:55 jonquest joined #mojo
19:04 stephan48 tempire: yea, each time i need such a thing i google for hours till i find the same solution somewhere(a postgres function), emulating the behaviour... but i fail to record it somewhere
19:09 genio http://www.the-art-of-web.com/sql/upsert/  http://dba.stackexchange.com/questions/13468/most-idiomatic-way-to-implement-upsert-in-postgresql-nowadays
19:09 stephan48 yea, thats the one i also use
19:11 stephan48 the first link looks interesting
19:45 tencendur joined #mojo
19:54 doby joined #mojo
19:54 woz joined #mojo
20:04 Eke- joined #mojo
20:07 neyasov_ joined #mojo
20:24 genio 26K+ contact records for 16K+ organizations over here.   32K+ contacts for 17K+ organizations over there.  Nothing maps here to there and there's no way to know who has the most up-to-date data on any mutual information.  Put them together and make them one.
20:24 genio sad genio
20:26 buu genio: Try a blender?
20:26 genio I'd rather just murder people for inputting shitty data
20:27 buu nicomen: Someone else found the problem.. the site was sending back a 500 error code but including the full webpage in the body anyway, so when I checked 'success' it was false but the g() sugar method doesn't check for success and doesn't warn if there was an error
20:27 genio It wouldn't solve my problem, but it'd make me feel better.
20:31 buu That curlsh tumblr seems awfully snarky for a minor thing
20:36 jberger genio: eh, give it a try, you never know
20:36 buu I mean, is curl | sh; somehow massively more dangerous than wget foo.sh; ./foo.sh ?
20:36 jberger buu: they don't see it as a minor thing
20:36 jberger and in some sense its not, unless you REALLY trust the source
20:36 buu Or wget goat.deb; dpkg -i goat.deb
20:37 buu jberger: Well I mean, my point is that we get asked to run arbitrary code from other people constantly
20:37 jberger no, see dkg protects you against the code running rm -Rf /
20:37 buu does it really?
20:37 jberger and you have to trust the packager
20:37 buu Well, yeah, thats my point right there
20:38 jberger that's why sri wanted to get the installer using ssl
20:38 buu And you can always read the source either way
20:38 buu Off to the DMV!
20:39 buu What fun we have
20:39 jberger buu: just watch out if you see genio there!
20:39 genio I don't see it as a big deal other than you probably shouldn't teach people who are new to things to blindly trust things they get from the interwebs... but, if they're writing code and using Perl, they should be past that pain point already, no?
21:00 al joined #mojo
21:24 sugar_ joined #mojo
21:27 denis_boyun joined #mojo
21:27 jberger preaction++ cool post
21:29 Grinnz_ genio: that would be an assumption ;)
21:42 woz joined #mojo
21:48 cfedde Why is it that postaction did not write the codebase I'm working on.  Rather it was written by a deranged madman that invented database linked indirection technques and arbitrary line indentation. Not to mention high degrees of reuse by copy with random mutation and layers of lavaflow.
21:49 cfedde Oh. and revision control done using .bak and .back files.  that turn out they are sometimes are part of the code flow.
21:53 jberger cfedde: oh gods, anyone that would include .bak files in code flow should be taken out back and __END__ed
21:54 cfedde Om my charitable days I suspect that this was done as some kind of bug fix. Yet the non .bak is also in flow by another app.
21:54 cfedde s/app/part of the app/
21:55 cfedde "see how smart I was to leave a .bak file there? Lets see your revision control system do that!"
22:00 cfedde jberger: in your porting of the PDL wiki to github did you simply create the first page by hand? or did you find a way to automate that?
22:01 jberger truth be told, its been so long I don't remember what I did
22:01 cfedde cool.
22:01 jberger I think I just copypasta-ed the mediawiki
22:01 jberger then went back and podified those that I care enough to do
22:01 jberger also, github wikis are just repos
22:01 cfedde I have a pile of projects in a gitlab that migrate to github. but github has no api to create the wiki.  the first page must be created via the ui.
22:02 jberger so you can clone it and use your regular tools to handle that side
22:02 jberger almost certainly I did that by hand
22:02 cfedde github does not create the wiki repo till the first page is created.
22:03 cfedde If you have only one then yay. but I have like 320 or so.
22:03 jberger dear god
22:03 jberger what are you doing?
22:03 purl hanging around with these dorks here, as usual :(
22:03 cfedde purl++
22:03 jberger purl: botsnack
22:03 purl :)
22:03 cfedde learning about PhantomJS
22:04 cfedde with a detour into MosRepl and W:M:Firefox
22:06 cfedde s/s/z/
22:08 neyasov_ joined #mojo
22:11 linagee is there an easy way to do a simple redirect with Mojolicious Lite?
22:13 Grinnz_ https://metacpan.org/pod/Mojolicious::Controller#redirect_to
22:14 linagee thank you
22:18 Grinnz_ jberger: i still havent had time to read your blogs about it, but i think if $delay->begin was called $delay->continue i might be slightly less confused
22:20 Grinnz_ also if the docs for $delay->begin actually mentioned that the callback is what your nonblocking operation should call
22:20 Grinnz_ instead of all this stuff about the event counter :P
22:20 basiliscos joined #mojo
22:21 Grinnz_ it just seems like the primary purpose of $delay->begin (from the user's perspective) is to return a callback, and that aspect of it is just glossed over in the description
22:29 jberger Grinnz_: I see what you mean, but please do read the posts (especially the second one) and maybe you will get it better
22:30 Grinnz_ i will I promise, but this isn't just about me getting it better :)
22:30 jberger Grinnz_: no, I understand
22:31 jberger what you are asking for is contained within "Arguments passed to the callback are spliced and queued in the right order for the next step or "finish" event and "wait" method, the argument offset defaults to 1 with no default length."
22:31 jberger but it is quite wordy
22:31 jberger the problem is that a lot is going on
22:31 Grinnz_ yeah see, i have no idea what that even means.
22:32 nicomen btw. is the Mojo::IOLoop method names borrowed from other nb systems?
22:32 nicomen *are
22:32 Grinnz_ the best i can tell from that sentence is that it's an offset and a limit to which arguments get passed to the next code block
22:33 Grinnz_ but i'm really hazy on what arguments they are
22:33 jberger ignore everything after the comma, does that help?
22:33 Grinnz_ not really :P
22:34 Grinnz_ it's talking about arguments passed to the callback, but it doesn't say where they come from
22:34 jberger callbacks get arguments passed in, in any non-blocking contract
22:35 jberger if you use a delay with fork_call, you get $fc, $err, @child_returns
22:35 jberger so imagine it becomes like $delay->begin->($fc, $err, @child_returns)
22:36 jberger except that there is a non-blocking call at the second ->
22:36 Grinnz_ so what i'm guessing that's saying is that, it sticks the args passed to each callback from ->begin in order, but spliced according to the offsets
22:36 jberger right, which is why $fc doesn't show up in the next step
22:37 jberger Grinnz_: you are right on the verge of "ah ha"
22:37 Grinnz_ that still doesn't really cover the explicit "this returns a calback for your nonblocking operation to call" part
22:38 jberger see, it kinda does, and you have to remember that the module-level docs are not intended for teaching, they are an api reference
22:38 Grinnz_ that did help a lot with understanding where those args come from
22:38 Grinnz_ i guess, but i don't see why it couldn't be reworded to make it clear
22:39 Grinnz_ it doesn't have to be an essay
22:39 Grinnz_ i'll see if i can come up with suggestions
22:39 Grinnz_ tonight, after i read your blogs :)
22:46 Eke- joined #mojo
22:47 Eke- joined #mojo
22:51 nicomen This really made me think Promises were easy to use ;) https://metacpan.org/pod/Promises::Cookbook::GentleIntro
22:55 Grinnz_ maybe what we need is Mojolicious::Guides::Async :P or maybe just more words in https://metacpan.org/pod/Mojolicious::Guides::Cookbook#Backend-web-services
22:57 Grinnz_ it seems odd that the delay helper is only mentioned under "Backend web services", not exactly the keywords i would be looking for in a doc
22:57 nicomen Grinnz_: the best way to fix it, is to submit patches I think
22:58 Grinnz_ naturally :)
22:58 jonquest joined #mojo
22:58 Grinnz_ i like to talk through it so i can hear what others have to say though
23:00 nicomen The Mojo::UserAgent part is missing here, maybe writing that would help formulate things good
23:00 nicomen https://metacpan.org/pod/Promises::Cookbook::TIMTOWTDI
23:01 nicomen it would also show a comparison against AnyEvent
23:16 jberger we actually discussed adding a guide recently
23:16 jberger then I ran out of time again
23:17 Grinnz_ time is a cruel mistress, or something
23:27 panzana` joined #mojo
23:31 woz joined #mojo
23:33 tempire Ok, CTE it is.
23:47 asarch joined #mojo
23:59 neyasov_ joined #mojo

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary