[03:14] *** eikenberry_ has joined #kamaelia
[04:51] *** Lawouach_ has joined #kamaelia
[05:48] < Lawouach_> freaking memory leak is still there
[05:48] < Lawouach_> raaah
[05:48] < Lawouach_> misery
[06:00] *** Lawouach_ doesn't understand how the debug work in Axon
[06:01] < Lawouach_> it seems a debug object is created by default for every component
[06:01] < Lawouach_> how do I get its trace?
[06:03] < Lawouach_> let's see the introspector
[06:03] < Lawouach_> I'm a crazy man
[06:04] < MS-> This way:
[06:04] < MS-> http://code.google.com/p/kamaelia/source/browse/trunk/Sketches/JL/IRC/frozen/IRCClient.py
[06:04] < MS-> you add some debug sections, as per lines 83 & 84
[06:04] < MS-> then use it as per line 127
[06:04] < MS-> assert self.debugger.note('IRCClient.main', 5, 'received talk ' + str(data))
[06:05] < MS-> In some versions of python (not all it seems) asserts are not compiled
[06:05] < MS-> if you use one of the -O switches
[06:05] < MS-> which is why it uses assert
[06:05] < MS-> The arguments to debugger.note are
[06:05] < MS-> < section>, < debug level> , < what to display>
[06:06] < MS-> in debugger.addDebugSection , the arguments are
[06:06] < MS-> < section>, < max level of debugging to show>
[06:07] < MS-> It was developed *very* early on in Axon's life, and I thought it didn't work after the move TO Sourceforge, so I was surprised to see it still worked when Jinna used it
[06:07] < MS-> :)
[06:08] < MS-> It can also take a debug.conf file, which provides lots of defaults, but it looked in a specific place, and crashed otherwise (deliberately)
[06:08] < MS-> And that part was more pain than wanted, so that got switched off
[06:08] < MS-> Hence my surprise when Jinna used it and it still worked
[06:10] < MS-> I need to add it to the list of stuff to improve
[06:10] < MS-> Reinstating it to use inheritable defaults now would be really quite useful
[06:11] < MS-> or something like
[06:11] < MS-> class ...(..component):
[06:11] < MS-> debugSections = {
[06:11] < MS-> < sdfsdf> ....
[06:11] < MS-> }
[06:11] < MS-> since you'd be able to override that at constructor time then
[06:11] < MS-> ie debug on a per object basis
[06:12] < Lawouach_> sorry I got distracted
[06:12] < Lawouach_> erading back
[06:12] < MS-> np
[06:13] < MS-> Jinna's AIM code also appears to use it somewhat: http://code.google.com/p/kamaelia/source/browse/trunk/Sketches/JL/AIM_
[06:14] < Lawouach_> hmm
[06:14] < Lawouach_> does it mean I have to do that for every single component I want to debug?
[06:14] < Lawouach_> hmm that sounds tedious :)
[06:14] < Lawouach_> First I want to check that introspector
[06:14] < Lawouach_> I'm pretty sure I have some trailing references
[06:15] < Lawouach_> I need find where :)
[06:15] *** MS- nods
[06:15] < MS-> The wakeable introspector is useful for seeing what's live
[06:15] < MS-> But not dead references
[06:15] < MS-> For that you need to compare with garbage
[06:16] < Lawouach_> yeah but that's my issue
[06:17] < MS-> Really need to componentise that.
[06:17] < MS-> I was doing it manually last time.
[06:17] < Lawouach_> whenever I call gc.collect() after I got a list of objects in gc.garbage, it actually frees up the memory
[06:17] < Lawouach_> it's like a bad joke
[06:17] < MS-> That means you don't have a leak
[06:17] < MS-> Not an official
[06:17] < MS-> one at least
[06:18] < MS-> It just means that memory usage with have a "saw" shape until the gc runs
[06:18] < MS-> which it does periodically
[06:19] < Lawouach_> right
[06:19] < Lawouach_> that makes sense
[06:43] < Lawouach_> Hmm the introspector works but I don't see anything with AxonVisualiser
[06:43] < Lawouach_> the window opens up but nothing is ever displayed
[06:43] < Lawouach_> any hints?
[06:49] *** Uraeus has joined #kamaelia
[06:51] < MS-> How are you running the axon visualiser ?
[06:52] < MS-> Built in? standalone? If standalone as a server, you are sending it details ? (As per the examples in /Examples ? :) )
[06:52] < MS-> (silly random qs)
[06:52] < MS-> http://www.kamaelia.org/AxonVisualiser also has some details
[06:52] < Lawouach_> Pipeline(Introspector(),
[06:52] < Lawouach_> AxonVisualiser()).run()
[06:53] < Lawouach_> With my XMPP client activated before that
[06:53] < MS-> http://www.kamaelia.org/Components/pydoc/Kamaelia.Util.Introspector says that will fail
[06:54] < MS-> MyComplexSystem().activate()
[06:54] < MS-> Pipeline( Introspector(),
[06:54] < MS-> text_to_token_lists(),
[06:54] < MS-> AxonVisualiser(), )
[06:54] < MS-> Example has a missing ,
[06:54] < MS-> OK, I have to go afk back later
[06:54] < MS-> hope that helps :)
[06:54] < MS-> cya
[06:54] *** MS- has parted #kamaelia
[06:55] < Lawouach_> cya
[06:55] < Lawouach_> ta
[07:01] < Lawouach_> right it worked better text_to_token_lists
[07:01] < Lawouach_> though now it crashes when I run the program
[07:01] < Lawouach_> :p
[07:24] < Lawouach_> ah ah fixed with the latest svn release of pygame
[07:26] < Lawouach_> it's awesome
[07:26] < Lawouach_> I love it
[07:26] < Lawouach_> why haven't used it before?
[07:27] < Lawouach_> and it proves I don't have a leak in regards to trailing components and linkages because each time the client shutsdown I'm back to my initiali state of graph
[07:27] < Lawouach_> just the visualiser
[07:57] *** vmlemon_ has joined #kamaelia
[08:06] *** MS- has joined #kamaelia
[08:06] < MS-> back
[08:07] < MS-> Glad you like the visualiser. It's really neat to watch connections starting & finishing on a server IMO :)
[08:20] *** vmlemon_ has joined #kamaelia
[08:30] < Lawouach> my xmpp lib has so many connections it becomes quickly tedious to actually make anything of it
[08:30] < Lawouach> but I'm glad I saw the connections being correctly dropped
[08:31] < MS-> Indeed
[08:31] < MS-> The problem with the introspector at present is that it doesn't provide nested data at present, and the visualiser can't handle nesting
[08:31] < MS-> Would be a great thing for someone to work on
[08:34] < Lawouach> yeah
[08:38] < Lawouach> interestingly the creation of the xmpp client, which has so many children and linkages, is hitting the CPU rather hard
[08:44] < MS-> Makes it a useful test case for future optimisations then :)
[08:44] < MS-> ie for getting it running with this: http://code.google.com/p/kamaelian/source/browse/sketches/Axon
[08:44] < MS-> which is still in progress
[08:50] < Lawouach> :)
[08:50] < Lawouach> I think the hit comes from the amount of object creation
[08:51] < Lawouach> I'm still unsure whether or not a debug object isn't created by default no matter what
[08:51] < MS-> I think the issue is also that python objects are relatively expensive in those terms
[08:51] < Lawouach> which for instance is rather useless
[08:51] < MS-> The debug object is probably created by default
[08:51] < MS-> But IIRC it's a global debugger
[08:51] < MS-> not local
[08:51] < MS-> I think it's a shared reference
[08:51] < MS-> It's old code
[08:52] < MS-> I'd been meaning to either delete it or revamp it
[08:52] < MS-> Yep you get one:
[08:53] < MS-> # If the client has defined a debugger in their class we don't want to override it.
[08:53] < MS-> # However if they haven't, we provide them with one
[08:53] < MS-> In microprocess.__init__
[08:53] < MS-> if not 'debugger' in self.__dict__.keys():
[08:53] < MS-> self.debugger = debug()
[08:53] < MS-> self.debugger.useConfig()
[08:53] < MS-> That's fragile code I note
[08:53] *** Uraeus has joined #kamaelia
[08:54] < MS-> Didn't know that then though :)
[08:54] < MS-> Axon.Microprocess has lots of debugging support inside it
[08:55] < Lawouach> yeap that was the one I was mentionning
[08:55] < MS-> It is actually useful on occasion, when something goes rather wrong
[08:55] < Lawouach> yeah but in most cases it's just a useless object created
[08:55] *** MS- nods
[08:55] < MS-> Time to reconsider that then
[08:56] < MS-> Actually I wonder how much we'd just "gain" by removing it all...
[08:56] < Lawouach> I don't know
[08:56] < MS-> Or wrapping in if 0: 's
[08:56] < Lawouach> :)
[08:57] < MS-> Mind you, back then it was very unclear how everything should work, so it's to be expected :)
[08:57] < Lawouach> eh eh
[08:57] < Lawouach> well anyway, that's probably only a minor aspect of the Axon's refactoring to come some day :)
[08:58] < MS-> The scheduler needs a revamp too. (Which to be fair on self, is where I'm starting)
[08:58] < MS-> indeed
[08:58] < MS-> The Axon2 code is much cleaner IMO
[09:46] < MS-> I'm not at home, but apparently the paper copies of my tutorial are. At least, enough for the people currently signed up :)
[09:47] < Lawouach_> :)
[09:47] < Lawouach_> when is your talk again?
[09:47] < MS-> Sunday morning
[09:47] < MS-> 9:15am (!)
[09:49] < Lawouach_> early :)
[09:53] < MS-> Indeed.
[09:54] < MS-> It's why I'm travelling tomorrow really
[11:36] *** Lawouach__ has joined #kamaelia
[11:38] *** Lawouach_ has joined #kamaelia
[11:54] < Lawouach_> hmm
[11:58] *** vmlemon_ has joined #kamaelia
[12:08] *** salmon_ has joined #kamaelia
[14:03] *** MS- has parted #kamaelia
[14:51] *** vmlemon has joined #kamaelia
[15:03] *** Lawouach has joined #kamaelia
[15:21] *** vmlemon_ has joined #kamaelia
[15:21] < vmlemon_> Hi
[18:00] *** MS- has joined #kamaelia
[18:00] < MS-> evening
[18:00] < MS-> I have a video camera for recording the tutorial :-)
[18:00] < MS-> And other talks at europython
[18:00] < MS-> :)
[18:01] < MS-> Looking at these handouts, I'm really pleased with them :)
[18:02] < vmlemon_> Hi MS-
[18:02] < MS-> hiya
[18:03] < vmlemon_> Sounds good
[18:13] < MS-> Kids are really impressed with them :)
[18:13] < MS-> Was trying to figure out how to explain what a conference is
[18:13] < MS-> and what a tutorial is
[18:13] < MS-> and then I realised
[18:13] < MS-> It's just "show and tell" from their perspective :)
[18:14] < vmlemon_> Heh
[19:29] *** salmon_ has joined #kamaelia
[22:44] *** eikenberry_ has joined #kamaelia