[04:25] *** Lawouach_ has joined #kamaelia |
[07:12] *** vmlemon_ has joined #kamaelia |
[08:08] *** vmlemon_ has joined #kamaelia |
[08:54] *** Uraeus has joined #kamaelia |
[08:56] *** Uraeus_ has joined #kamaelia |
[09:06] *** Uraeus__ has joined #kamaelia |
[10:36] *** vmlemon_ has joined #kamaelia |
[10:46] *** MS- has joined #kamaelia |
[10:47] < MS-> For those who may note have seen it, the kamaelia videos are now available on blip.tv |
[10:47] < Lawouach_> cool |
[10:47] < MS-> Details: http://groups.google.com/group/kamaelia/msg/ff6bcad3804106fa |
[10:48] < MS-> Process of transcoding here: |
[10:48] < MS-> http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&nodeid=1246925071 |
[10:48] < Lawouach_> I saw that on planetpython yeah |
[10:48] < MS-> I thought that a nice way of answering lots of incoming questions :) |
[10:49] < vmlemon_> Heh, http://holgr.com/blog/2009/07/07/about-licenses-photos-and-online-mobs/ |
[10:49] < vmlemon_> Classy |
[11:11] < MS-> OK, uploading from work is a MUCH better idea overall. |
[11:12] < MS-> 783.80 kB/s |
[11:33] < MS-> aa_: your tutorial is now fully uploaded to blip.tv. I'll let you know when it's transcoded. |
[11:33] < MS-> At some point though, I'll sit down and re-record it, since as you noted it's not very photo-genic |
[11:33] < MS-> Though if walked through with a camera it would probably work well. |
[11:47] < Lawouach_> arggh |
[11:48] < Lawouach_> Selector component has some very hurtful pauses |
[11:48] < Lawouach_> way too long for high load |
[11:49] < Lawouach_> it took me some time but finally traced it down to a nasty self.payse(0.5) in the Selector component |
[11:50] < Lawouach_> on my local machine using the loopback I'm not on a 15ms for a ping/pong message (XMPP) when I used to be at 110ms |
[11:50] < Lawouach_> purely due to that pause |
[11:51] < MS-> really? |
[11:52] < Lawouach_> yeap |
[11:52] < Lawouach_> look line around 339 of the selector component |
[11:52] < MS-> you mean inside here: |
[11:52] < aa_> MS-: wow thanks |
[11:53] < MS-> elif not self.anyReady(): |
[11:53] < MS-> aa_: You're welcome |
[11:53] < Lawouach_> MS-: yes |
[11:53] *** aa_ is having one of those stamped on his iphone costing 400 quid days |
[11:53] < Lawouach_> I've switched from 0.5 to 0.01 |
[11:54] < Lawouach_> and I have much better results |
[11:54] < MS-> That's really weird |
[11:54] < Lawouach_> why is that? |
[11:55] < MS-> well, that branch should only be entered if there's nothing to call select on. |
[11:55] < MS-> and if there's no data in an inbox |
[11:55] < MS-> Oh. |
[11:55] < MS-> I wonder |
[11:56] < MS-> Logic is |
[11:56] < MS-> if len(readers) + len(writers) + len(exceptionals) > 0: |
[11:56] < MS-> #do select stuff |
[11:56] < MS-> elif not self.anyReady(): |
[11:56] < MS-> # no readers, writers, or anything - wait a few moments just in case |
[11:56] < MS-> But, I'm wondering what's up with the pause |
[11:58] < MS-> It *should* wake up instantly |
[11:58] < Lawouach_> hang on |
[11:58] < MS-> (even reading Axon.ThreadedComponent) |
[11:58] < Lawouach_> I'm wondering as well if I'm correct here |
[11:58] < Lawouach_> grumble |
[11:58] < Lawouach_> shouldn't be changing more than one parameter at a time |
[11:58] < Lawouach_> let me start over |
[11:58] < Lawouach_> sorry |
[11:59] < MS-> np |
[11:59] < Lawouach_> BTW, http://pastebin.ca/1486905 |
[11:59] < Lawouach_> I've added a couple of print statements in Microprocess |
[11:59] < Lawouach_> they are quite valuable to find out which component takes time |
[11:59] < Lawouach_> a lot of traces but that's helping nonetheless |
[12:00] *** MS- nods |
[12:00] < Lawouach_> just GYI ;) |
[12:00] < Lawouach_> FYI |
[12:00] < MS-> There's somewhere in sketches a component that will tell you which component is taking up time btw |
[12:00] < MS-> ie a bit like top |
[12:01] < Lawouach_> handy |
[12:01] < MS-> http://kamaelia.googlecode.com/svn/trunk/Sketches/MH/Introspection/Profiling.py |
[12:05] < Lawouach_> right |
[12:05] < Lawouach_> actually found the culprit |
[12:05] < MS-> Really ought to add that Profiler into core somewhere sensible |
[12:05] < MS-> Probably into Axon itself |
[12:06] < Lawouach_> nope |
[12:06] < MS-> Or with the introspection components |
[12:06] < Lawouach_> not even a pb with my code nor yours |
[12:06] < Lawouach_> I'm using ejabberd |
[12:06] < MS-> And that's the problem ? |
[12:06] < Lawouach_> and there is a throughput limitor |
[12:06] < Lawouach_> which by default is rather low |
[12:06] < Lawouach_> too low |
[12:06] < MS-> Ah. |
[12:06] < Lawouach_> by increasing it a bit I'm having normal results |
[12:07] < Lawouach_> sigh :) |
[12:07] < MS-> So the bug is the code is sufficiently capable, it's hitting limits in a seperate system ? |
[12:08] < Lawouach_> yes |
[12:08] < Lawouach_> the code actually runs fine |
[12:08] < MS-> I can live with that sort of bug :) |
[12:08] < Lawouach_> eh eh :) |
[12:08] < Lawouach_> I'm actually pusing teh whole stack rather hard |
[12:08] < Lawouach_> and I'm rather pleased with the performances I see from it |
[12:08] < Lawouach_> at least in the constraints I have |
[12:08] < MS-> That is useful to do and nice to hear :) |
[12:12] < Lawouach_> no doubt |
[12:12] < Lawouach_> It's funny "no doubt" would be an exception to the "no TERM+s" rule? |
[12:12] < Lawouach_> like "no worries" |
[12:12] < Lawouach_> or is my English wrong again? |
[12:13] < MS-> I'm not sure I understand the ''' "no TERM+s" rule''' |
[12:13] < MS-> :) |
[12:13] < MS-> I've yet to see a situation where your english is wrong for what it's worth :) |
[12:13] < Lawouach_> thanks |
[12:14] < Lawouach_> Well, I've always heard things like "no worries" rather than "no worry" |
[12:14] < Lawouach_> where the term following "no" is plural |
[12:14] < Lawouach_> not singular |
[12:14] < MS-> Ah, I see |
[12:15] < MS-> I think you're right, most things can be plural or would be plural there |
[12:15] < MS-> but you wouldn't say "no doubts" |
[12:15] < Lawouach_> fair enough |
[12:15] < Lawouach_> we have exceptions too |
[12:16] < Lawouach_> in fact we often say "The exception makes up the rule" |
[12:16] < MS-> English has everyone's exceptions |
[12:16] < Lawouach_> eh eh |
[12:16] < MS-> Like i after e except after c is patently false |
[12:16] < Lawouach_> I've learnt that yeap |
[12:16] < MS-> I gave up on it years ago, and then decided to play with grep and /usr/dict/words |
[12:16] < MS-> and felt rather justified at getting it wrong :) |
[12:18] < Lawouach_> heehee |
[12:19] < MS-> well, I just failed the UK citizenship test |
[12:19] < MS-> http://www.ukcitizenshiptest.co.uk/ - 12 out of 24 |
[12:20] < Lawouach_> let's see |
[12:20] < Lawouach_> darn it's slow |
[12:21] < Lawouach_> right we'll see later, once I've managed to respond the first question |
[12:21] < Lawouach_> ahem |
[12:23] < MS-> heh :) |
[12:23] < MS-> I got the first question wrong :) |
[12:30] < Lawouach_> :) |
[12:31] < Lawouach_> I'm doing some various tests against ejabberd and my XMPP lib |
[12:32] *** MS- nods |
[12:32] < MS-> I suspected that was the case |
[12:32] < Lawouach_> I'm setting one XMPP service using headstock |
[12:32] < Lawouach_> :) |
[12:32] < MS-> I'd be interested in reading a summary of that at some point. |
[12:32] < Lawouach_> a XMPP component as per the spec is a service which acts as an extension of the server |
[12:33] < Lawouach_> so if you send a message/stanza to that service, the servers forwards it to the component |
[12:33] < Lawouach_> usually they are written in erlang and loaded as part of ejabberd |
[12:33] < Lawouach_> but you can write them in anything as long as you follow XEP 114 |
[12:33] < MS-> service as in XMPP service or service as in kamaelia service ? |
[12:33] < Lawouach_> which headstock does |
[12:33] < MS-> Ah, OK |
[12:33] < Lawouach_> XMPP service |
[12:33] < MS-> cool |
[12:33] < Lawouach_> yes |
[12:34] < Lawouach_> well by stressing with 200 clients, I'm reaching between 15000 and 20000 messages per second |
[12:34] < Lawouach_> XMPP messages |
[12:34] < MS-> Through what sort of hardware ? |
[12:34] < MS-> That sounds good :) |
[12:35] < Lawouach_> not too shaby for some code that hasn't been really optimised yet |
[12:35] < Lawouach_> well the hardware is good |
[12:35] < MS-> Indeed :) |
[12:35] < Lawouach_> 4 cores |
[12:35] < Lawouach_> 4Gb of RAM |
[12:35] < MS-> Is any of the code using multiple cores ? |
[12:36] < Lawouach_> well I think yes |
[12:36] < MS-> cool |
[12:36] < Lawouach_> i'm actually starting 4 Python processes using a bash script |
[12:36] < Lawouach_> each running 50 XMPP clients in its own Axon scheduler |
[12:36] < MS-> Ah :) |
[12:36] < MS-> That will always work too :) |
[12:36] < Lawouach_> :p |
[12:37] < MS-> bash is underrated |
[12:37] < Lawouach_> I actually managed around 25000 stanza/s |
[12:37] < Lawouach_> indeed |
[12:38] < MS-> I have no real basis for comparison, but those do sound like good numbers |
[12:38] < Lawouach_> well I don't have yet basis for comparison either |
[12:38] < Lawouach_> I need to write the same piece of service in erlang |
[12:38] < Lawouach_> that'd be the reference |
[12:39] < MS-> I'm certain that that would show that kamaelia still has some way to go. |
[12:40] < Lawouach_> well i'm sure we could get better performances if I was to clean up my code and optimise it a bit, coupled with a better scheduler would help as well |
[12:40] < Lawouach_> I think Kamaelia has plenty to go |
[12:42] *** MS- nods |
[12:42] < MS-> Now, if the GIL was removed and threadedchassis was implemented though, then that would open up a much nicer model for coding for multicore |
[12:43] < Lawouach_> yeah well i'll bet on bash for now then |
[12:43] < Lawouach_> :) |
[12:45] *** salmon_ has joined #kamaelia |
[12:45] < MS-> Indeed :) |
[12:50] *** eikenberry_ is now known as eikenberry |
[13:36] < Lawouach_> oh Kamaelia.org is down |
[13:58] < MS-> is it? |
[13:58] *** MS- looks |
[13:58] < MS-> OK, host itself is up |
[13:58] *** MS- is logged into it |
[13:58] < MS-> (132.185.142.2) |
[13:58] < MS-> As is the machine that serves its DNS |
[13:59] < MS-> local lookup here (on a different network from either) succeeds |
[13:59] < MS-> http://downforeveryoneorjustme.com/www.kamaelia.org |
[13:59] < MS-> says |
[13:59] < MS-> It's just you. http://www.kamaelia.org is up. |
[14:31] *** Lawouach has joined #kamaelia |
[14:31] < Lawouach> back |
[14:31] *** Davbo has joined #kamaelia |
[14:32] < Lawouach> don't know if this is just me but the sound isn't synchronised on the first blip video |
[14:32] < MS-> It seems to be like that with the transcoding on blip. The original video is synced, but something blip have done is wierd. |
[14:32] < Lawouach> :/ |
[14:36] < MS-> yep, just replaying it here, and the AV is synced, but the flash isn't |
[14:36] < MS-> (ie replaying the .avi file and that's synced, but the flash file isn't) |
[14:37] < MS-> Though intriguing, retrying playing back with mplayer rather than ffplay shows a desync |
[14:37] < MS-> With the video getting ahead |
[14:39] < MS-> Very odd |
[14:54] < MS-> Wonder why one video will play in sync with one player and *not* in sync with another |
[15:12] < MS-> retrying with mencoder, now that I know what options result in blip.tv not exploding |
[15:13] < MS-> If that works OK, I'll come back and redo the tutorials |
[15:13] < MS-> I suspect ffmpeg is doing something "wrong" |
[15:14] < MS-> Probably need a longer chunk thinking about it |
[15:18] *** Davbo_ has joined #kamaelia |
[15:34] < MS-> first test-sync test seems pretty good |
[15:34] < MS-> testing with a longer chunk of video now |
[15:34] < MS-> http://blip.tv/file/2330630 is the first test |
[15:35] < Davbo_> http://www.reddit.com/r/Python/comments/8yysl/kamaelia_an_intuitive_approach_to_concurrency/ |
[15:35] < Davbo_> if it gets many more upvotes you need to expect a spike in traffic MS- |
[15:35] < MS-> :) |
[15:35] < Davbo_> just a warning :) |
[15:36] < MS-> That machine was being used for uploading video to blip earlier - ~800KBytes/s |
[15:36] *** Davbo_ has upvoted |
[15:36] < MS-> If it breaks beyond that, that's fine :) |
[15:36] < Davbo_> hehe |
[15:40] *** eikenberry upvoted |
[15:42] *** MS- fixes the source & SVN text |
[15:42] < MS-> ;) |
[15:43] < MS-> Also added a link right next to the download section to the europython tutorial notes |
[15:44] < MS-> thanks for upvoting :) |
[15:48] < MS-> Davbo_: You may be gratified to hear btw that I used your paint program to show that kamaelia supports multiple processes last week :) |
[15:49] < MS-> ie as a concrete example of something that *must* be using multiple processes |
[15:52] < Davbo_> pleased to hear it, I'm going to write a prototype of what I'm working on over summer in Kamealia to see if its better than the existing threaded method |
[15:52] < Davbo_> can't really say much about it unfortunately |
[15:53] < Davbo_> might be a nice use case though |
[15:54] < MS-> That's fine. If it's useful, that's what matters (to me). If it helps that's good. if it doesn't that's useful to know |
[15:57] < MS-> Don't forget BTW, that you "own" the namespace Kamaelia.Apps.DK |
[15:59] < MS-> I think the av sync in this works quite well: http://blip.tv/file/2330727 |
[16:00] < MS-> OK, I'm happy with that |
[16:00] < MS-> That's much better. Plan then: do the keynotes, then redo the tutorials, then the sessions, then the lightning talks |
[16:00] < MS-> back later |
[16:00] < MS-> (tram) |
[16:01] *** MS- has parted #kamaelia |
[18:14] *** MS- has joined #kamaelia |
[18:14] < MS-> back |
[19:12] < aa_> ms, anyone written a two-way rpc for kamaelia? |
[19:12] < aa_> MS-: ^^ |
[19:12] < MS-> json-rpc |
[19:12] < MS-> Yes, they have. I ought to put it into Kamaelia.Apps. |
[19:12] < MS-> Thanks for reminding me :) |
[19:13] < aa_> MS-: where is it, does rasjid hang out here? |
[19:14] < MS-> He mailed it through a little while before europython, whilst I was rapidly doing lost of stuff. |
[19:14] < MS-> He's posted to the list a couple of times. |
[19:14] < MS-> And offered to contribute it |
[19:14] < aa_> MS-: I have to convince everyone to let me remove dbus from pida |
[19:15] < aa_> and replace it with something based on kamaelia |
[19:15] < aa_> I think we have ronny convinced |
[19:15] < MS-> :-) |
[19:15] < aa_> so go on, cough up the code please :P |
[19:20] < aa_> MS-: how do you serialize messages? |
[19:21] < MS-> I didn't write it - rasjid did |
[19:21] < MS-> I suspect as json messages |
[19:22] < MS-> hold on, I'll check it in |
[19:26] < MS-> http://code.google.com/p/kamaelia/source/detail?r=6203 |
[19:26] < aa_> awesome and tidy code |
[19:27] < MS-> http://code.google.com/p/kamaelia/source/browse/trunk/Sketches/Contrib/jsonrpc/ - perhaps a better view |
[19:27] < MS-> :-) |
[19:29] < MS-> I need to shift the components into a namespace in Kamaelia.Apps.JsonRpc though |
[19:29] < MS-> Since that'd allow reuse of any parts of the code in other applications easier |
[19:29] < MS-> But it's really cool :) |
[19:30] < aa_> seems there are two versions, one is bd |
[19:31] < aa_> you know if the bd one supports async signal-type things? |
[19:31] < MS-> "The bdjsonrpc.py file is the main code" |
[19:31] < MS-> "It uses jsonrpc.py which is currently Roland Koebler's code" |
[19:31] < aa_> oh |
[19:32] < MS-> FWIW, I don't know, but I'm happy to give the code a home |
[19:32] < MS-> I think it should be useable in an async way |
[19:33] < MS-> But even if it can't directly, I suspect that K should make it easier to decouple. |
[19:34] < MS-> I'll forward you rasjid's mails |
[19:36] < MS-> (just checking that I'm not forwarding anything I shouldn't before sending) |
[19:38] < MS-> OK, sent |
[19:48] < aa_> thanks |
[20:01] *** salmon_ has joined #kamaelia |
[21:09] < MS-> aa_: Nearly finished packaging up Rasjid's code btw |
[21:20] < MS-> OK, packaged up, installable tar ball here: |
[21:20] < MS-> http://www.kamaelia.org/release/Kamaelia-JsonRPC-0.0.1.tar.gz |
[21:20] < MS-> And details sent to the mailing list |
[22:08] *** MS- has parted #kamaelia |