[05:19] < Lawouach_> morning
[07:29] *** Uraeus has joined #kamaelia
[09:40] *** orphans has joined #kamaelia
[09:48] *** bcarlyon|laptop has joined #kamaelia
[10:03] *** wyleu has joined #kamaelia
[10:03] *** vmlemon_ has joined #kamaelia
[10:05] < vmlemon_> Hi
[10:21] *** MS- has joined #kamaelia
[10:21] < MS-> afternoon
[10:22] < Lawouach_> hello MS-
[10:28] < MS-> how's things?
[10:30] < Lawouach_> Rather quietly
[10:32] *** vmlemon_ has joined #kamaelia
[11:15] *** Davbo has joined #kamaelia
[11:32] < MS-> Woo - BBC is sponsoring Pycon UK :-)
[11:32] < aa_> woo
[11:32] < aa_> Free Dr Who Tshirts all around then!
[11:32] < vmlemon_> Cool
[11:33] < MS-> aa_: heh. Currently proposed is sponsoring lanyards & breakfast for the 3 days - I can't remember whether they're taken though, so it may be a room being sponsored or similar.
[11:34] < MS-> You would not *believe* how difficult it is to get doctor who anything :)
[11:34] < aa_> hah
[11:34] < Lawouach_> ah :)
[11:34] < Lawouach_> when and where is it again?
[11:34] < aa_> well, I have to say that this is the best use of my license fee I ever heard
[11:34] < aa_> 12-14/09
[11:37] < Lawouach_> ta
[11:38] < MS-> aa_: Cool :)
[11:38] < MS-> Lawouach_: Birmingham, 12-14th
[11:38] < MS-> sept
[11:41] < Lawouach_> Damn I might be interested in showing up
[11:41] < Lawouach_> But I doubt I'll have the time
[11:41] Reply: Hi, I'm a bot. I've been put here to answer faq's and log the channel.
[11:41] Reply: I've not really been configured yet, so I won't do much here yet :-)
[11:41] < Lawouach_> I'll check it out nonetheless, that'd be cool
[11:56] < Lawouach_> someone in my project has managed to make the logger module even more complicated than it currently is
[11:56] < Lawouach_> impressive
[11:56] < Lawouach_> s/logger/logging
[11:57] < vmlemon_> aa_: It beats some of the stuff they produce, but it's nice to see that the BBC really do have "something for everyone" ;)
[12:02] < Lawouach_> I can't believe the mess he's created with his logging wrapper
[12:03] < Lawouach_> It makes no sense
[12:04] < vmlemon_> Hmm, logging module in the Headstock stuff?
[12:04] < Lawouach_> no
[12:04] < Lawouach_> at work
[12:04] < vmlemon_> Or something else?
[12:04] < vmlemon_> Aah
[12:05] < Lawouach_> I want to cry just by having to use such crap
[12:08] < Lawouach_> Interesting. People must not get scared enough about global warming. Currently the air conditioning is on while the window is opened
[12:09] < Lawouach_> sigh
[12:21] < MS-> Well, it's raining here
[12:26] < vmlemon_> Same deal here
[12:26] *** vmlemon_ has just noticed
[12:33] < MS-> finally remembers why 150GB of storage on a machine at work is being used
[12:36] < Davbo> I need to book for pycon UK right MS-?
[12:37] < Davbo> Oh I've found it, sorry I got lost on the site.
[12:43] < MS-> Davbo: yep :)
[12:44] < Davbo> Yay for Concessions ;-)
[12:44] < MS-> indeed :)
[12:44] *** Davbo plays the poor student card
[12:47] < Davbo> Humm, wondering where to stay.
[12:52] < MS-> The etap (bookable via the pycon website) is probably the cheapest thing you can get. I stayed there last year and it was perfectly fine.
[12:53] < MS-> Though I'm planning on staying in the travelodge this year :)
[12:53] < MS-> which is pricier, but I like travelodges :)
[12:53] < MS-> hurrah o
[12:53] < MS-> for ansi sequences:
[12:53] < MS-> i, L = 0, "\|/-"
[12:53] < MS-> while 1:
[12:53] < MS-> sys.stdout.write(L[i])
[12:53] < MS-> sys.stdout.flush()
[12:53] < MS-> sys.stdout.write( chr(27) + "[1D")
[12:53] < MS-> sys.stdout.flush()
[12:53] < Davbo> Heh, I'll just go with Etap I think ;-)
[12:53] < MS-> time.sleep(0.1)
[12:53] < MS-> i = (i + 1) % len(L)
[12:54] < MS-> It's nice enough :)
[12:54] < MS-> You get a room which consists of a double bed with a bunk bed on top, which is a little odd :)
[12:55] < Davbo> Yeah that's what I was just reading....
[12:56] < MS-> http://www.flickr.com/photos/holizz/1356676970/in/set-72157601943861820/
[12:56] < Davbo> I've stayed in worse
[12:57] < MS-> So have I
[12:57] < MS-> Seriously, I just prefer travelodges :)
[12:57] < MS-> There's nout wrong with it at all
[12:58] < MS-> I am however very grumpty in the morning, and being accosted by someone in the hotel who happened to know I work at the BBC to complain about the audio quality of radio 3 on DAB ...
[12:58] < MS-> ... well lets just say I'd like to avoid that again :)
[12:58] < Davbo> Hah
[12:58] < vmlemon_> Hmm, the whole thing about most DAB stations being broadcast in mono?
[12:59] < vmlemon_> (AKA "CD-Quality Sound") ;)
[13:00] < MS-> vmlemon_: No it was a complaint about the bit rate it's broadcast at being too low
[13:00] < MS-> Which is true - it is
[13:00] < vmlemon_> Aah
[13:01] < MS-> The DAB network was designed with a minimum bitrate in mind of 192 kbit/s
[13:01] < MS-> So radio 3 being at 128kbit/s MP2 encoding is very noticeable
[13:01] < MS-> MP2 is used because it's fixed bit rate
[13:02] < MS-> Stations running at 64Kbit/s give DAB a very bad name
[13:02] < vmlemon_> Any idea about the DAB+ thing?
[13:02] < vmlemon_> Other than it using different codecs, and supposedly being non-backwards compatible for the most part
[13:03] < MS-> Not my area at all really
[13:03] < MS-> neither are really
[13:04] < MS-> Only really know anything about DAB because the person who was my manager for my first 3 years at the beeb (and therefore responsible for allowing kamaelia to happen) was the person who put in the bid for the first DAB transmitters to go up
[13:04] < MS-> sigh
[13:13] *** Davbo already has a clash in the things he wants to see http://www.pyconuk.org/timetable.html
[13:13] < Davbo> Django and PyQT4
[13:16] < Davbo> lots of cool stuff, I'd like to see Mark Shuttleworth's keynote
[13:26] < aa_> yes, excited about that too
[13:36] < MS-> He's a good speaker - he did a talk at Europython 5 years ago which was really interesting
[13:36] < MS-> (maybe 4)
[13:36] < MS-> He was talking about lots of stuff and the fact he was starting up a python friendly linux distribution, that he couldn't share the name of at that point in time since he was still getting trademarks etc sorted
[13:37] < vmlemon_> Pythubuntu®? ;)
[13:45] < orphans> kamaelia => real-time audio output is starting to actually work relatively well for me. Makes me very happy :)
[13:47] < Davbo> good to hear orphans
[13:48] < orphans> it's been a bit of a slog, but things are starting to do what they're supposed to :)
[13:51] < orphans> actually Davbo, whilst you're around, I don't suppose you've tackled the problem of getting Paint to shut down yet have you?
[13:52] < Davbo> Oh I have looked into it, it seems pretty easy. Will have another look for you later today.
[13:53] < orphans> ok, cool. it's somewhere on my list of stuff to do this week, and not one I'm particularly looking forward to :)
[13:53] *** orphans notes that my list of stuff to do this week is rather long
[13:59] < orphans> MS-, ping?
[14:04] < orphans> or Lawouach_?
[14:07] < MS-> orphans: pong
[14:07] *** MS- runs and hides
[14:07] < orphans> :)
[14:07] < MS-> (seriously, need caffiene, back in a sec)
[14:08] < orphans> hopefully this won't be too hard - I'll ask the question and you'll probably be back by then :)
[14:09] < orphans> I'm looking at making the SchedulingComponent a mixin so I can get the adaptive comms stuff easily
[14:09] < orphans> the problem is within SchedulingComponent I overwrite the pause() method, and call super(SchedulingComponent, self).pause(pauseTime)
[14:10] < orphans> which if I understand correctly won't work if it's a mixin because I'll be subclassing from object, not from the component
[14:11] < MS-> back
[14:11] *** MS- reads
[14:11] < orphans> so is there any way to call the class which you are mixing into?
[14:11] *** MS- scribbles an example
[14:16] < MS-> ok, pastebin...
[14:17] *** MS- waits for browser...
[14:17] < MS-> OK, pastebin hates me
[14:17] *** mhrd has joined #kamaelia
[14:17] < orphans> :)
[14:18] < orphans> nopaste?
[14:18] *** mhrd is now known as mhrd-afk
[14:18] < MS-> orphans: pastebin not responding
[14:18] < MS-> OK, given this import
[14:18] < MS-> import time
[14:18] < orphans> http://www.rafb.net/paste/
[14:18] < MS-> You can have one base class
[14:19] < MS-> http://rafb.net/p/LM6ZOH16.html
[14:19] < MS-> pauser == component
[14:19] < MS-> notpauser == adaptivecomms
[14:19] < MS-> Barker == mixin
[14:19] < MS-> 3 different ways of using those things
[14:20] < MS-> Note that
[14:20] < MS-> class HisDoggy(Barker, notpauser):
[14:20] < MS-> def pause(self):
[14:20] < MS-> super(HisDoggy, self).pause()
[14:20] < MS-> print "fx: OK, I'll pause"
[14:20] < MS-> time.sleep(1)
[14:20] < MS-> calls pause in notpauser
[14:20] < MS-> search term to understand this is "python mro"
[14:20] < MS-> which is method resolution order
[14:20] < MS-> ~> ./example.py
[14:20] < MS-> My Doggy
[14:20] < MS-> woof
[14:20] < MS-> fx: dramatic pause
[14:20] < MS-> woof
[14:20] < MS-> --------------
[14:20] < MS-> Your doggy
[14:21] < MS-> woof
[14:21] < MS-> fx:
[14:21] < MS-> woof
[14:21] < MS-> --------------
[14:21] < MS-> His doggy
[14:21] < MS-> woof
[14:21] < MS-> fx:
[14:21] < MS-> fx: OK, I'll pause
[14:21] < MS-> woof
[14:21] < MS-> --------------
[14:21] < MS-> is the output
[14:22] < orphans> give us a minute to try and understand it, and I'll shout if I'm lost :)
[14:22] < MS-> k
[14:23] < MS-> By way of similarity, consider what happens in a normal component when you do this:
[14:23] < MS-> super(MyComponent, self).__init__(**argd)
[14:28] < orphans> MS-, sorry, still a bit lost. From that I think I'd have my pause() method in SchedulingComponent which would call self.pause(), calling the pause method of the component?
[14:28] < orphans> which sounds wrong to me :) - I don't think I'm getting it
[14:31] < MS-> You haven't specified the bit that allows me to answer your question
[14:31] < orphans> sorry, hang on - I'll stick something up
[14:31] < MS-> class pauser(object):
[14:31] < MS-> def pause(self):
[14:31] < MS-> class notpauser(object):
[14:31] < MS-> def pause(self):
[14:31] < MS-> class Barker(object):
[14:31] < MS-> def woof(self):
[14:31] < MS-> class MyDoggy(Barker, pauser):
[14:31] < MS-> class YourDoggy(Barker, notpauser):
[14:31] < MS-> class HisDoggy(Barker, notpauser):
[14:31] < MS-> def pause(self):
[14:32] < MS-> super(HisDoggy, self).pause()
[14:32] < MS-> for example
[14:32] < MS-> allows me to answer that q
[14:32] < MS-> It's worth noting in that example
[14:32] < MS-> class Barker(object):
[14:32] < MS-> def woof(self):
[14:32] < MS-> print "woof"
[14:32] < MS-> self.pause()
[14:32] < MS-> print "woof"
[14:32] < MS-> self.pause() can refer to self.pause inside any of these:
[14:32] < MS-> class pauser(object):
[14:32] < MS-> class notpauser(object):
[14:32] < MS-> class HisDoggy(Barker, notpauser):
[14:33] < MS-> and you can see the right thing happening...
[14:35] < orphans> so I'd have the pause() method in SchedulingACComponent, and all of the rest of the methods in SchedulingComponentMixin?
[14:35] < MS-> yes
[14:36] < orphans> ahh, ok
[14:36] < MS-> I presume
[14:36] < MS-> Not seeing any code...
[14:36] < orphans> yeah, that was the bit I didn't get
[14:48] *** bcarlyon|laptop has joined #kamaelia
[14:48] *** orphans has joined #kamaelia
[14:48] *** Davbo has joined #kamaelia
[14:48] *** mhrd-afk has joined #kamaelia
[14:48] *** Uraeus has joined #kamaelia
[14:48] *** vmlemon_ has joined #kamaelia
[14:48] *** MS- has joined #kamaelia
[14:48] *** j_baker has joined #kamaelia
[14:49] *** Lawouach_ has joined #kamaelia
[14:49] *** vmlemon has joined #kamaelia
[14:49] *** aa_ has joined #kamaelia
[14:49] < orphans> ooi is there any way where you don't have to duplicate the pause() method, or is that impossible?
[14:49] *** bcarlyon|laptop has joined #kamaelia
[14:50] < MS-> and they're back again
[14:50] < MS-> orphans: I'm not sure what you mean
[14:50] < MS-> But then you've not really posted any pointers to any code :-/
[14:51] < MS-> The point of using a mixin is to avoid code duplication
[14:52] < orphans> sorry, 2 secs and I'll post an example
[14:53] < Davbo> netsplit?
[14:54] < vmlemon_> Yup :(
[14:55] < orphans> MS-, http://rafb.net/p/ZPXdU025.html
[14:57] < orphans> ideally pause() in SchedulingComponent would call pause() from whatever it's 'partner' component was, so you don't have to duplicate it in every new component you make
[14:57] < MS-> orphans: I don't understand the problem
[14:57] < MS-> # Check some stuff
[14:58] < MS-> doesn't actually tell me "I need to do this"
[14:58] < MS-> or "I'm doing this because I think I should"
[14:58] < MS-> Have you done the copy and paste version that I recommended you do first?
[14:58] < orphans> the "Check some stuff" bit isn't really important, it's just showing it doing things
[14:58] < MS-> If you know what you're doing, then jumping straight to mixin is fine
[14:58] < MS-> if you don't then it's very hard to follow what you're doing
[14:59] < orphans> k, sorry
[14:59] < MS-> Also, you're not showing where self.pause() is originally called from
[14:59] < orphans> what copy and paste version? - I think I lost a message in the netsplit
[14:59] < MS-> when we discussed the other day
[14:59] < orphans> oh, sorry, yeah I see
[15:00] < MS-> In http://rafb.net/p/ZPXdU025.html ,
[15:00] < MS-> self.pause() is never called
[15:00] < MS-> So I really can't tell which is which or why it's that way
[15:00] < MS-> Basically: "insufficient data for sensible response"
[15:00] < orphans> k, I'll make a better example
[15:00] < mhrd-afk> orphans: you're saying your mixin wishes to implement its own pause method, that will call the pause method of the thing it is mixed into, but that that isn't going to happen?
[15:01] < MS-> I'm guessing that *all* the pauses there aren't necessary at present :)
[15:01] < orphans> mhrd-afk, yes :)
[15:01] < MS-> My *guess* though is that you just delete the latter to
[15:01] < MS-> two
[15:01] < mhrd-afk> I take it you've tried it?
[15:01] < mhrd-afk> :)
[15:01] < MS-> orphans: if you subclass
[15:01] < MS-> SchedulingACComponent(threadedadaptivecommscomponent,
[15:01] < MS-> and don't have def pause(self):
[15:01] < MS-> in there
[15:02] < MS-> it will call
[15:02] < MS-> def pause(self):
[15:02] < MS-> correctly
[15:02] < MS-> SchedulingComponentMixin.pause correctly
[15:02] < MS-> which *will* correctly call
[15:02] < MS-> threadedadaptivecommscomponent.pause
[15:03] < MS-> due to
[15:03] < MS-> a) deriving from object
[15:03] < MS-> b) using super
[15:03] < MS-> c) python's method resolution order being sensible
[15:03] < orphans> so how does SchedulingComponentMixin know about threadedadaptivecommscomponent when it calls super?
[15:03] < MS-> But fundamentally, I tend to make things mixins *after* getting the code working
[15:04] < mhrd-afk> super() is resolved dynamically at runtime
[15:04] < MS-> google
[15:04] < MS-> for
[15:04] < mhrd-afk> its a method call
[15:04] < MS-> "python mro"
[15:04] < MS-> super is a little but more interesting than just a method call :)
[15:04] < mhrd-afk> (if I understand correctly)
[15:04] < MS-> but essentially right :)
[15:04] < orphans> ahh, ok. I never knew that
[15:04] < orphans> MS-, I looked at the python mro doc and get very very lost I'm afraid
[15:05] < MS-> orphans:
[15:05] < MS-> well, in your code
[15:05] < MS-> class SchedulingComponentMixin(object):
[15:05] < MS-> is equivalent to
[15:05] < MS-> class Barker(object):
[15:05] < MS-> in http://rafb.net/p/LM6ZOH16.html
[15:05] < MS-> You'll note that Barker calls self.pause()
[15:06] < MS-> but doesn't contain a pause method
[15:06] < MS-> Barker should be called BarkerMixin
[15:06] < MS-> class pauser(object):
[15:06] < MS-> class notpauser(object):
[15:06] < MS-> are equivalent to
[15:06] < MS-> component & threadedcomponent
[15:06] < MS-> class MyDoggy(Barker, pauser):
[15:06] < MS-> class YourDoggy(Barker, notpauser):
[15:07] < orphans> oh, yeah, I'm an idiot
[15:07] < MS-> are equivalent to your
[15:07] < MS-> class SchedulingComponent(threadedcomponent, SchedulingComponentMixing):
[15:07] < MS-> class SchedulingACComponent(threadedadaptivecommscomponent, SchedulingComponentMixing):
[15:07] < MS-> and
[15:07] < MS-> class HisDoggy(Barker, notpauser):
[15:07] < MS-> could also be
[15:07] < MS-> class HisDoggy(SchedulingComponent)
[15:07] < MS-> logically speaking
[15:07] < orphans> sorry MS- I see it now.
[15:08] < mhrd-afk> http://pastebin.com/meee0c49
[15:08] < MS-> HisDoggy is the most interesting of the bunch there really
[15:09] < orphans> yeah, I get it :) Don't think my brain's really up to speed today
[15:09] < MS-> It's due to super( ... ) being a little odd that the __super() thing (added by the metaclass) got deprecated
[15:10] < MS-> Due to the way super( ... ) has to work, it has to break that sort of thing in a metaclass context
[15:10] < MS-> Probably going to delete the metaclass at some point soon
[15:11] < orphans> yeah. I thought object was basically a very very simple class which did a little fiddling with arguments etc, and super just told you what the superclasses were
[15:11] < orphans> but it turns out there's a lot more cleverness behind all that :)
[15:11] < MS-> Alot
[15:12] < Davbo> Interesting, when i try to close my pygame window it doesn't throw pygame.QUIT
[15:12] < orphans> gah, sorry for being an idiot with all that. Is there a doc somewhere describing the stuff that super and object do somewhere?
[15:17] < MS-> orphans: detailed rant (with pictures) about it: http://fuhm.net/super-harmful/
[15:17] < MS-> http://www.python.org/download/releases/2.3/mro/
[15:18] < MS-> http://www.python.org/download/releases/2.2.2/descrintro/#cooperation
[15:18] < MS-> last is written by guido and pretty readable
[15:19] < MS-> First and last links are probably easiest reads
[15:19] < MS-> The last tells you how it should work
[15:19] < MS-> the first tells you all the problems
[15:20] < orphans> yeah, I found the middle one and got lost
[15:20] < MS-> The middle one uses words like non-monotonic
[15:21] < orphans> my eyes went funny after they started using examples with classes A through J :)
[15:21] < MS-> :)
[15:21] < MS-> You'll note this:
[15:21] < MS-> If you do use super, here are some best practices: Use it consistently, and document that you use it, as it is part of the external interface for your class, like it or not.
[15:21] < MS-> ... which we do :)
[15:24] *** vmlemon_ has joined #kamaelia
[15:26] < orphans> that's awful clever all that
[15:26] < MS-> It's pretty good
[15:26] < MS-> It deals with the nasty problem of multiple inheritance really quite nicely
[15:26] < orphans> yeah
[15:26] < MS-> As long as you remember how to use the "super" call :)
[15:27] < MS-> It just does what it should :)
[15:27] < orphans> I've never really needed to use multiple inheritance until now - probably a good thing I suppose
[15:27] < MS-> Don't worry, many components you're using use it...
[15:27] < MS-> :)
[15:28] < MS-> so you're using it indirectly :)
[15:28] < MS-> You coming to pycon btw ?
[15:28] < MS-> Seeing as it's now sponsored by the beeb :)
[15:28] < MS-> (among others)
[15:29] < Davbo> oooo...Java can't do this... :-)
[15:29] < Davbo> 'least not afaik
[15:30] < orphans> perhaps. I might be going on holiday then, I'm not sure yet - people are checking dates etc as I speak :)
[15:30] < vmlemon_> Hmm, no BBC logo under the "Sponsors" bit? For shame
[15:33] < MS-> vmlemon_: I only got the reply earlier today, and only got confirmation that the committee like it less than an hour ago :)
[15:33] < vmlemon_> Aah, cool
[15:33] < vmlemon_> Hot and fresh off the press
[15:35] *** Davbo hopes The Dark Knight will still be on at the IMax during Pycon :-)
[15:36] < MS-> Oh now *that's* a thought
[15:36] *** MS- hasn't seen that yet
[15:36] < Davbo> http://www.imax.ac/schedule.htm looks promising
[15:46] *** Lawouach has joined #kamaelia
[15:46] < Lawouach> evening
[15:46] < vmlemon_> Hi Lawouach
[15:48] < Davbo> Fixed your computer Lawouach?
[15:48] < Lawouach> borrowed one for now
[15:54] *** vmlemon_ has joined #kamaelia
[16:11] < MS-> sigh
[16:11] < MS-> ok now I get to go home
[16:11] < MS-> cya guys
[16:11] *** MS- has parted #kamaelia
[16:17] *** Davbo hates Paypal
[16:17] < Lawouach> why?
[16:18] < vmlemon_> It beats Google Checkout
[16:19] < Davbo> My account is limited because they thought someone else was accessing it (no way did that happen) and they want me to *fax* proof of id, bank statements for accounts i no longer hold.
[16:20] < Davbo> I can't even close my account
[16:20] < vmlemon_> Ouch
[16:26] *** vmlemon_ has joined #kamaelia
[16:34] *** MS- has joined #kamaelia
[16:35] < MS-> j_baker: Jason. If you can't be bothered to quote sections of email properly, please don't expect any answer
[16:35] < MS-> I ask you repeatedly for information, which you fail to provide
[16:35] < MS-> I only do so becuase I'm trying to help you and answer your questions, but get basically insulted for the pleasure of doing so
[16:36] < vmlemon_> Yippee, my Drupal site has became a magnet for comment spam :| (About 4 page of the crap is in my approval queue to be swiftly deleted)
[16:36] < vmlemon_> *pages
[16:36] *** bcarlyon|laptop has joined #kamaelia
[16:37] < MS-> If this wasn't a part of GSOC I would tell you right now to take a flying leap, but you're learning how to treat other people on a project, so I give you the benefit of the doubt.
[16:37] < MS-> Please learn basic netiquette.
[16:37] < Davbo> MS-: I just did "Pay by Phone" for Pycon and talked to some chap who is going to pass my details onto "John" who's apparently in a Pycon UK meeting lol
[16:38] < Davbo> It was very odd :-)
[16:38] < MS-> If you haven't learnt as a result of gsoc, that being abrasive is not a way to get answers from someone, and not a way to get your code merged, I don't know what you've been doing yet
[16:38] *** Davbo is now known as Davbo-afk
[16:39] < MS-> Quite frankly at the moment, the bloody abrasive attitude you have just makes me think "well, I'm spending *hours* writing emails in the hope that I get the basic information I need in order to help you" and you basically go "ah screw him"
[16:40] < MS-> at least that's how you come across
[16:41] < MS-> right now to actually go home
[16:41] *** MS- has parted #kamaelia
[16:42] < Lawouach> :/
[16:54] < orphans> Lawouach, ping?
[16:55] *** mhrd-afk unsure what's just happened
[16:56] < orphans> or mhrd-afk if you have a minute - this one should be a simple q :)
[16:56] < mhrd-afk> go for it, I'm waiting for a 1.7Gb download to finish :)
[16:57] < orphans> ok, this code - http://orphans.pastebin.com/m591ec385
[16:58] < orphans> if you have TestComponent as a component Mixin.__init__() isn't called, but if you change it to be a subclass of object it calls it
[16:58] < orphans> is that expected?
[16:59] < mhrd-afk> so you're saying: if you change line 2 from:
[16:59] < mhrd-afk> class TestComponent(Axon.Component.component):
[16:59] < mhrd-afk> to:
[16:59] < mhrd-afk> class TestComponent(object):
[16:59] < mhrd-afk> then the behaviour changes as you described?
[17:00] < orphans> yeah
[17:00] < Lawouach> orphans,pong
[17:00] < Lawouach> mhrd-afk, I think there is a bit of micommunication between Jason and Michael
[17:00] *** mhrd-afk checking stuff before answering ...
[17:01] < orphans> Lawouach, was just the quick question above - if you have a moment glance over it, otherwise mhrd-afk seems to be doing sterling work :)
[17:01] < mhrd-afk> orphans: ok, its a method resolution order thing again :-) ...
[17:02] < orphans> :)
[17:02] < orphans> I love that mor
[17:02] < orphans> s/mor/mro
[17:02] < mhrd-afk> http://docs.python.org/tut/node11.html#SECTION0011510000000000000000 ...
[17:02] < mhrd-afk> MRO is a depth first search
[17:02] < mhrd-afk> for """class Test(TestComponent, Mixin):""" it will therefore find init() from TestComponent first ...
[17:03] < mhrd-afk> TestComponent.init() calls super() ... which presumably (my MRO understanding is a little rusty) passes it onto Axon.Component.component.init() ...
[17:03] < mhrd-afk> which calls super() again, passing therefore onto Axon.Microprocess.microprocess.init() ...
[17:04] < mhrd-afk> I've just looked at the source for Axon.Microproces.microprocess and I can't see a call to super() in init()
[17:04] < mhrd-afk> so presumably it stalls there
[17:04] < mhrd-afk> so I guess I'm saying:
[17:04] < orphans> that's what I thought was happening
[17:04] < mhrd-afk> 1) you might need to swap (TestCompnoent,Mixin) around
[17:05] < mhrd-afk> 2) you might have found a bug/omission in Axon.Microprocess :-)
[17:05] < mhrd-afk> I reckon (1) will fix it for now
[17:05] < mhrd-afk> "that's what I thought was happening" ... cool :-)
[17:05] < orphans> oh, that is exciting :)
[17:06] < mhrd-afk> Worth showing to MS- tomorrow/tonight to get his opinion on (2) .... I reckon its a bug, rather than intentional, but you never know :)
[17:06] < orphans> yup, cool
[17:07] < orphans> swapping the order makes that work too, which is good
[17:08] < orphans> cheers mhrd-afk
[17:08] < mhrd-afk> np
[18:49] *** Davbo has joined #kamaelia
[19:00] *** MS- has joined #kamaelia
[19:00] < MS-> evening
[19:00] < vmlemon_> Hi MS-
[19:04] < MS-> I wonder if there's a mechanism to remove the ability to post replies through the web interface on google groups
[19:04] < MS-> and force people to use email and hence not reply in an antisocial way
[19:05] < MS-> If someone can't be bothered with basic netiquette they're not going to get an answer and I'm not merging their code
[20:17] < Davbo> I knew I shouldn't have let my brother install custom firmware on our camera. Now it just takes raw images lol
[20:18] < Davbo> Massive resolution picture of my drivers license coming up Paypal.
[20:19] < vmlemon_> Hehe
[20:19] < vmlemon_> One of the Canon ones?
[20:19] < Davbo> They asked for it!
[20:19] < Davbo> Yeah
[20:20] < Davbo> it's a PowerShot A610
[20:20] < vmlemon_> If I remember correctly, there's a way to disable it
[20:20] < vmlemon_> I don't have one, although read something about locking the SD card
[20:20] *** Uraeus has joined #kamaelia
[20:20] < vmlemon_> (Supposedly stops it from loading the custom firmware, but lets you take photos normally, somehow)
[20:21] *** vmlemon_ grumbles about RPM breaking itself randomly, whenever a package fails to install (so I end up having to reboot to "fix" it) :|
[20:22] < Davbo> I got it vmlemon_ Thanks
[20:22] < vmlemon_> It worked?
[20:22] < Davbo> I made it stop taking 6.3mb pictures yeah
[20:22] < vmlemon_> Cool
[20:24] < vmlemon_> Oops, I just managed to nudge the cat whilst it was jumping, and knocked him into my chair and onto the floor
[20:24] < vmlemon_> o.O
[20:29] < vmlemon_> Hah, "Join the WiKID IRC Live Chat Channel."
[20:30] < vmlemon_> (It's hardly "live" whenever I look in it
[20:30] < vmlemon_> )
[20:30] < vmlemon_> There's at most 4 or 5 people, and it's completely silent
[20:41] < Davbo> hehe
[20:42] < vmlemon_> (in fact, there's 4 idlers including myself right now)
[20:53] *** vmlemon_ has joined #kamaelia
[20:55] < vmlemon_> kamlogbot: dance
[20:55] Reply: does the macarena
[21:03] *** robertofaga has joined #kamaelia
[21:12] < Davbo> Yay! Just used my brothers PayPal instead
[21:13] < vmlemon_> Hehe
[21:13] < vmlemon_> I hope he doesn't mind ;)
[21:14] *** Lawouach has joined #kamaelia
[21:20] < vmlemon_> PayPal: Your Payment Nemesis ;)
[21:22] < Davbo> I've spent a good few hours at war with PayPal today.
[21:24] < vmlemon_> I was going to suggest starting a new account, but you'd need to unregister your cards from the old account, which you can't use
[21:25] < vmlemon_> :(
[21:27] < Davbo> I started a new one to use my Google card which caused 1/2 the problems vmlemon_
[21:27] < vmlemon_> Aah ouch
[21:28] < vmlemon_> So you're stuck in the unholy state of PayPal Limbo, now?
[21:28] < vmlemon_> Or so it seems
[21:31] < vmlemon_> And you still don't have the Google money? Or has that vanished in the trouble?
[21:32] < Davbo> nah the Google money is fine
[21:32] < Davbo> I just managed to break paypal. :-)
[21:32] < vmlemon_> Yay
[21:32] *** Davbo is now known as Davbo-afk