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

IRC log for #mojo, 2015-09-28

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

All times shown according to UTC.

Time Nick Message
00:08 meshl joined #mojo
00:18 meshl joined #mojo
00:23 mattastrophe joined #mojo
00:30 meshl joined #mojo
00:39 meshl joined #mojo
00:49 meshl joined #mojo
00:51 Kogurr joined #mojo
01:37 davido_ joined #mojo
01:41 damaya joined #mojo
01:45 kaare_ joined #mojo
02:12 DaniBunny joined #mojo
02:38 noganex_ joined #mojo
03:18 PryMar56 joined #mojo
03:33 asm35 joined #mojo
03:52 Janos joined #mojo
03:58 Janos hey there, trying to write some tests for a mojo app, and in a test like this $t->('/login', json => {user => 'user', pass => 'badpass'})->status(401)->json_is('/message' => 'Invalid credentials'); the test fails and it says "got: undef, expected: 'Invalid credentials'"
03:59 Janos the body of the response does contain data and I could check with content_is instead, but I was wondering why json_is was returning undef
03:59 Janos mm let me double check that my json is valid
04:02 Janos meh nvm, had an extra colon at the end of my json, thanks
04:11 Snelius hmm
04:11 Snelius json_is('/message' => 'Invalid credentials');
04:11 Snelius it's correct ?
04:12 Snelius i mean it's may be ref as json_is({'/message' => 'Invalid credentials'});
04:12 Snelius what you think Janos ?
04:13 inokenty-w joined #mojo
04:15 sri sidekiq has some interesting features in the commercial versions, like batches, rate limits and unique jobs
04:18 Janos Snelius, the issue was that the json response from the server so it was not correctly parsed by the mojo agent, I removed the syntax error in the json response and everything is working now, thanks a lot
04:20 Janos and yes it works good without the ref, like json_is('/prop' => 'value', 'check correct value'), is it better if I always use the hash ref like {'/prop' => 'value'} ?
04:21 * sri likes the ruby job queues a lot more than the python ones
04:23 sri i guess automatic retry is also a possible feature
04:26 sri i'd love to make a pretty web ui too... but that's a little too time consuming
04:29 Snelius what you talk about ?
04:30 sri me?
04:31 Snelius yep)
04:32 sri the same i've been talking about for the last two days
04:32 sri http://mojolicio.us/perldoc/Minion
04:33 Snelius oh sorry i missed this
04:33 Snelius Minion - Job queue
04:33 Snelius omg, cool
04:33 Grinnz i'm thinking of making a proper Future subclass for mojo.. i wonder if it is worth pullrequesting https://metacpan.org/pod/MojoX::IOLoop::Future ... it appears to have been an attempt at it but does nothing right :/
04:34 Snelius and now i can do not make my own job queue again and again
04:37 irqq joined #mojo
05:01 sri interesting, sidekiq rate limits are implemented in the worker, once a job with rate limit has been dequeued the worker will connect to the database again and try to get a shared mutex
05:01 sri so jobs will idle until they get it
05:02 sri basically how i said people should implement it outside minion ;p
05:02 sri https://github.com/mperham/sidekiq/wiki/Ent-Rate-Limiting
05:02 sri it's just a fancy shared mutex api
05:03 sri you block inside your task
05:10 davido_ joined #mojo
05:27 sri linking this again since i found it really educational, there's sql examples for all kinds of dequeue strategies https://github.com/johto/queues/blob/master/queues.go
05:28 sri (minion will go with the skip locked one)
05:33 batman good morning
05:33 batman anyone with windows/cygwin? i don't understand why http://www.cpantesters.org/cpan/report/b5778596-6bf4-1014-9f28-c3971f02c2a8 is failing
05:33 sri o/
05:33 batman seems like it's failing on both MSWin32-x86-multi-thread and cygwin-thread-multi
05:34 batman o/
05:34 preaction is the test trying to write to that directory?
05:35 batman yeah, but the code should create that directory: https://github.com/jhthorsen/mojolicious-plugin-assetpack/blob/master/lib/Mojolicious/Plugin/AssetPack.pm#L183
05:35 batman if the path isn't created, the plugin will fail to load
05:38 preaction this may or may not be the problem, but you shouldn't assume you can write to anything other than a temp directory during tests. from what i understand, cpantesters boxes can be configured strangely, sometimes explicitly to detect bugs (like the Perl In Space boxes)
05:39 batman hm... it sounds like you're right, though i find it a bit difficult to understand :/
05:45 cpan_mojo Mojolicious-Plugin-Bootstrap3-3.3505 by JHTHORSEN https://metacpan.org/release/JHTHORSEN/Mojolicious-Plugin-Bootstrap3-3.3505
05:58 panshin joined #mojo
06:01 panshin joined #mojo
06:12 cpan_mojo Mojolicious-Plugin-Pingen-0.2.1 by OETIKER https://metacpan.org/release/OETIKER/Mojolicious-Plugin-Pingen-0.2.1
06:12 Lee joined #mojo
06:30 cpan_mojo Mojolicious-Plugin-AssetPack-0.68 by JHTHORSEN https://metacpan.org/release/JHTHORSEN/Mojolicious-Plugin-AssetPack-0.68
06:47 dod joined #mojo
06:48 dod joined #mojo
06:52 panshin joined #mojo
06:58 dod joined #mojo
07:05 absolut_todd joined #mojo
07:14 AndrewIsh joined #mojo
07:15 trone joined #mojo
07:25 panshin joined #mojo
07:27 eseyman joined #mojo
08:06 absolut_todd joined #mojo
08:11 nic sri: re 'deterministic', I agree
08:13 nic and if it stays like that, it's perfectly practical to say Using statement based replication with this is not recommended because your nodes may diverge
08:13 * nic looks up the medical term for that
08:13 cpan_mojo Mojo-Cloudstack-0.06 by HRUPP https://metacpan.org/release/HRUPP/Mojo-Cloudstack-0.06
08:21 panshin joined #mojo
08:25 irqq joined #mojo
08:26 nic Using Time::HiRes, the scenario is very unlikely anyway
08:38 panshin_ joined #mojo
08:49 Vandal joined #mojo
08:51 ashimema joined #mojo
08:51 Shaeto joined #mojo
08:53 bpmedley_ joined #mojo
09:10 odc joined #mojo
09:31 berov joined #mojo
09:36 cpan_mojo BenchmarkAnything-Storage-Frontend-HTTP-0.008 by SCHWIGON https://metacpan.org/release/SCHWIGON/BenchmarkAnything-Storage-Frontend-HTTP-0.008
09:49 asarch joined #mojo
10:01 asarch joined #mojo
10:01 berov joined #mojo
10:01 odc joined #mojo
10:01 Shaeto joined #mojo
10:01 irqq joined #mojo
10:01 eseyman joined #mojo
10:01 AndrewIsh joined #mojo
10:01 dod joined #mojo
10:01 Lee joined #mojo
10:01 Janos joined #mojo
10:01 noganex_ joined #mojo
10:01 damaya joined #mojo
10:01 rwp joined #mojo
10:01 Foxcool joined #mojo
10:01 bpmedley joined #mojo
10:01 McA joined #mojo
10:01 Lucas1 joined #mojo
10:01 SmokeMachine joined #mojo
10:01 stephen joined #mojo
10:01 tyldum joined #mojo
10:01 Adura joined #mojo
10:01 jberger joined #mojo
10:01 jb360 joined #mojo
10:01 thowe joined #mojo
10:01 HtbaaPi joined #mojo
10:01 stephan48 joined #mojo
10:01 sri joined #mojo
10:01 buu joined #mojo
10:01 vytas joined #mojo
10:01 kivilahtio joined #mojo
10:01 cstamas joined #mojo
10:01 KindOne joined #mojo
10:01 dustinm joined #mojo
10:01 gabiruh joined #mojo
10:01 jabberwok joined #mojo
10:01 nic joined #mojo
10:01 marcusr joined #mojo
10:01 PopeFelix joined #mojo
10:01 Onigiri joined #mojo
10:01 mishanti1 joined #mojo
10:01 Ralesk joined #mojo
10:01 mgrimes joined #mojo
10:01 bayashi joined #mojo
10:01 coolo joined #mojo
10:01 augensalat joined #mojo
10:01 bc547 joined #mojo
10:01 bobkare joined #mojo
10:01 renormalist joined #mojo
10:01 crab joined #mojo
10:01 bowtie joined #mojo
10:01 robinsmidsrod joined #mojo
10:01 geheimnis` joined #mojo
10:01 kwa joined #mojo
10:01 stryx` joined #mojo
10:01 hahainternet joined #mojo
10:01 jantore joined #mojo
10:01 lb joined #mojo
10:01 ssm joined #mojo
10:01 mattp joined #mojo
10:01 romel joined #mojo
10:01 ans joined #mojo
10:01 inokenty joined #mojo
10:01 janus joined #mojo
10:01 tianon joined #mojo
10:01 dysfun joined #mojo
10:01 mtths joined #mojo
10:01 Snelius joined #mojo
10:01 BinGOs joined #mojo
10:01 garu joined #mojo
10:01 lestrrat joined #mojo
10:01 phillipadsmith joined #mojo
10:01 charsbar joined #mojo
10:01 Phil21 joined #mojo
10:01 jwang joined #mojo
10:01 mikegrb joined #mojo
10:01 ashleyde1 joined #mojo
10:01 bjakubski joined #mojo
10:01 lsm joined #mojo
10:01 upasana_ joined #mojo
10:01 cfedde joined #mojo
10:01 omega joined #mojo
10:01 Zx3 joined #mojo
10:01 eduardow joined #mojo
10:01 lupi_ joined #mojo
10:01 al_ joined #mojo
10:01 esh joined #mojo
10:01 firnsy joined #mojo
10:01 chansen joined #mojo
10:01 worklapperl joined #mojo
10:01 skaji joined #mojo
10:01 caeles joined #mojo
10:01 tinita joined #mojo
10:01 bzero joined #mojo
10:01 allison joined #mojo
10:01 salparadise joined #mojo
10:01 abracadaniel joined #mojo
10:01 Quai joined #mojo
10:01 tempire joined #mojo
10:01 spicyjack joined #mojo
10:01 btyler joined #mojo
10:01 sivoais joined #mojo
10:01 stokachu joined #mojo
10:01 diegok joined #mojo
10:01 mtj joined #mojo
10:01 sawtooth joined #mojo
10:01 stuart joined #mojo
10:02 ans joined #mojo
10:02 bc547 joined #mojo
10:12 ladnaV joined #mojo
10:15 bc547 joined #mojo
10:17 Vandal joined #mojo
10:17 panshin joined #mojo
10:17 Shaeto1 joined #mojo
10:18 eseyman joined #mojo
10:20 mattastrophe joined #mojo
10:25 lluad joined #mojo
10:33 melo joined #mojo
11:05 jontaylor joined #mojo
11:10 batman jberger: cool! your article got into perl weekly _this_ week :)
11:21 Kripton joined #mojo
11:22 meshl joined #mojo
11:42 neilhwatson joined #mojo
12:30 jberger batman: David asked the editors last week and they said it had simply been an oversight
12:31 batman ah! right :)
12:31 jberger Anyway, last week's was really full so maybe this is good
12:41 ashimema :)
12:41 ashimema awesome to see it in there..
12:51 odc very nice article jberger !
12:54 hernan605 joined #mojo
12:55 odc i'm a little worried about bcrypt though. ashleymadison also used bcrypt and plenty of password were cracked
12:55 * odc looks at argon2
12:57 stuart bcrypt doesn't protect against stupid passwords.
12:57 Quai exactly
13:02 tcohen joined #mojo
13:04 cpan_mojo API-Client-0.02 by AWNCORP https://metacpan.org/release/AWNCORP/API-Client-0.02
13:10 asm35 joined #mojo
13:13 melo joined #mojo
13:14 ajr_ joined #mojo
13:18 cpan_mojo API-Twitter-0.04 by AWNCORP https://metacpan.org/release/AWNCORP/API-Twitter-0.04
13:19 cpan_mojo API-Wunderlist-0.05 by AWNCORP https://metacpan.org/release/AWNCORP/API-Wunderlist-0.05
13:20 cpan_mojo API-Basecamp-0.05 by AWNCORP https://metacpan.org/release/AWNCORP/API-Basecamp-0.05
13:21 cpan_mojo API-Github-0.05 by AWNCORP https://metacpan.org/release/AWNCORP/API-Github-0.05
13:21 cpan_mojo API-Facebook-0.03 by AWNCORP https://metacpan.org/release/AWNCORP/API-Facebook-0.03
13:22 cpan_mojo API-Trello-0.05 by AWNCORP https://metacpan.org/release/AWNCORP/API-Trello-0.05
13:22 cpan_mojo API-Stripe-0.05 by AWNCORP https://metacpan.org/release/AWNCORP/API-Stripe-0.05
13:22 cpan_mojo API-Name-0.05 by AWNCORP https://metacpan.org/release/AWNCORP/API-Name-0.05
13:22 nicomen interesting ;)
13:23 Lee yeah, no tests - very "interesting"
13:25 Mikey joined #mojo
13:26 nicomen I was imagining the stamina required, by one person maintaining all sites APIs ;)
13:26 mattastrophe joined #mojo
13:29 meredith that set is kinda low-maintenance as far as an api library goes. it's a neat design
13:32 nic grrrr, why create a .t file if you don't have any genuine tests
13:32 gryphon joined #mojo
13:33 bwf joined #mojo
13:33 nic It should really contain the line ok 'MADE YOU LOOK :P'
13:34 ZoffixWork joined #mojo
13:34 batman too bad it's not non-blocking :/
13:35 ZoffixWork nic, https://metacpan.org/source/ZOFFIX/Test-Mojo-Role-ElementCounter-1.001001/t/01-tester.t
13:35 ZoffixWork :) Maybe he's playing the Kwalitee game and doesn't want to lose points.
13:35 nic grrr
13:36 jberger ZoffixWork: :o
13:37 jberger re bcrypt, its good for what its good for
13:37 ZoffixWork (that dist does have proper tests now though :))
13:37 jberger I haven't read anything against it so far
13:37 damaya joined #mojo
13:40 meredith it's not bad but you def want to be two steps ahead in your cost setting, and make sure you're prepared to bump cost over time.
13:41 meredith the only remarkable weakness i know is that it's easy to parallelize, and us in a world where cpus aren't getting faster but more numerous...
13:41 jberger ah true
13:42 meredith but still, afaik none of the bcrypt stuff from AM was cracked.  they used the password with something else simple inside a flat md5 for some kinda session variable.
13:42 meredith non-password stuff -- it's like having a strong door and good locks then no one noticed the dev who left the window open next to it.
13:43 ZoffixWork :P
13:43 meredith or printing a detailed photo of the entire TSA keyring in a newspaper ;)
13:44 jberger wow
13:44 jberger luckily all the women's passwords were safe :-P
13:45 jberger (read: there were no women)
13:45 genio I've still yet to find a client API that's a good example of a non-blocking module to go by.
13:45 genio (for web services)
13:48 Ptolemarch joined #mojo
13:49 batman genio: do you mean API spec or actual code?
13:49 batman api spec = POD
13:50 batman you can have a look at my old mojo-facebook. maybe it can give you some ideas: https://github.com/jhthorsen/mojo-facebook
13:50 genio actual Perl module to mimick style from.  https://github.com/genio/www-salesforce-nb/blob/master/t/12-rest_delete.t
13:50 Ptolemarch left #mojo
13:51 batman mojo-facebook is pretty old... had to take it off cpan, since facebook changed the graph api
13:51 meredith I'm expecting to have to hit some APIs soon and the vague notion I have in mind so far is to write a swagger spec if they dont have one, and use Swagger2::Client.
13:51 batman genio: not sure how web service is different from any other *thing*
13:52 batman meredith: \o/ cool :)
13:52 ashimema meredith should join #swagger ;)
13:52 batman ashimema: i think meredith is already there...
13:52 meredith i am all-seeing
13:53 ashimema so he is..
13:53 batman genio: perl is an abstraction from *thing*, so if thing is a database or web service shouldn't really matter
13:53 ashimema lol
13:54 ashimema damn keyboard.. I keep tyoping
13:54 genio batman: This is more or less what's going on now.  https://github.com/genio/www-salesforce-nb/blob/master/lib/WWW/Salesforce.pm#L137
13:54 ashimema s/he/she
13:57 batman genio: you can factor out some of that code... want me to wrap together a quick alternative version?
13:58 genio batman: If you don't mind. I'd be happy to have assistance in making it make more sense.
13:58 batman genio: not sure if i can, but i can at least give you my opinion, haha :)
13:59 genio heh :)  there's a lot of repetition in there for sure
14:07 batman genio: not really that much to change... https://ssl.thorsen.pm/paste/70b3e257c9a8
14:10 genio batman: Thanks for pointing out the errors I had with ->next_tick() and weaken().  Abstracting out the URL and headers the way you have it may not work in some cases though (since those things are dependent upon a successful login.)
14:10 batman aha.
14:11 batman then i think i would abstract the $ua->get(...) part into a new method to stop repeating the code.
14:12 batman i could be wrong though... the rationale is that i've spent quite some time thinking "but, but... this can't go wrong, because the code is the same between non-blocking and blocking!" when it really wasn't
14:13 genio and I think I will change the _error() method that gets a usable string to just take $tx instead.  I tend to make some things more complicated than they should be
14:14 batman genio: i also think i would make login() private. why bother with a method, if it gets called anyway? :)
14:15 batman i try to remove as much login(), connect(), ... methods as possible
14:15 genio I've gone back and forth on that one a lot :)  The main reason I've left it in so far is just to be consistent with their JSForce client API
14:16 batman ok.
14:17 genio I don't think I've gotten my head completely wrapped around when I need to weaken a reference.  Do you have a minute to explain why it's necessary before the IOLoop->delay() call?
14:18 genio I understand it, for instance, in the case of Mojo::SQLite and Mojo::SQLite::PubSub where PubSub has a SQLite attribute
14:18 batman genio: so, if you don't weaken() then Mojo::IOLoop->delay() will continue to run even if your $api object (or whatever that represents $self) goes out of scope
14:19 batman if you on the other hand do weaken() first, then the ioloop will stop at the next step (if not sooner) and complain that you're calling a method on an undefined variable $self
14:19 genio ah, ok.  That makes sense.
14:20 batman this is a bit confusing, so you could add "return unless $self" inside the steps (sub{...}) to avoid that, but i often skip that part, since i much rather have the warnings telling me something is wrong, than nothing at all
14:20 genio Thanks, that makes perfect sense now.
14:20 batman sorry: the "ioloop" won't stop. i meant s/ioloop/delay/
14:20 genio batman++
14:21 batman i'm super impressed genio. "past batman" would never have understood that explanation from "present batman"
14:21 batman hehe
14:23 genio heh.  I've been reading a lot, but I can't say that I've been fully understanding everything I read.  So, when it gets explained a bit outside of what I have read, things start to make more sense as I see it from a slightly different angle
14:24 batman genio++
14:25 batman also, you should probably weaken() before Mojo::IOLoop->next_tick(sub { $self->$cb($err) }); as well
14:25 batman but sometimes i'm lazy. and also, without bugs, how could it be software? ;) :S /o\
14:27 Grinnz http://2.media.collegehumor.cvcdn.com/14/28/415812db06a2c9239a47644acfe71308.gif perspective!
14:28 eseyman left #mojo
14:29 eseyman joined #mojo
14:36 melo1 joined #mojo
14:38 damaya joined #mojo
14:39 Quai https://twitter.com/NASA/status/647557414305275904
14:39 Quai hm, again, wrong channel.
14:39 batman genio: oh! I got Mojo::Cloudflare on CPAN. Maybe it can give you some ideas.
14:43 genio batman: Thanks.  I'll take a look at that.  In the meantime, https://github.com/genio/www-salesforce-nb/issues/6 and https://github.com/genio/www-salesforce-nb/issues/7 I think should clear up the two major things you pointed out.
14:46 genio after clearing those up, I'll look at factoring stuff out to reduce the repetition.
14:50 Ptolemarch joined #mojo
14:50 TheAthlete joined #mojo
14:50 panshin joined #mojo
14:57 genio batman: Is there a reason why you'd choose to go ahead and use the callback chain vs Mojo::IOLoop->delay() in here?  https://metacpan.org/source/Mojo::Cloudflare#L254   Is it just preference at this point as you're assuming the caller will have started the loop?
14:58 batman genio: if i have just one step, then i might skip delay()
14:58 genio I apologize for bombarding you with questions, it's just that I make decisions sometimes and don't always have all of the information required to know if what I've done is actually OK or it just works in my tests so I move on (like not weakening prior to nb calls).
14:59 batman genio: no problem as long as you tell me when you think i did something weird :)
14:59 PryMar56 joined #mojo
15:00 bpmedley_ joined #mojo
15:00 genio Will do!
15:03 batman thanks for making a non-blocking api. make hypnotoad really happy :)
15:05 batman *makes
15:13 melo joined #mojo
15:14 njlg joined #mojo
15:21 disputin joined #mojo
15:23 jberger personally I often use a one-step delay because of catch
15:31 meshl joined #mojo
15:41 Flying_Squirrel joined #mojo
15:56 good_news_everyon joined #mojo
15:56 good_news_everyon [mojo] jberger tagged v3.8.14 at df6375e: http://git.io/vcLUA
15:56 good_news_everyon left #mojo
15:56 jberger shit
15:57 dvinciguerra joined #mojo
15:58 jberger sorry about that
15:58 good_news_everyon joined #mojo
15:58 good_news_everyon [mojo] jberger deleted v3.8.14 at df6375e: http://git.io/vcLT0
15:58 good_news_everyon left #mojo
16:08 damaya joined #mojo
16:17 sri nic: statement based replication seems rather uncommon for postgresql
16:18 sri at least these days
16:24 sri especially for multi master replication (if i understand the problem correctly)
16:26 sri nic: perhaps you could elaborate more
16:27 Ptolemarch joined #mojo
16:33 genio batman: Does this seem like a step in a better/saner direction?  I know there's still a lot that could be factored out/cleaned up.  But as far as doing the right thing in the non-blocking bits?  https://gist.github.com/genio/1cccfec91430160eef23
16:34 mattastrophe joined #mojo
16:35 sri genio: if you don't store the global ioloop singleton in $self, there is no need to weaken
16:35 sri for Mojo::IOLoo->... methods
16:36 sri you weaken if there's a cycle somehwere, not preemptively
16:39 genio sri: Ah. So, since I'm not storing the singleton as an attribute and using that (should I be?) I can get rid of the weaken calls.  Thanks (I'm still not as familiar as I'd like to be on this).  Is there anything else that jumps out as wrong to you?
16:48 pink_mist should you be? do you think you should?
16:49 disputin joined #mojo
16:49 genio I don't think so, but I obviously don't understand enough of what I'm doing and I'm not learning as quickly as I'd like.
16:53 asarch joined #mojo
16:54 bpmedley_ sri, nic: https://github.com/kraih/minion/compare/master...brianmed:master <-- How does this SQL look for you?  The current goal was linear deps with support for priorities.
16:59 damaya joined #mojo
17:00 sri bpmedley_: ran my benchmark against your patch, results are not good
17:01 sri went from 7s to 77s
17:01 bpmedley_ Gaw
17:02 sh4 joined #mojo
17:02 amon joined #mojo
17:03 bpmedley_ May I use your benchmark?
17:03 sri https://gist.github.com/anonymous/845ef7880cbcaca1904b
17:04 sri numbers might need to be adjusted depending on hardware
17:04 sri these numbers just happened to show lock contention on my macbook air
17:06 bpmedley_ Hrmm, back to the drawing board.
17:06 Ptolemarch joined #mojo
17:11 melo joined #mojo
17:12 cono joined #mojo
17:12 cono hello every1
17:13 cono Is there any way to run shell commands via IPC::Open3 or AnyEvent::Open3::Simple (wrapper arround open3) in mojo app?
17:13 cono I thought Minion can help me
17:14 cono but it based on Mojo::Server::Daemon and handles child reaping inside, so no way to track if my fork died
17:19 trone joined #mojo
17:19 sri nic: btw. you might be looking at the wrong module, Time::HiRes is not used by Minion::Backend::Pg
17:20 sri cono: you seem a little confused, minion is not based on Mojo::Server::Daemon
17:20 mullagain joined #mojo
17:21 mullagain Anyone have a good example of using websockets in a non Lite application?
17:21 cono sri: anyway something handles SIG_CHLD
17:22 sri mullagain: http://mojolicio.us/perldoc/Mojolicious/Guides/Routing#WebSockets
17:22 mattastrophe joined #mojo
17:23 sri cono: nope
17:29 cono hm, strange, ok, let me rewrite it on simple fork and anyevent->child
17:30 abra joined #mojo
17:31 sri wow, there is liquid water flowing on mars :o
17:32 Vandal joined #mojo
17:44 jberger cono: I'm not sure what you are trying to accomplish
17:44 jberger certainly Minion can run your command, but it is for background tasks not like request-response
17:45 jberger Mojo::IOLoop::ForkCall (an external module of my own authorship) might be best if you need that
17:45 panshin joined #mojo
17:45 jberger or even Mojo::IOLoop::ReadWriteFork
17:45 jberger mullagain: see Galileo
17:46 jberger although tests are failing in it since the boolean change :s
17:46 jberger I will fix those tonight
17:47 jberger sri: btw: https://github.com/jberger/Galileo/issues/47
17:48 dod joined #mojo
17:48 sri jberger: you're not using true/false constants
17:49 jberger an interesting side effect
17:49 jberger no, I know that now :s
17:49 jberger that's what I will fix
17:49 jberger but it is interesting that the tests fail all the same
17:49 jberger just in case someone else sees this happen as a result
17:53 sri not that i understand why exactly the tests fail
17:54 sri expected string, got number is a bit silly for a perl testing module
17:54 jberger yeah, I agree
17:54 jberger but it would be better to use the constants anyway
17:55 sri it's the only way, even if one of the modules involved got fixed, it would take years for the change to get distributed wide enough
17:55 Ptolemarch joined #mojo
17:58 cono jberger: uh, thanks, will look
18:05 neilhwatson joined #mojo
18:05 cono probably my problem is inside of anyevent? http://codepad.org/VzHDUb1a
18:05 cono sigchld callback never called
18:06 PopeFelix What does it mean for a Mojo transaction to be resumed?
18:07 jberger cono: first of all, your error makes it look like you don't have mojolicious installed or you are using the wrong perlbrew/local::lib
18:07 pink_mist PopeFelix: what's the context of your question? 0_o
18:07 cono jberger: its not my problem, its codepads problem :) it tries to evaluate my code  :)
18:07 cono just a single module
18:07 jberger oh sorry
18:07 cono so just skip this error
18:08 cono the only thing I see in the logs: [Mon Sep 28 21:02:16 2015] [debug] yay: 9987 Mojo::IOLoop::Delay
18:08 jberger I'm not sure what your delay is performing there
18:08 Akron joined #mojo
18:08 cono jberger: its something like a condvar variable
18:09 sri PopeFelix: all transactions start out suspended, resuming signals the server that a response is ready, matters for non-blocking stuff rendering a response
18:09 PopeFelix pink_mist, I see that Mojo::UserAgent subscribes to the "resume" event on a Mojo::Transaction::HTTP at https://metacpan.org/source/SRI/Mojolicious-6.22/lib/Mojo/UserAgent.pm#L178
18:09 jberger cono: but you don't pass in any callback to wait on
18:09 PopeFelix And the Mojo::Transaction docs say this event is emitted when a transaction is resumed.  So what does "resume" mean in this context?
18:10 cono jberger: I'm doing delay->begin
18:10 cono which actually increase counter by one
18:10 jberger cono, yes I know, but that just maintains order of operations
18:10 jberger you only have one operation
18:10 jberger usually you pass in a callback to fire on completion
18:10 asarch joined #mojo
18:10 jberger then the delay calls that once the other task is complete
18:11 sri PopeFelix: basically, a signal that the transaction is ready for writing
18:12 PopeFelix sri, I see. Thanks.
18:12 cono jberger: my idea is to not let internal ioloop to finish loop before my child live
18:12 jberger hmmm, that it might do for you yes
18:12 jberger you should call ->wait though
18:13 cono ther is no point in calling wait, because ioloop already started for me by Mojo
18:13 bpmedley_ sri, nic: https://github.com/kraih/minion/compare/master...brianmed:master <-- Do you have time to benchmark this?
18:13 Flying_Squirrel joined #mojo
18:13 jberger cono: if this will only ever be run under a mojo server (never a command nor CGI) then you are right
18:13 jberger I just do it for portability
18:14 sri bpmedley_: no
18:14 bpmedley_ sri: Perhaps later?
18:14 jberger (again though, if you are using it to make sure the loop doesn't stop, it would only stop then in the case that you stop the server)
18:14 sri bpmedley_: why?
18:14 bpmedley_ I believe the new SQL is much faster.
18:14 sri that doesn't look like it does anything sensible
18:15 sri you really need tests
18:15 cono jberger:   return if $self->ioloop->is_running; its from mojo::ioloop::delay->wait
18:15 jberger cono: yes, believe me, I know how it works
18:15 cono :)
18:15 cono Sooo, any thoughts?
18:15 cono My fork is actually writing "hai" to the file
18:16 jberger I'd just suggest to use ForkCall, I've worked really hard to make it as bug free as possible
18:16 cono the only concern I have, that sigchld callback has not called
18:16 jberger windows is still at your own risk
18:16 sri bpmedley_: it might be a good idea to get your own benchmark env set up
18:16 bpmedley_ I have benchmarked it.
18:16 jberger cono: where do you attach a sig_child callback?
18:17 jberger also, those are really hard to do right, because $other_code
18:17 cono jberger: http://codepad.org/VzHDUb1a line 33
18:17 jberger mine doesn't rely on it at all
18:17 jberger is that implemented via SIG_CHLD?
18:17 jberger (I haven't delved the guts of AE)
18:18 cono not sure how it is implemented inside
18:18 jberger so the "on complete" callback isn't being called
18:18 jberger can you try with ForkCall and see if it behaves better for you?
18:19 cono yeah, will try. Thanks
18:23 absolut_todd joined #mojo
18:24 cono jberger: dosn't work with your module either :(
18:24 jberger can you paste something?
18:24 TheAthlete left #mojo
18:25 cono jberger: http://codepad.org/RuUGpzO8
18:25 cono jberger: last line is again: [Mon Sep 28 21:24:18 2015] [debug] yay: 10629 Mojo::IOLoop::Delay
18:26 batman genio: I think the way you unpack the arguments to your method is very complicated. That's all I have I think... I have to go now. Maybe I will be back later.
18:26 jberger cono: oh, I don't know if you should exec in there
18:26 jberger try system
18:26 cono That what I need :)
18:26 cpan_mojo Galileo-0.039 by JBERGER https://metacpan.org/release/JBERGER/Galileo-0.039
18:26 jberger try system for now, and I'll see if I can think about exec
18:27 jberger exec might kill the magic
18:27 jberger (though I don't actually think so)
18:27 cono jberger: sysmtem doing fork inside
18:27 cono tried, same result
18:29 sri if anyone else wants to join the minion benchmark game, you're very welcome
18:29 sri all kinds of little sql tweaks would be great
18:30 sri optimizing indexes and stuff
18:32 Flying_Squirrel joined #mojo
18:34 jberger cono: if you need to exec something, I think ReadWriteFork might be better suited, though I'm trying a few things here
18:36 njlg joined #mojo
18:38 sri the latest benchmark script https://gist.github.com/anonymous/57432275c0671fa384db
18:39 njlg joined #mojo
18:40 njlg_ joined #mojo
18:42 sri output looks like this for me https://gist.github.com/anonymous/591cf73abff0ad7d733a
18:43 Ptolemar_ joined #mojo
18:45 sri with SKIP LOCKED i get https://gist.github.com/anonymous/18f843e49694b6619606
18:45 jberger cono: http://pastie.org/10448732
18:46 jberger that works fine for me
18:46 sri so, the scenario is not perfect for demonstrating lock contention, but it is there
18:46 jberger which is just a modification of an example from the dist
18:47 jberger the ticker isn't useful either, it could be removed
18:47 cono jberger: why are you starting your ioloop by yourself
18:47 cono mojo doing this for u
18:47 jberger this is a lite app
18:47 jberger I'm starting the app
18:51 jberger also, exec will not work with my module
18:51 jberger that is confirmed
18:52 cono jberger: now I have something strange: Mojo::Reactor::EV: I/O watcher failed: Mojo::IOLoop::ForkCall: Magic number checking on storable string failed at /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Storable.pm line 418, at /home/cono/work/p5-tm-gitlab-hook/local/lib/perl5/Mojo/IOLoop/ForkCall.pm line 94
18:52 jberger right, that's from killing the pipe between the parent and child, which is used for "signaling"
18:53 jberger that's what I got too, when trying to exec
18:53 jberger nothing you can do about it
18:53 jberger that pipe is part of the design of the module
18:53 njlg joined #mojo
18:54 jberger what do you want to fork/exec from the mojo that you want to have a callback from? that doesn't make much sense to me
18:55 cono i'm writing gitlab hooks, I have to run a lot of git instructions, get output and store it
18:57 jberger so either open pipe from those commands back into the child, or else use Capture::Tiny
18:57 jberger exec is a big hammer
18:58 cono now when it works for me, I will try to rewrite to IPC::Open3, it suits for me much better
18:58 cono jberger: thanks for help
18:58 cono strange, wanted to know what exact reason :(
18:58 jberger there is always going to be lots of magic behind the curtain of a module that can fork during an ioloop
18:59 cono yeah, definitely :)
18:59 Grinnz we still need a real POE::Wheel::Run/IO::Async::Process for mojo :)
18:59 jberger but using IPC::Open3 from the child should be fine
19:00 jberger Grinnz: what does POE::Wheel::Run do that ForkCall doesn't? exec?
19:00 jberger for bidirectional communication, see ReadWriteFork
19:00 Grinnz well Run can run either a command or a subref, but mainly, callbacks on stdout/stderr
19:01 jberger though it used to be a little more fragile, batman, how is RWF doing lately
19:01 jberger ?
19:01 Grinnz IO::Async::Process is specifically for running exec'd processes
19:02 Grinnz IO::Async::Function is more analogous to ForkCall
19:02 Grinnz usually, when you run a subref you want the return value, and when you run a command you want stdout/stderr
19:02 sri that sounds very sensible
19:02 jberger I could probably make an "exec" method for ForkCall
19:03 * sri likes working with the node.js child process api
19:04 disputin joined #mojo
19:04 sri https://nodejs.org/api/child_process.html
19:04 Grinnz what would be important to me, in a command executing forker, would be being able to set separate callbacks on any stdout or stderr, and not having to wait for the end
19:05 jberger Grinnz: so ForkCall started as a direct port of AE's fork_call, and RWF happened at about the same time, so I didn't make one like that
19:05 Grinnz i don't see any reason to conflate ForkCall with that kind of functionality
19:06 Grinnz it's very different requirements
19:06 * sri agrees
19:06 Grinnz POE::Wheel::Run doing both is already kind of weird
19:07 Grinnz and it doesn't do the "return value" thing part at all, so it doesn't completely do both anyway
19:08 Grinnz its coderef ability is more if you need to write a wrapper around the shell command you want to execute
19:08 Grinnz which is what i tend to use it for
19:09 Grinnz but in a more callbacky event loop, that's probably not needed
19:11 mattastrophe1 joined #mojo
19:15 batman jberger: what do you mean "fragile"?
19:15 batman it has some failing tests, but it has been working very well @work the last years
19:15 Grinnz ReadWriteFork is pretty close to the IO::Async::Process sort of thing, it just needs separation of stdout and stderr
19:15 jberger there was something about detecting close
19:15 jberger I could be misremembering
19:15 jberger that's why I asked
19:16 batman even NASA is using ReadWriteFork :)
19:16 jberger ooooooh
19:16 jberger is that how they found water?
19:16 Grinnz lol
19:16 batman jberger: it might be the system that transported the information about the water.
19:16 batman i don't have much details...
19:17 jberger batman: how do you know about this? I'd love to see how NASA is using Mojo (if indeed they are)
19:17 batman jberger: working on it...
19:17 Ptolemarch joined #mojo
19:17 batman Grinnz: RWF can run either a command or sub-ref
19:18 batman ReadWriteFork is pretty much a more lightweight version of POE::Wheel::Run
19:19 Grinnz oh, i see that in the start example, maybe a better explanation of the args "start" takes would help :)
19:20 batman Grinnz: PR is welcome.
19:20 * batman need to get some sleep
19:20 njlg joined #mojo
19:20 Grinnz hehe, well i dont know what they all do :P
19:21 batman Too much moon-watching today...
19:22 batman Grinnz: what do you mean?
19:22 Grinnz i definitely want to try to get the separate stdout/stderr events sometime, but i'm afraid i don't know much about pipe stuff...
19:22 batman It's fairy simple. I haven't added it because I've never had the use for it.
19:25 disputin joined #mojo
19:26 Grinnz well it's the reason i haven't been able to use it yet
19:28 Grinnz the other thing POE::Wheel::Run does that is nice is line buffering through a filter... but i dont know if that would be sensible to do natively somehow
19:28 Grinnz optionally of course
19:30 Grinnz IO::Async::Process doesn't, it just provides an example of line buffering in the callback
19:31 Akron joined #mojo
19:33 bpmedley_ https://github.com/kraih/minion/compare/master...brianmed:master <-- Anyone have time to look this over?
19:33 bpmedley_ Right now, the assumption is that deps are linear.
19:33 sri bpmedley_: i don't understand it
19:34 bpmedley_ Let me put together a pastie..
19:34 sri omg, i get it, that's... well... different
19:34 sri super fragile
19:34 bpmedley_ I blame the head injuries..
19:35 bpmedley_ Thoughts on improvement?
19:35 sri i thought you wanted to go with a "where deps = '{}'" in dequeue and just remove all references to a job when it is finished or so
19:36 bpmedley_ Hrmm.  Let me think.
19:36 sri not that i like that solution very much either
19:37 njlg joined #mojo
19:39 bpmedley_ So, in "finished" update minion_jobs so that dependent jobs no longer reference the finished job?
19:40 bpmedley_ Sorry, finished => finish_job.
19:41 bpmedley_ Wait. You said dequeue, let me think some more.. ;)
19:41 jberger bpmedley_: my $0.02 is that linear job dependencies is really not too hard to implement via the task definition itself
19:42 jberger I think there is much more value in non-1-to-1 dependencies
19:42 jberger process these images and then make a thumbnail card of them all
19:43 njlg joined #mojo
19:43 bpmedley_ jberger: Would you explain further?  Are you saying my SQL could be better?  Or, my approach is off?
19:44 jberger I just read your comment stating your assumptions
19:44 jberger and I remember from past days
19:44 jberger I don't really have much to say on the SQL implementations
19:45 jberger SQL is something I can do when I have to, but I wouldn't trust myself to implement it for something like this
19:45 bpmedley_ Understood.  Are you saying my current implementation is off?  I'm totally fine with an alternate and (hopefully) better approach.
19:46 jberger http://irclog.perlgeek.de/mojo/2015-09-28#i_11288442
19:46 sri just making it work somehow is not enough, it needs to fit in flawlessly
19:46 jberger my comment is that a system that only supports linear dependencies is not sufficient to merit any changes, IMO
19:47 sri i agree with jberger
19:47 bpmedley_ jberger: Totally cool with that.  I just wanted a baseline.
19:47 jberger ok :p
19:48 sri honestly, i don't have high hopes for the feature, there's just too many problems, as we've discovered yesterday
19:48 bpmedley_ Any harm in trying?
19:48 bpmedley_ If the majority of time is mine.
19:48 sri of course not
19:48 bpmedley_ Cool
19:48 sri just don't want you to be sad later
19:49 bpmedley_ The head injuries don't allow sadness.. ;)
19:49 sri that sounds nice
19:51 jberger HODOR
19:51 jberger :-P
19:52 njlg joined #mojo
19:53 sri wait a minute, my problem with unspace has been fixed in perl6 :o https://p6weekly.wordpress.com/2015/09/28/2015-34-40-birthday/
19:54 sri now there's an infix .
19:54 Grinnz its version is ... "6.Birthday"???
19:54 Grinnz lol
19:55 sri "...if for no other reason than to refrain from giving the fluent programmers something to yammer on about"
19:55 sri lol
19:57 Grinnz \o/
19:59 Ptolemarch joined #mojo
20:03 jberger sri: now stop your yammering!
20:03 jberger \o\
20:03 jberger /o/
20:16 sri \o\
20:16 sri /o/
20:16 marcusr \o\
20:17 marcusr /o\
20:17 hernan605 )o)
20:17 marcusr ~~~~/)~~~\o/~~~~
20:19 disputin joined #mojo
20:23 jberger woah, what happened to marcusr ?
20:24 jberger oh, I get it, hahahahahah
20:24 * jberger gets a bigger boat
20:41 sue joined #mojo
20:47 Flying_Squirrel joined #mojo
20:50 absolut_todd joined #mojo
20:53 asarch joined #mojo
20:56 njlg joined #mojo
20:59 Onigiri So I'm looking at http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#WebSockets
20:59 Onigiri Is it possible to send messages through that, but not from a function from within that ->websocket?
21:00 Onigiri Basically I have a need to be able to send state changes as I load them from a phone switch.
21:01 bpmedley_ Onigiri: In a UserAgent script or a Mojolicious app?
21:02 Onigiri A UA script
21:02 Grinnz_ Onigiri: that example shows a ->send within the websocket connect callback
21:02 Grinnz_ er, thats not the connect callback, thats the route action
21:02 Grinnz_ no wait thats the UA
21:02 Grinnz_ i'm totally confused :)
21:02 Onigiri Grinnz_: yeah, so am I.
21:02 * Grinnz_ hasn't done websockets from Mojo::UA
21:03 Grinnz_ but yeah, it's the connect callback, then
21:03 Grinnz_ so what did you try?
21:03 Onigiri I'm rather indifferent as to what I use for this, as I'd like it to run within the parser script I already have running and loading items into a db.
21:04 Grinnz_ oh, "not" from a function within
21:04 Onigiri Yeah.
21:04 Grinnz_ well, you have to have a websocket open somewhere in order to send a websocket message
21:04 Grinnz_ each time you open one, the other end will regard it as a new connection
21:05 Grinnz_ generally you use websockets when you need a persistent connection to hang on to, and send messages periodically or reactively
21:05 Onigiri Which is a problem with the software I'm attempting to interface with.
21:05 Grinnz_ if you want to send a one-shot message, HTTP already works perfectly well ;)
21:05 Onigiri I need to open a socket, dump it the entire current state table, then feed it state state changes as they occur.
21:06 Onigiri Alternatively I can open a socket, dump it the entire current state table, then dump it the entire state table again at regular intervals.
21:06 Onigiri But I can't open a socket, send it, close the socket.
21:07 Grinnz_ right, if you want ot keep the websocket open, you'll need to hang onto it somewhere
21:07 Onigiri I figured that ua->websocket call did that all for me
21:08 jberger Onigiri: that builds the HTTP GET message that opens the websocket
21:08 jberger the $tx that you get in the callback needs to be held
21:09 Grinnz_ i don't know if that's true, but you won't be able to send to it without it
21:13 jberger what Grinnz_ said
21:14 Onigiri jberger: yeah, I'm not having any idea how to hold on to it, aside from a simple my $; before the ->websocket call... and a $t = $tx; in it. Which isn't working, of course
21:34 jberger Onigiri: https://gist.github.com/jberger/18023716fe090452daf2
21:37 jberger presumably that would be wrapped inside some functional logic, and my "input" is just a timer
21:37 jberger but from a conceptual standpoint, its about right
22:02 mudler joined #mojo
22:15 Onigiri So would I need to just build a fifo and check that with the timer to do what I'm after?
22:18 jberger no the timer is just a source of input
22:18 jberger I mean, you might want a timer if you have to poll for updates
22:19 jberger but if you are getting push notifications of updates (webhooks for example) you might not need it
22:25 * sri is tempted to add automatic retry to minion
22:26 sri with exponential delays
22:28 sri ->enqueue(foo => {retry => 5}) for 5 auto retries
22:28 sri in exponential intervals
22:29 sri sidekiq uses the formula (retry_count ** 4) + 15 + (rand(30) * (retry_count + 1))
22:29 meshl joined #mojo
22:30 sri oh, there's possible race conditions
22:32 sri if a job calls ->fail on itself, and the job gets reset to inactive, that means another woker could pick it up while it is still running :S
22:33 sri and then the first worker would transition it from active to finished because everything looks fine to it
22:33 sri argh
22:34 sri unfortunate side effect of how we finish jobs
22:35 sri we use $job->finish($result) from inside the task to set a result
22:35 sri but the parent always calls finish/fail as well https://github.com/kraih/minion/blob/master/lib/Minion/Job.pm#L30
22:36 sri normally that's not a problem, because the state doesn't match the second time
22:37 disputin joined #mojo
22:40 sri it can already be triggered by calling $job->finish; $job->retry; from indide a task
22:41 sri and then wait a little so another worker can pick it up
22:44 cpan_mojo Mojo-PDF-1.003002 by ZOFFIX https://metacpan.org/release/ZOFFIX/Mojo-PDF-1.003002
22:45 bpmedley_ jberger: https://bitbucket.org/snippets/bpmedley/yRa9x <-- How is this for Onigiri's question?
22:49 jberger bpmedley_: is that just the example from the doc?
22:50 jberger Onigiri is sending updates, why would there be a message callback?
22:50 bpmedley_ To check for state updates in the recurring callback.
22:50 jberger ?
22:51 jberger nm
22:51 bpmedley_ http://irclog.perlgeek.de/mojo/2015-09-28#i_11288932
22:51 jberger anyway I was trying to make an example wherein the timer (or really the data source) doesn't close itself
22:51 jberger since that's more like Onigiri's original spec
22:52 jberger right, that would be a send in the original sub
22:53 jberger $ua->websocket('/socket' => sub ($ua, $tx) { $tx->send(get_initial_state()); setup_differential_state_pusher($tx); });
22:53 jberger it doesn't need incoming messages at all
22:55 Flying_Squirrel joined #mojo
22:57 jberger I have updated my example for the initial state: https://gist.github.com/jberger/18023716fe090452daf2
22:58 bpmedley_ Hrmm.  So, what you're saying is that the main difference between our scripts is that the timer can be stopped outside of the websocket callback in yours?
23:04 sri jberger: btw. what happened to your minion ui?
23:04 jberger its still kicking around in github somewhere
23:05 jberger bpmedley_: first of all, yours is just a client, my demo had an app that shows how the other side would receive the updates (and print them, in this case)
23:06 sri :/
23:06 bpmedley_ jberger: I thought Onigiri stipulated that the goal was to create a UA client script?
23:06 CandyAngel I thought you had stopped work on it jberger?
23:11 gryphon joined #mojo
23:12 jberger bpmedley_: sure, but with the cost of a few more lines I have a working demo
23:13 jberger CandyAngel: it does work
23:13 jberger I was going to give it more polish, probably a better front-end framework
23:13 CandyAngel I.. what? I don't remember saying it disn't work :P
23:13 Onigiri bpmedley_: what I ultimatly want would be a self contained thing I can call ->send from in the main loop in another chunk of code. I realise this isn't very likely to happen so easily, or at all.
23:13 CandyAngel didn't*
23:13 CandyAngel Unlike my ability to type
23:16 jberger Onigiri / bpmedley_ : updated to use a more OO updater style
23:16 jberger https://gist.github.com/jberger/18023716fe090452daf2
23:16 jberger hopefully that makes it clearer what it is I am meaning and what is the demo
23:18 mattastrophe joined #mojo
23:20 Onigiri This makes it massively clear how to pull off what I've been trying to do. Thanks!
23:20 jberger np
23:21 Onigiri Hah, you can fork gists, that's kind of neat.
23:22 jberger yep
23:22 jberger they are just repos actually
23:23 jberger I have sometimes edited gists in vim and then commit+push
23:23 jberger or Mojolicious::Command::nopaste can create/update gists too
23:23 jberger (which is how I have pushed updates to this one)
23:23 Onigiri That gist though would probably be beneficial to slip into the cookbook#websockets section.
23:25 jberger the truth is, as shown, if you own the server side, I might just use a webhooks pattern
23:25 jberger but then you have to bootstrap things, so maybe this makes sense
23:25 Onigiri I don't own the server side.
23:25 Onigiri It's IEX.
23:25 jberger I don't know what that is?
23:26 Onigiri It's a stupidly overpriced callcenter piece of software.
23:26 Onigiri Basically real time queues and the like
23:26 jberger and it can accept updates via websocket?
23:26 jberger an interesting feature
23:26 Onigiri Yeah. It supports different telephony systems in this way.
23:27 Onigiri Of course where I work can afford to drop 1.5mil on this software, but decides to skimp on the telephony solution... so we get to write the interop portion.
23:28 jberger 1.5m??!
23:28 Onigiri Yeah.
23:28 Onigiri And that doesn't cover the hardware to run it.
23:28 jberger egad, how can I get a piece of that?!
23:28 Onigiri And of course they're skimping on the hardware too.
23:28 Onigiri Shooting directly for the 'minimum requirements' laid out in the documentation.
23:29 Onigiri Now the part that I find the most amusing is that the scheduler portion of it will need either a dedicated employee to work it.
23:29 Onigiri Or need 15 minutes of time to import the output of in house scheduler software.
23:30 jberger as in all things, a 30% engineering factor is recommended (re: minimum requirements)
23:31 Onigiri The stack is pretty much all java. tomcat etc. They also only have a min of 8 cores listed.
23:31 Onigiri I don't get why they don't just locate 50K worth of server gear and split it up.
23:31 Onigiri Since if you're buying the super expensive car, why would you put regular in it.
23:32 jberger have fun with that
23:33 Onigiri Thankfully I just have to write the data connector.
23:33 jberger 1.5m call center software being held together with 8 core and a mojo script :-P
23:33 Onigiri Yeah.
23:33 Onigiri This is for one of the telephony systems... another fellow is writing a connector for corvisa.
23:34 Onigiri Corvisa is a cloud telephony provider.
23:34 jberger "Duct tape for the HTML5 web"++
23:34 jberger show him your script when you are done, hopefully he'll be jealous
23:34 Onigiri He's doing the corvisa integration in c#
23:35 jberger there are some nice async features in c#
23:35 jberger or so I have been shown, I can't speak to it myself
23:35 Onigiri Yeah, that's how he was able to get the basics of his portion done in about an hour.
23:35 jberger :o we can't have that!
23:35 Onigiri Basically a drop in object that can deal with the heartbeat etc.
23:36 jberger anyway, your tests are going to be better than his
23:36 Onigiri Tests? pfft.
23:36 Onigiri I don't have time to write tests :/
23:36 jberger this is basically a test script as is
23:36 jberger (I know the feeling)
23:38 preaction you don't have time not to :p
23:56 cpan_mojo Minion-1.19 by SRI https://metacpan.org/release/SRI/Minion-1.19

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