Camelia, the Perl 6 bug

IRC log for #mojo, 2011-11-15

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

All times shown according to UTC.

Time Nick Message
00:30 berov left #mojo
00:51 mattastrophe joined #mojo
00:58 MojoGuest665 joined #mojo
00:58 MojoGuest665 From: http://news.ycombinator.com/item?id=1277067 (105 hits)
01:00 MojoGuest659 joined #mojo
01:00 MojoGuest659 From: http://news.ycombinator.com/item?id=1277067 (106 hits)
01:02 Sjors sri: you still there? I've been debugging the problem with Nickeeh
01:02 MojoGuest980 joined #mojo
01:02 MojoGuest980 From: http://news.ycombinator.com/item?id=1277067 (107 hits)
01:03 MojoGuest58 joined #mojo
01:03 MojoGuest58 From: http://news.ycombinator.com/item?id=1277067 (113 hits)
01:03 Sjors sri: it appears the 'drain' callback is implemented by calling _write in the Server::Daemon
01:04 Sjors sri: which calls get_body_chunk in the Result object, which proceeds to call resume
01:04 Sjors sri: which calls _write again... ergo, for every 'drain' callback in Server::Daemon, there are two new drain-callbacks added back into the list
01:05 Sjors sri: those two will add one more themselves, making 4... then 8... etc, leading to our exact results
01:06 Zombie430 joined #mojo
01:06 Zombie430 From: http://news.ycombinator.com/item?id=1277067 (114 hits)
01:11 MojoGuest167 joined #mojo
01:11 MojoGuest167 From: http://news.ycombinator.com/item?id=1277067 (115 hits)
01:12 MojoGuest167 test
01:33 SmokeMachine joined #mojo
01:47 jnap joined #mojo
02:03 sri Sjors: easy to fix
02:05 jwang joined #mojo
02:07 Sjors sri: I'm pretty sure it happens like this, but haven't come up with a patch yet to see if this fixes the problem:
02:07 sri already have it fixed here
02:07 Sjors sri: oh awesome
02:08 sri finding a reliable test case could take some time though...
02:08 Sjors sri: if I tell you what I think what it was, could you tell me if it was the problem? ;-)
02:08 sri it was
02:08 sri it was _write getting called twice
02:08 Sjors once by the drain callback, and once by the resume callback, I think
02:09 * sri nods
02:09 Sjors awesome :D
02:09 Sjors sri: do you have a patch for me so I can apply it here?
02:11 sri http://pastie.org/2864922 # in Mojo::Server::Daemon
02:11 sri i only have it in the Mojo::IOLoop refactor branch atm, so no real patch
02:11 sri and i might later decide to fix it on another layer
02:12 sri but it should make it work for you at least
02:13 sri perl -Ilib -Mojo -E'a("/" => sub { my $self = shift; my $i = 0; my $cb; $cb = sub { shift->write_chunk(" " . $i++, $cb) }; $self->$cb })->start' get /
02:13 sri that's my test oneliner
02:13 Nickeeh sri: woohooo!
02:13 Nickeeh Just saw it working.
02:13 Sjors sri: the testcase works. awesome awesome. :D
02:13 Nickeeh Thanks bunches.
02:13 Sjors fantastic. :D
02:14 sri we need a uni test though, so it never breaks again
02:15 sri *+t
02:16 Sjors sri: a "real" test could be to do write_chunk a few times, then see how many drain events there are left
02:17 Sjors sri: a hacky test that doesn't look at implementation might be to do two write_chunks, the time for more write_chunks should grow somewhat linearly; if they don't, the test fails
02:17 Sjors but both have pros and cons
02:17 Nickeeh Perhaps open a socket to yourself, call write_chunk(), see if you can read() from the socket?
02:18 sri very unreliable
02:19 sri need something that avoids timing issues
02:19 sri introspecting the event system sounds reasonable
02:26 MojoGuest137 joined #mojo
02:26 MojoGuest137 From: http://news.ycombinator.com/item?id=1277067 (116 hits)
02:26 MojoGuest147 joined #mojo
02:26 MojoGuest147 From: http://news.ycombinator.com/item?id=1277067 (117 hits)
02:55 SmokeMachine joined #mojo
03:03 mire joined #mojo
03:03 Eugene joined #mojo
03:42 gshank joined #mojo
03:56 MojoGuest423 joined #mojo
03:56 MojoGuest423 From: http://www.google.com/url?sa=t&rct=j&​q=html5%20irc&source=web&cd=5&sqi​=2&ved=0CEsQFjAE&url=http%3A%2F%2Fdev​.xantus.org%2F&ei=xOLBToT2JojqrAfi8ZHLCw&​amp;usg=AFQjCNGw6nZv0wO42uzUnHhWcD0vcKNULg (1 hits)
03:56 MojoGuest423 yoyoo
03:56 MojoGuest423 nice
04:00 MojoGuest699 joined #mojo
04:00 MojoGuest699 From: http://extjstutorial.org/extjs/moj​o-websocket-demo-extjs-irc-client/ (7 hits)
05:13 tempire_ joined #mojo
06:44 koban joined #mojo
06:59 Vandal joined #mojo
07:01 Eugene joined #mojo
07:09 tempire_ Next mojocast will be about user agent.  I need a web service that serves json, something common requiring no authentication
07:11 tempire joined #mojo
07:13 smpb joined #mojo
07:19 Eugene joined #mojo
07:22 arpadszasz joined #mojo
07:40 esskar joined #mojo
07:44 esskar joined #mojo
07:46 sugar joined #mojo
08:01 arthas joined #mojo
08:02 Foxcool joined #mojo
08:15 Foxcool_ joined #mojo
08:27 berov joined #mojo
08:46 Eugene joined #mojo
08:56 Mikey joined #mojo
09:07 smpb joined #mojo
09:24 spleenjack joined #mojo
09:34 cosmincx joined #mojo
10:43 andrefs joined #mojo
10:44 smpb_ joined #mojo
10:45 azawawi joined #mojo
11:06 fury joined #mojo
11:29 Maximdd123 joined #mojo
11:30 Maximdd123 Hello guys. I need a small advise regarding Mojo::UserAgent. Would anyone be able to assist me? Thanks in advance
11:51 Quai (just ask the question, and people will answer if they can and have time to answer)
11:55 Maximdd123 i'm trying to make basic auth. but unfortenatly it's not working.
11:55 Maximdd123 my $ua = Mojo::UserAgent->new;
11:55 Maximdd123 my $res = $ua->get('http://USER:PASS@127.0.0.1/test'); which returns error
11:55 Maximdd123 what is the correct way to perform this? cannot find anything in docs
12:01 Vandal can you auth with browser?
12:02 Maximdd123 yes, i can, wait a minute, let me try to use HTTP::Request
12:04 Quai just tried it myself, and it works here. (Stupid question, but, you are not forgetting to escape the @ in a doublequoted string? ;P)
12:05 Maximdd123 damn it!
12:05 purl Janet!
12:05 Maximdd123 thanks Quai ;)
12:06 Quai ;D
12:07 Quai been there, done that.
12:12 Psyche^ joined #mojo
12:14 baton8 joined #mojo
12:37 * sri yawns
12:54 sri user agent was also affected by the resume bug
13:02 noganex_ joined #mojo
13:18 jnap joined #mojo
13:44 crab it didn't update its résumé properly?
13:46 yko joined #mojo
13:46 * sri nods
13:50 sugar joined #mojo
14:02 d4rkie joined #mojo
14:07 marcus YOU'RE FIRED!
14:09 xileph joined #mojo
14:11 stephan48 marcus: good
14:14 xileph joined #mojo
14:23 metaperl joined #mojo
14:26 GitHub134 joined #mojo
14:26 GitHub134 [mojo] kraih pushed 1 new commit to master: http://git.io/ycH7oA
14:26 GitHub134 [mojo/master] deprecated many methods in Mojo::IOLoop and fixed multiple drain callback bugs - Sebastian Riedel
14:26 GitHub134 left #mojo
14:29 sri http://mojolicio.us/perldoc/Mojo/IOLoop#SYNOPSIS
14:29 sri think i like how it turned out
14:30 sri it's a lot closer to the infividual Mojo::IOLoop::* classes
14:31 marcus sri: I like the synopsis.
14:32 marty sri: Very nice and clean.  I see you got rid of $id and $error
14:32 sri nope
14:32 sri they are just hidden
14:32 marty ahhh, ok
14:32 sri if you need them they are still the third argument
14:32 marty Looks good
14:33 marty That's sweet.  very flexible.
14:34 marty I think it's definitely an improvement.
14:34 sri i've also considered a more complex solution like "my $server = Mojo::IOLoop->server(port => 3000); $server->on(accept => sub {…});"
14:36 sri but that kinda defeats the purpose
14:36 sri you can always just roll your own server with Mojo::IOLoop::Server->new, this is supposed to be a shortcut
14:42 yko joined #mojo
14:42 BinGOs oh great. now I have to rewrite stuff.
14:43 sri it's not final yet
14:44 koban left #mojo
14:44 sri and the old api is just deprecated, so you have time
14:46 sri also hope you're not suing it as a general purpose event loop, because it is not
14:46 sri hehe… suing
14:47 BinGOs I am.
14:47 sri :S
14:47 BinGOs Why reinvent one, when sri is doing it for me?
14:48 sri it's simply not ready
14:51 sri we are only just starting to go all out with events
14:54 sri in fact, i've marked the new client/server methods as experimental, since i have no idea where the journey is heading
14:57 sri in case it isn't obvious already, i'm kinda aiming for the mojolicious core to be a mini-node.pl
15:02 sri turns out, making events fun is hard
15:02 sri but i think the subscriber model is the right way
15:03 BinGOs well, what I was working on is back on round-tuit pile.
15:18 arpadszasz joined #mojo
15:19 MojoGuest93 joined #mojo
15:19 MojoGuest93 From: http://news.ycombinator.com/item?id=1277067 (118 hits)
15:21 marcus BinGOs: while you enjoy hacking on certificates on windows 2000? ;)
15:27 BinGOs that was a one-off experience really.
15:55 sri marcus: btw. the writ event is now in, you can have your custom logging of http messages
15:55 sri *+e
15:55 marcus sri: \o/
15:56 sri really fun, you could forward the raw data that goes over the wire to a log file
16:00 sri or actually… you need an entry point first
16:00 * sri scrathes head
16:03 sri perhaps a connection event on the transaction
16:04 sri that gets emitted as soon as a connection has been assigned to the transaction
16:13 MojoGuest511 joined #mojo
16:13 MojoGuest511 From: http://blog.kraih.com/?page=3 (1 hits)
16:26 SmokeMachine joined #mojo
16:37 kaare joined #mojo
17:04 sri yea, works flawless with a connection event
18:20 MojoGuest280 joined #mojo
18:20 MojoGuest280 From: http://news.ycombinator.com/item?id=1277067 (119 hits)
18:46 grim_fandango joined #mojo
18:48 mattastrophe joined #mojo
19:00 tempire mojocast #4 got about 2/3 of the attention of #3
19:00 tempire the differences were that it wasn't posted to hacker news, and that sri didn't tweet it.
19:00 tempire it could also be the topic.
19:00 elb0w_ tempire: id like a mojocast with proper backend db/mongo use
19:00 elb0w_ :o
19:01 tempire but I'm tending to believe that the best marketing thus far is sri's tweet stream.
19:01 tempire attention is fairly consistent day to day for the site, so more tweets and like flow in through the month.
19:01 tempire *and likes
19:01 tempire but the initial wave helps.
19:02 tempire it could also be the time lag - the previous episode was 2 months ago.
19:02 elb0w_ yeah why no daily casts?
19:02 elb0w_ should do a cast on each module
19:02 elb0w_ post a link on each cpan page
19:02 tempire elb0w_: when the mongodb driver is done
19:03 elb0w_ sri: done yet?
19:03 tempire that's not really where I want to go with it.
19:03 elb0w_ just seems like a major issue to me
19:03 tempire if people are already on the doc page, they can read the docs.
19:03 elb0w_ scaling wise
19:04 sri tempire: interesting
19:04 tempire I was hoping to get #4 out before the perl weekly was released.
19:05 sri elb0w_: no
19:05 elb0w_ sri what will the driver do when you are done
19:06 tempire it will completely replace 10gen's existing connector.
19:06 elb0w_ I mean what will be the benefiet to use it in mojo
19:06 elb0w_ it will still block no?
19:06 sri non-blocking and fun
19:06 elb0w_ How does it not block
19:07 sri just like the user agent
19:07 elb0w_ I dont think I understand the non blocking concept well enough
19:08 sri if you like the official driver just use it, this one is just something fun i primarily build for myself
19:09 elb0w_ I dont like / used any before
19:09 elb0w_ just interested in the concepts applied to make this all work
19:09 elb0w_ not my normal scope of things
19:09 sri you'll have to understand non-blocking, otherwise it won't make any sense to you
19:09 elb0w_ yeah ill read about it
19:10 tempire elb0w_: this will fill in all the gaps, and much more:
19:10 tempire http://www.dabeaz.com/coroutines/Coroutines.pdf
19:10 elb0w_ thanks
19:10 tempire long, but very complete.
19:11 elb0w_ reading it now
19:13 batman elb0w_: everything blocks. it's just a matter of how long something blocks :)
19:13 mire joined #mojo
19:14 elb0w_ batman: yeah so even in a non blocking architecture there could be a case when it gets blocked no?
19:14 batman elb0w_: yes. but it only blocks for as little time as necessarily
19:15 elb0w_ gotcha
19:15 batman elb0w_: like a normal "blocking" function would be something like this: $data = read_data_from_database();
19:15 batman this means that your programs stops on that line for as long as it takes
19:16 batman "as long as it takes" = building the request, waiting for the server to handle the request, waiting for .... and then receiving the answer and decoding it
19:16 tempire it's the same process for how an os works
19:16 tempire there has to be some sort of yield for other processes
19:16 elb0w_ yeah I get the reactor pattern, if there is no data it keeps iterating
19:16 tempire all based on one basic rule: a thing can only do one thing at a time.
19:17 batman while in a non-blocking environment, you would do something like this: read_data_from_database(\&cal​l_me_when_data_is_received);
19:18 batman which means that the code can continue to execute other statements, but at some point call_me_when_data_is_received() will be called when the data is received
19:18 batman that piece of code block may be blocking, but it it only blocks for a fraction of a second, it may *seem* as it is not blocking
19:18 batman and voila, you got non-blocking :)
19:19 elb0w_ Ok so thats pretty much what I figured
19:19 elb0w_ I guess I am missing the knowledge of how that would handle the response and render the page
19:19 elb0w_ like a hypno setup
19:19 elb0w_ if I have a hypno server with 1 worker and I make a request to the db, when it calls for data how could it serve someone else if their request is faster than the first
19:20 elb0w_ Are there internal session ids that it knows who to render to?
19:20 * elb0w_ brain stops working at this part
19:21 batman it can't. because the blocking request to the db does not seem non-blocking, simply because it blocks toooo long
19:21 batman if you have a really, really, really fast db it will work. but that is hardly ever the case :(
19:21 elb0w_ so it still handles the requests synchronously, the goal is to just be faster
19:21 batman yes
19:21 batman which is very difficult :(
19:22 elb0w_ So pretty much its a loop that checks to see if data is ready and if it isnt it does anything else it needs to that doesnt require data
19:22 batman so instead you may want to fork off a lot more workers and get a load balancer ;)
19:22 batman elb0w_: spot on
19:22 elb0w_ but it only does that for the one user whose requested the original data
19:23 elb0w_ who*
19:23 elb0w_ dont know if I explained that right
19:23 batman i didn't get that last part
19:24 elb0w_ sec im gonna write it clearer into a pastebin
19:27 smpb joined #mojo
19:28 elb0w_ tried to be as clear as possible, http://pastie.org/2868590
19:28 elb0w_ User2 makes that request while givehimdata is still running
19:28 SmokeMachine joined #mojo
19:28 batman _doSomethingElse() will block user2
19:29 elb0w_ it would block even if it werent there no?
19:29 elb0w_ the _doSomethingElse would be quick
19:29 batman err... wait a sec
19:30 mire joined #mojo
19:31 batman i'm guessing _doSomethingElse() would allow rendering data for user2... but i'm not sure about the pastebin
19:31 batman let me try to modify it a bit...
19:32 sri the while (1) is garbage
19:32 sri you would let the event loop do the polling
19:32 elb0w_ yeah was just real quick, I didnt put any thought into this
19:32 batman sri: wouldn't whiel(1) be the event loop?
19:32 elb0w_ Thats what I meant it
19:32 sri in the hypnotoad case the web server is the event loop
19:33 sri ok, then i just don't get the paste
19:33 elb0w_ im just trying to understand how a non blocking request would effect everyone else
19:33 batman elb0w_: i think you got it backwards
19:33 elb0w_ I wouldnt be suprised
19:34 batman elb0w_: a non-blocking request will ALLOW everyone else to get CPU time
19:34 elb0w_ but how does the server know where to send the response when it does get the data?
19:34 sri maybe you're a visual learner, let me give you an example
19:34 elb0w_ sri: I am
19:34 elb0w_ would be appreciated thanks
19:34 * sri is too
19:35 batman elb0w_: it will know when to send the data, when the data is ready :)
19:36 elb0w_ does it have an id?
19:36 batman ah! sorry. i read "when", not "where" :/
19:36 batman elb0w_: yes
19:36 batman elb0w_: or...sort of :)
19:36 batman elb0w_: it may be fixed in may ways, but thinking it has an ID is quite accurate way to think about it
19:37 batman s/fixed/done/
19:38 elb0w_ hmm
19:38 sri elb0w_: https://gist.github.com/1368085
19:38 elb0w_ ty
19:39 sri you can request /nodelay even while 1000 requests for /delay are active
19:39 sri and get an immediate response
19:40 sri io watchers work just like the timer
19:40 elb0w_ very cool
19:40 batman sri: does that code work? you don't need to say $self->render_later...?
19:40 sri so even if the db needs 3 seconds to respond you can handle other requests in the meantime
19:41 sri batman: render_later only prevents auto rendering, this app has no templates, so it's not necessary
19:41 batman ok
19:41 sri render_later would be slightly more efficient
19:41 batman even *less* blocking ;)
19:42 sri indeed
19:42 batman hehe
19:43 elb0w_ sri so in this example morbo is an event loop and the /delay with I guess the generated id of my request just gets polled every iteration to see if its available? Otherwise it hits all other requests that it has data for?
19:43 elb0w_ data being the timer
19:44 sri it just waits for the timer, $self is preserved in the closure, and the transaction is bound to the socket
19:44 sri there are many layers
19:44 batman sri: do you require morbo for non-blocking? how does this work with plackup -s FCGI ?
19:44 sri it doesn't
19:45 batman makes sense...
19:45 purl i think makes sense is http://xrl.us/bjq3kq
19:45 sri it's way beyond the scope of PSGI
19:46 sri we can only try to play nice with as many event loops as possible
19:46 elb0w_ so I guess im not understanding why the db call cant work like this
19:46 batman sri: guess i better replace my nginx setup with morbo then... just for fun :)
19:46 sri which we do with the iowatcher layer
19:46 sri i recommend hypnotoad behind nginx
19:47 batman elb0w_: because if you do $dbh->fetch_foo; it may block for three seconds, which again will not free cpu time for other requests
19:47 batman elb0w_: you need a non-blocking db layer as well
19:48 elb0w_ oh
19:48 elb0w_ so everything is pretty much an event loop?
19:48 elb0w_ intertwined?
19:48 batman everything IS NOT an event loop
19:48 batman that's the problem :)
19:48 sri DBI is very egoistical and basically stops the whole process until it has a response
19:48 elb0w_ ok
19:48 elb0w_ right now my mental picture is pretty much this http://linked2leadership.files.wordpress.com/​2009/04/spinning-plates1.jpg?w=146&h=150
19:49 elb0w_ inside a big plate
19:49 elb0w_ rofl
19:49 elb0w_ big plate = webserver
19:49 sri that guy is an event loop
19:49 elb0w_ ok cool
19:50 elb0w_ I think I have a better grasp
19:50 batman elb0w_: have you ever used select() ?
19:50 elb0w_ batman: no but ive grazed its docs a few times
19:50 * sri is still not any closer to finding a good (simple) explanation for events and non-blocking I/O :S
19:51 elb0w_ honestly a video with someone talking it and writing a raw basic example
19:51 elb0w_ would do it for me
19:51 batman ok. since it may block or not block. dependent of the usage...
19:51 elb0w_ I cant seem to find that
19:52 batman http://www.youtube.com/watch?v=lzS2Tkxu9y4 ?
19:53 sri oh, that's not bad
19:53 sri dns might also be a good example
19:54 sri i suppose more people understand ping though
19:55 sri damn...
19:55 batman ?
19:55 sri just wanted to add an external connection pool to Mojo::UserAgent… but it makes the whole thing 20% slower :(
19:56 batman uhm... ok
19:56 * batman has no idea :P
19:56 batman :)
19:56 sri it would allow for a single keep alive connection pool to be shared by many user agents
19:57 elb0w_ ok I get it
19:57 elb0w_ so its not really anything I didnt sort of grasp
19:57 elb0w_ Its the other layers I need to understand better
19:57 elb0w_ thanks for all your help batman,sri
19:57 elb0w_ really appreciate it
19:58 batman sri: how do you hook up hypnotoad with nginx?
20:00 elb0w_ batman: you use upstream
20:00 batman upstream?
20:00 purl upstream is core right now, since xdg didn't want to be patch manager anymore and neither did anyone else
20:00 elb0w_ yeah you use it as a reverse proxy
20:01 elb0w_ so you like nginx take in ssl and http traffic
20:01 elb0w_ and redirect it to your hypno server running locally
20:01 elb0w_ http://mojolicio.us/perldoc/Moj​olicious/Guides/Cookbook#Nginx
20:02 batman sweet
20:02 elb0w_ I wrote a makefile
20:02 elb0w_ for my prod system
20:02 elb0w_ to automate it all for me
20:05 elb0w_ makefile: https://gist.github.com/1368150 , nginx conf gen: https://gist.github.com/1368152 , hyp conf: {pid_file => '/tmp/eyecu.pid', local_file => '/tmp/eyecu.lock'}
20:05 elb0w_ if you wanted it
20:05 elb0w_ sorry makefile url is here, https://gist.github.com/1368150
20:05 andrefs joined #mojo
20:06 elb0w_ rofl may need to change eyecu to myapp
20:06 elb0w_ in some of the other stuff i missed
20:09 elb0w_ pretty convienent to start a new server
21:09 GitHub122 joined #mojo
21:09 GitHub122 [mojo] kraih pushed 3 new commits to master: http://git.io/ulTO5A
21:09 GitHub122 [mojo/master] added experimental connection event to Mojo::Transaction - Sebastian Riedel
21:09 GitHub122 [mojo/master] fixed small attribute selector bug in Mojo::DOM::CSS - Sebastian Riedel
21:09 GitHub122 [mojo/master] small optimizations - Sebastian Riedel
21:09 GitHub122 left #mojo
21:17 sri marcus: here's a full example https://github.com/kraih/mojo/blo​b/master/t/mojo/user_agent.t#L167
21:20 sri you could just log everything that goes over the wire that way
21:31 mercutioviz joined #mojo
22:00 andrefs joined #mojo
22:26 sri wonder if Mojo::IOLoop should emit events too… like on(timer) or on(stream)
22:29 MojoGuest910 joined #mojo
22:29 MojoGuest910 From: http://www.google.com/url?sa=t&rct=j&amp​;q=websocket%20demo&source=web&cd=9&​amp;ved=0CFcQFjAI&url=http%3A%2F%2Fdev.x​antus.org%2F&ei=_uLCTor0JY2EtgfQgZXlDQ&a​mp;usg=AFQjCNGw6nZv0wO42uzUnHhWcD0vcKNULg (1 hits)
22:30 MojoGuest910 arf
22:31 MojoGuest365 joined #mojo
22:31 MojoGuest365 From: http://www.google.com/url?sa=t&rct=j&amp​;q=websocket%20demo&source=web&cd=9&​amp;ved=0CFcQFjAI&url=http%3A%2F%2Fdev.x​antus.org%2F&ei=_uLCTor0JY2EtgfQgZXlDQ&a​mp;usg=AFQjCNGw6nZv0wO42uzUnHhWcD0vcKNULg (2 hits)
22:37 MojoGuest449 joined #mojo
22:37 MojoGuest449 From: http://www.google.com/url?sa=t&rct=j&amp​;q=websocket%20demo&source=web&cd=9&​amp;ved=0CFcQFjAI&url=http%3A%2F%2Fdev.x​antus.org%2F&ei=_uLCTor0JY2EtgfQgZXlDQ&a​mp;usg=AFQjCNGw6nZv0wO42uzUnHhWcD0vcKNULg (3 hits)
22:37 MojoGuest449 left #mojo
22:37 MojoGuest232 joined #mojo
22:37 MojoGuest232 From: http://www.google.com/url?sa=t&rct=j&amp​;q=websocket%20demo&source=web&cd=9&​amp;ved=0CFcQFjAI&url=http%3A%2F%2Fdev.x​antus.org%2F&ei=_uLCTor0JY2EtgfQgZXlDQ&a​mp;usg=AFQjCNGw6nZv0wO42uzUnHhWcD0vcKNULg (4 hits)
22:38 abra joined #mojo
22:41 GitHub102 joined #mojo
22:41 GitHub102 [mojo] kraih pushed 1 new commit to master: http://git.io/KTtGow
22:41 GitHub102 [mojo/master] updated some Mojo::IOLoop attribute descriptions - Sebastian Riedel
22:41 GitHub102 left #mojo
23:03 xaka joined #mojo
23:05 metaperl joined #mojo
23:46 gshank_ joined #mojo

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