[02:09] *** Lawouach_ has joined #kamaelia
[07:34] < Lawouach_> morning
[08:15] *** MS- has joined #kamaelia
[08:15] < MS-> morning
[08:33] < Lawouach_> hi MS-
[08:34] < Lawouach_> how's life?
[08:35] < MS-> Not too bad. Writing up summaries for 4 proposals that I'm pitching for the new workplan tomorrow.
[08:35] < MS-> Using the Kamaelia PTP format as a guide for summarising them in fact :)
[08:35] < MS-> (this format that is : http://www.kamaelia.org/Developers/Projects/ProjectTaskPageTemplate )
[08:38] < MS-> Hopefully one particular one will go through out of the ideas, which will be cool but also have a very clear reason for using kamaelia in it.
[08:39] < MS-> Indeed, I've put that as a staff requirement for the project :-)
[08:39] < Lawouach_> good man :)
[08:39] < MS-> And yourself?
[08:39] < Lawouach_> doing good too
[08:39] < Lawouach_> I started my new job last week
[08:39] < Lawouach_> Working for a small company that is set on the Google Android market
[08:39] < MS-> Cool. I saw you'd started somewhere, and some erlang comments...
[08:40] < Lawouach_> Using also XMPP a lot thus ejabberd
[08:40] < MS-> Sounds like a good idea :)
[08:40] < MS-> Ahhh. I see
[08:40] < Lawouach_> So currently I'm doping lots of erlang
[08:40] *** MS- nods
[08:40] < Lawouach_> which is rather fun
[08:40] < Lawouach_> How's the scheduler refactoring coming?
[08:54] < MS-> Well, its more of a complete rewrite
[08:55] < MS-> Based on experimenting with getting the hackysacker thing going as fast as possible through benchmark whoring
[08:55] < MS-> the hackysack benchmark is really a measure of "this is the scalability when you have very large numbers of players, and almost 100% of work being message passing" rather than the usual kamaelia workload
[08:56] < MS-> So it's rather atypical, but if you can minimise the cost, it's useful
[08:56] < MS-> I suspect pygame components would benefit for example
[08:56] < MS-> I've created a scratch project on code.google for playing btw
[08:57] < MS-> http://code.google.com/p/kamaelian/source/browse/sketches/Axon/Axon.py contains the pathological case - what happens if you optimise for speed
[08:57] < MS-> That runs quicker than stackless's code
[08:58] < MS-> And is amenable to performance boosts using psyco - which gives it an extra 40% or so
[08:58] < MS-> (ie around twice the speed of stackless)
[08:58] < MS-> http://code.google.com/p/kamaelian/source/browse/sketches/Axon/Axon2.py is much closer to something real
[08:58] < MS-> for example it includes:
[08:58] < MS->             self.link(self, "outbox", (kickto, "inbox"))
[08:58] < MS->             self.send(self, "outbox")
[08:59] < MS-> Which runs about 2-3 times as fast as fibra at present and a bit slower than stackless.
[08:59] < MS-> I think it can be improved further
[09:00] < MS-> Whether these changes get refactored into the core, or if this replaces the core yet, I'm not sure
[09:01] < MS-> I still need to integrate threads as well, since at present that's a cause for concern
[09:01] < MS-> The interesting thing is that this has crucially simplified the scheduler
[09:09] *** Uraeus has joined #kamaelia
[09:40] < Lawouach> Thread components have always been a bit of a misunderstanding to me
[09:40] < Lawouach> they seem almost against the general idea behind Axon
[09:41] < Lawouach> so I can understand they don't blend well
[10:17] < MS-> fwiw, I'm actually more thinking of doing what we did with processes
[10:18] < MS-> ie you have a threaded chassis
[10:18] < MS-> So Pipeline(A,B,C) is a normal pipeline
[10:18] < MS-> and Threaded(X) puts X in a separate thread
[10:19] < MS-> Historically the reason for introducing threaded components was for 2 reasons:
[10:19] < MS-> 1) a platform we targeted needed to do TCP stuff, but didn't have poll, select or anything similar - it only had threads
[10:19] < MS-> (so it kinda had to happen)
[10:20] < MS-> 2) It's really needed for anything that may block
[10:20] < MS-> Otherwise you hit the performance of the system
[10:20] < MS-> The reason for the split between component & threaded component
[10:20] < MS-> ie the reason for NOT having Threaded(X) earlier is simple - thread safety
[10:21] < MS-> There was no clear way to guarantee that Threaded(X) was safe, so it wasn't allowed.
[10:21] < MS-> Specifically using services (eg backplanes, Selector, pygame display) would be unsafe without that co-ordination
[10:22] < MS-> Due to the implementation of the CAT.
[10:22] < MS-> And also component activation etc
[10:23] < MS-> But, having written the STM code now, I can see how that can be made significantly safer - especially given we now have a wide variety of (real world) use cases now.
[10:25] < MS-> Also threaded components give you something rather special on Jython & Ironpython - multicore support for "free" :)
[10:26] < MS-> (To get blocking handled transparently, you need to monkey patch the stdlib and have true co-routines - ala stackless)
[11:28] < Lawouach_> I like the Threaded(X) bit
[15:24] *** MS- has parted #kamaelia
[17:06] *** Uraeus has joined #kamaelia
[17:11] *** vmlemon_ has joined #kamaelia
[17:12] < vmlemon_> Hi
[17:24] *** vmlemon_1 has joined #kamaelia
[22:24] *** vmlemon_1 has parted #kamaelia