[00:10] *** vmlemon_ has joined #kamaelia
[05:08] *** wyleu has joined #kamaelia
[05:34] < Lawouach_> http://www.kde.org/announcements/4.1/ < -- via reddit
[05:34] < Lawouach_> wonder if distributions will make the update available
[06:22] *** Uraeus has joined #kamaelia
[06:40] < Lawouach_> meh
[06:40] < Lawouach_> One can't read the kamaelia mailing-list without being a member
[06:40] < Lawouach_> That's not good
[07:03] < wyleu> http://svn.sourceforge.net/viewvc/viewcvs.cgi/kamaelia/ doesn't seem to be there. It's a link on the CVS page.
[07:14] *** bcarlyon|laptop has joined #kamaelia
[07:33] *** bcarlyon|laptop has joined #kamaelia
[07:48] *** orphans has joined #kamaelia
[08:12] < Lawouach_> orphans: soun?
[08:12] < Lawouach_> sound
[08:14] < orphans> hey Lawouach_
[08:15] < orphans> need a little more time - I think I know what's going on
[08:57] *** Davbo has joined #kamaelia
[09:21] < orphans> Lawouach_, :D
[09:21] < orphans> sound!
[09:29] *** wyleu has joined #kamaelia
[09:34] *** ian_brasil has joined #kamaelia
[09:43] < wyleu> morning Kamaelians...
[09:55] < MS-> greetings
[10:11] < Davbo> Afternoon all
[10:11] < Davbo> Congrats orphans
[10:12] < Davbo> MS-: I got my branch up yesterday, after a checkout on /branches which took about 3 hours and stalled about 4 times
[10:13] < Davbo> it's odd, my original checkout on /trunk took about 15mins and was perfectly fine.
[10:14] < Davbo> i seem to get varying mileage from code.google
[10:18] *** orphans_ has joined #kamaelia
[10:18] *** orphans_ is now known as orphans
[10:18] *** orphans_ has joined #kamaelia
[10:41] < MS-> Davbo: Interesting
[10:41] < MS-> maybe they use a different system for who system checkouts rather than just /trunk
[10:45] < Davbo> Where can I find the wiki so I can look at adding something
[10:46] < Davbo> infact, ignore that. I'll wait till we go across to the new one you worked on
[10:52] *** vmlemon_ has joined #kamaelia
[10:53] < Lawouach_> afternoon
[10:54] < vmlemon_> Hi
[11:18] < MS-> Davbo: huh?
[11:19] < MS-> The wiki is edit.kamaelia.org
[11:19] < MS-> Oh, do you mean the one which code.google supply?
[11:19] < MS-> I've disabled that since it doesn't match where I want to take things really.
[11:20] < Davbo> Nah sorry, I was wondering where you actually had cerenity
[11:20] < Davbo> if i could find it in svn
[11:21] < vmlemon_> MS-: I'll try and get the CA in the post some time this week, if not next week
[11:21] < MS-> That's gret :)
[11:21] < MS-> Ahh
[11:22] < MS-> vmlemon_: That's great rather :)
[11:22] < MS-> Davbo: Ah, that code is here...
[11:22] *** MS- digs out reference
[11:22] < MS-> http://code.google.com/p/facilitate/
[11:22] < Lawouach_> MS-: I assume we'll be making a final decision about which provider we go for any day now?
[11:23] < Lawouach_> Personally from what I've read from everyone I'm not convinced Google Code is better than SF in this case
[11:23] < MS-> Me neither for that matter FWIW
[11:24] < MS-> It's the sort of thing that should be decided this week IMO
[11:24] < MS-> For day to day tasks it's OK
[11:24] < MS-> which is OK
[11:24] < MS-> But for a full checkout including /branches it's really less than optimal
[11:24] < MS-> he says politely
[11:25] < MS-> It seems OK for *small* codebases
[11:25] *** MS- needs lunch
[11:27] < Davbo> thanks MS-
[11:32] < orphans> Lawouach, ping?
[11:58] < Lawouach_> orphans: pong
[11:59] < orphans> hey, you got a minute?
[11:59] < Lawouach_> yeap
[12:00] < orphans> cool, right I'm really close now (I think) - have sound output working ok, but was wondering whether you had any idea why something was happening
[12:01] < orphans> basically from python I call a c function, giving it a pointer to a python method (like self.registerCallback(self.aFunction))
[12:02] < orphans> that's all cool, so I store the address of self.aFunction in a struct, which gets passed on, and used by another function which calls self.aFunction
[12:03] < orphans> but by the time that's happened the pointer no longer points at self.aFunction, but at a different function (self.unpause - I'm trying to get it working in a component)
[12:04] < orphans> so it calls the wrong thing and everything goes wrong
[12:04] < vmlemon_> It now sounds somewhat musical, instead of screeching and cracking?
[12:04] < orphans> Lawouach_, and I have no idea why the function it points to changes
[12:04] < orphans> vmlemon_, yes, but only if you use a function as a callback and not a method :D
[12:05] < vmlemon_> Aah, cool
[12:08] < Lawouach_> well can't tell you why without seeing the code mate
[12:08] < orphans> :)
[12:08] *** orphans finds the lines
[12:09] < orphans> http://code.google.com/p/kamaelia/source/browse/trunk/Sketches/JT/RtAudioBindings/RtAudio.sip
[12:10] < orphans> if you print the name of the function at line 205 it gives you the name of the function you put in
[12:10] < orphans> then when it's called at line 158 it points to a different function
[12:11] < orphans> giving you "TypeError: unpause() takes exactly 1 argument (7 given)"
[12:12] < Lawouach_> whers ithis code called in your application?
[12:13] < orphans> it's called in RtAudioBindings/test/saw.py where it works fine because it's a function rather than a method (I assume)
[12:14] < orphans> and it fails in Jam/library/trunk/Apps/Jam/Kamaelia/Audio/RTOutput.py
[12:15] < Lawouach_> damn it the code browsre of google is really buggy
[12:15] < Lawouach_> it gets lost in paths
[12:15] < Lawouach_> sigh
[12:15] < orphans> you want me to pastebin it?
[12:16] < vmlemon_> Wow, has anyone seen the state of Google Maps as of late?
[12:16] < vmlemon_> It looks like they "improved" it so that it barely renders here, and spews random bits of JavaScript
[12:16] < orphans> Lawouach_, http://orphans.pastebin.com/m75964bd4 -> that works
[12:16] < vmlemon_> not to mention that it takes several refreshes to actually load map tiles
[12:17] < orphans> http://orphans.pastebin.com/m3b2a05e9 -> that doesn't
[12:19] < orphans> so from the non working one at line 205 data->function points to streamCallback, whereas at line 158 it points to unpause
[12:19] < Lawouach_> hmm
[12:20] < Lawouach_> that is weird
[12:20] < orphans> yeah, seemed right funky to me
[12:21] < orphans> the address it's pointing to is the same at both points
[12:22] < orphans> just that address is mapped to different functions, which seems pretty messed up
[12:22] *** Chong- has joined #kamaelia
[12:24] < Lawouach_> I don't understand why "unpause"
[12:24] < orphans> no, me neither
[12:25] < orphans> I'd be happier if it pointed me at complete garbage
[12:27] < Lawouach_> I wonder if there is a threading issue
[12:27] < Lawouach_> I'm really not the best person about this type of things though
[12:28] < orphans> threading issue how?
[12:29] < MS-> (14:40:33) Lawouach_: I don't understand why "unpause"
[12:29] < MS-> ?
[12:29] < MS-> I don't understand the question
[12:29] < Lawouach_> Why specirfically that method
[12:29] < Lawouach_> rather than garbage or another method
[12:30] < Lawouach_> orphans: I don't know. I'm just throwing ideas :)
[12:30] < MS-> Mind you I'm only just reading the end of the conversation...
[12:30] < MS-> Oh,
[12:30] < orphans> :) - it's a distinct possibility - I'm very hazy on how all the threading in there is happening
[12:30] *** MS- reads upwards
[12:31] < MS-> giving you "TypeError: unpause() takes exactly 1 argument (7 given)"
[12:31] *** orphans knocks up a class-based example rather than a component-based one
[12:31] < MS-> You're aware Axon.Component.component has an "unpause()" method?
[12:32] < orphans> MS-, yeah, I am. The thing is that the pointer should be pointing at a user defined method, but it's actually pointing at the unpause() method
[12:32] < Lawouach_> MS-: that doesn't explain really his problem :)
[12:32] < MS-> You could add
[12:32] < MS-> def unpause(self, *junk):
[12:32] < MS-> print "what IS this junk we're being sent here???", repr(junk)
[12:32] < MS-> super(WhateverClass, self).unpause()
[12:32] < MS-> as a means of finding out what junk is being sent there
[12:32] < Lawouach_> wow, checkout from google code of the whole trunk took only a few minutes.
[12:33] < Lawouach_> MS-: I think you misunderstand the problem.
[12:33] < orphans> MS-, I know what the junk is - I'm the one who puts it there :)
[12:33] < MS-> maybe I should be quiet for a bit then :)
[12:33] *** MS- so tempted to make unhelpful statements at this point and deciding against it :)
[12:34] < Lawouach_> His binding uses a callback to perform some task, this works well when the callback is a function but when it's a method in a component the specific callback isn't applied. Instead the unpause() method is.
[12:34] < Lawouach_> Which is rather unexpected :)
[12:34] < Lawouach_> Both pastbins do explain it well :)
[12:35] < MS-> Only if you know the code :)
[12:36] < MS-> OK, so is
[12:36] < MS-> def streamCallback(self, inputBuffer, bufferSize, streamTime, streamStatus, extraData):
[12:36] < MS-> the non-beasty in question?
[12:36] < orphans> yup
[12:36] < MS-> Does http://orphans.pastebin.com/m3b2a05e9 work?
[12:36] < orphans> it exists at a location in the memory for a while, then if you look at that location a bit later unpause() is there
[12:36] < MS-> No
[12:36] < MS-> that doesn't does it
[12:36] < MS-> the other one does, yes?
[12:37] < orphans> yup
[12:37] < MS-> So, as a test, I'd try this
[12:38] < MS-> def SillyCallback(callbackFunc):
[12:38] < MS-> def wrapper(*args):
[12:38] < MS-> return callbackFunc(*args)
[12:38] < MS-> return wrapper
[12:38] < MS-> as a def (normal function) outside the class
[12:38] < Lawouach_> orphans: does it work with a method of a regular Python class (not one inherting from component)?
[12:38] < MS-> then insteads of:
[12:38] < MS->         self.io.openStream(self.outputDevice, self.channels, 0, 0, 2, 0,                            self.type, self.sampleRate, self.bufferSize,                            self.streamCallback, None)
[12:38] < MS-> do
[12:38] < orphans> Lawouach_, just trying that now
[12:39] < MS->         self.io.openStream(self.outputDevice, self.channels, 0, 0, 2, 0,
[12:39] < MS->                            self.type, self.sampleRate, self.bufferSize,
[12:39] < MS->                            SillyCallback(self.streamCallback), None)
[12:39] < orphans> MS-, ok, will try that
[12:39] < MS-> My guess is that unpause is picked because it's the first one spat out of self.__dict__.keys() or something dumb
[12:40] < MS-> Even though I know it shouldn't be :)
[12:42] < orphans> Traceback (most recent call last):
[12:42] < orphans> File "/usr/lib/python2.5/site-packages/Kamaelia/Apps/Jam/Audio/RTOutput.py", line 8, in wrapper
[12:42] < orphans> return callbackFunc(*args)
[12:42] < orphans> SystemError: ../Objects/cellobject.c:24: bad argument to internal function
[12:44] < orphans> bah, I'll simplify everything down to the basics and see where we go from there
[12:47] < orphans> fwiw this doesn't work either, so it's a method thing rather than a kamaelia thing -> http://orphans.pastebin.com/d241237a7
[12:48] < MS-> I doubt it's a kamaelia thing fwiw
[12:49] < orphans> yeah, it's definitely not
[12:49] < MS-> I would've been rather shocked if it was
[12:50] < orphans> my money rests firmly on an "I can't write c++, and the documentation is a little skimpy" thing
[12:51] < Lawouach_> what's the behavior with the Saw test?
[12:51] < Lawouach_> it can't be calling unpause that one
[12:51] < Lawouach_> so what does it do?
[12:51] < orphans> calls main() :)
[12:55] < orphans> and I've got it :)
[12:55] < Lawouach_> ?
[12:56] < orphans> needed to pass round a pointer to the method's function object
[12:56] < orphans> I have no idea what that means, but it works...
[12:56] < orphans> PyObject* PyMethod_Function( PyObject *meth)
[12:56] < orphans> Return value: Borrowed reference.
[12:56] < orphans> Return the function object associated with the method meth.
[12:57] < vmlemon_> Filling the CA in now
[12:57] < Lawouach_> well the problem with memory pointers is that once the memory is allocated you can't be certain how the program will be using a space of memory it was allocated
[12:58] < Lawouach_> I assume that function maps the pointer to the right function address in memory
[12:58] < orphans> what's a method's function object? I thought that methods and functions were equivalent apart from one being class-based?
[12:58] < Lawouach_> everything is an object in python
[12:58] < Lawouach_> a function is an object
[12:58] < Lawouach_> a class is an object
[12:58] < Lawouach_> a method is also an object
[12:59] < Lawouach_> a method is simply a function scoped within the instance of a class
[12:59] < orphans> so a method keeps a reference to a function object rather than owning the function itself?
[12:59] < Lawouach_> That would be my understanding yes.
[13:00] < Lawouach_> Though I'm not a CPython expert
[13:00] < orphans> :)
[13:00] < orphans> there's my new thing for the day learnt
[13:00] < Lawouach_> That makes sense however
[13:01] *** MS- is watching this and pleased he normally uses pyrex :)
[13:01] < Lawouach_> Because if you were not doing that, each instance of a class would have its copy in memory of the function object
[13:01] < Lawouach_> what a waste :)
[13:01] < Lawouach_> MS-: how's pyrex different?
[13:01] < orphans> :)
[13:02] < vmlemon_> Secret, probably;)
[13:03] < Lawouach_> pyrex is for C only isn't it?
[13:03] < MS-> Lawouach_: It's really quite nice and simple to work with and handles most of the awkward cases
[13:03] *** Davbo thinks orphans deserves a beer for getting *any* sound working
[13:03] < MS-> You can have a c wrapper on the outside
[13:03] < MS-> Which is how we wrap dirac - which is C++
[13:04] < MS-> That's either nicer or an extra problem, depending on perspective
[13:07] < MS-> Mind you pyrex has been forked a while back to make cython
[13:27] < Lawouach_> MS-: BTW, I haven't congratulated you for PyCon yet
[13:28] < Lawouach_> So here we go: Congrats for the talk :)
[13:28] < Lawouach_> Though you had an edge ;)
[13:28] *** vmlemon_ has joined #kamaelia
[13:29] < Davbo> Lawouach_: s/talk/talks wonder how he managed that ;-)
[13:31] < MS-> Lawouach - cheers :)
[13:31] < MS-> If there's things that people would particularly like mentioned, the sooner that's mentioned the better
[13:32] < MS-> There's a balance between plugs for things and giving information :)
[13:32] < MS-> But "things" can be useful in explaining stuff
[13:33] < Lawouach_> Like how the French should have won the last World cup?
[13:35] < aa_> they would have won if it was awarded for head-butting?
[13:35] < Lawouach_> That was just showing off. :)
[13:37] < Davbo> Showing off the famous French cranial diameter?
[13:37] < Lawouach_> ah come on, who never wanted to kick some Italian'arse during a football game? :)
[13:38] < Lawouach_> throw me the first stone ;)
[13:39] < Davbo> Hehe, I'll give you this one Lawouach_ ;-)
[13:43] < vmlemon_> Hmm, where do I send the CA to, and what is my developer stub?
[13:45] < vmlemon_> (I take it that it consists of my initials?)
[13:47] < Davbo> becoming a contributor vmlemon_?
[13:47] < vmlemon_> Contributing the FileAppender, after talking to MS- about it last night
[13:47] < Davbo> Yes, the convention now is using initials
[13:47] < MS-> vmlemon_: Yep, just your initials. I know it's at minimum TK, but if it's more, that's useful. (mine is MPS for example, rather than MS)
[13:48] < MS-> post to here:
[13:48] < vmlemon_> Thanks
[13:48] < MS-> likewise :)
[13:49] *** vmlemon_ goes to look for his pen, wherever it fell
[13:50] < Davbo> MS-: I'm going to have an "animator mode" which you can toggle
[13:50] < Davbo> so I can switch the layers to frames essentially, and make adjustments to some other behaviour
[13:51] < Davbo> Probably have a simple animation where you can have a couple of layers, ie. background then all the frames are consistent with the background.
[13:52] < Davbo> more complex ways could have more functionality but I think in the end will just not be as much fun as "drawing your background" then "drawing your characters doing things"
[14:03] < Lawouach_> damn you implementation details
[14:03] < Davbo> umm?
[14:05] < Lawouach_> talking to myself :)
[14:07] *** mhrd-afk has joined #kamaelia
[14:08] *** mhrd-afk is now known as mhrd
[14:08] *** mhrd is now known as mhrd-afk
[14:08] < Davbo> me too apparently ;-)
[14:09] < Davbo> != works in python right? I could swear I've used that before
[14:09] *** Davbo tests
[14:09] < Davbo> oh i see, oops :-)
[14:10] < MS-> Yes, it does
[14:11] < Davbo> simple animations working nicely MS-
[14:11] < MS-> Cool :)
[14:12] < Davbo> what do you think to my idea above?
[14:13] < MS-> Oh, was that a question?
[14:13] < MS-> so you're planning on having 2 layers essentyially
[14:14] < Davbo> Well I wanted feedback
[14:14] < MS-> one background, non-animated
[14:14] < MS-> one foreground animated
[14:14] < MS-> with foreground what you bibble with, and animate.
[14:14] < MS-> Is that right?
[14:14] < MS-> s/bibble/something more sensible/
[14:14] < Davbo> It should be easy enough to mark some frames as "background frames"
[14:15] < MS-> If so that sounds very similar to how cell animation works, which should work well as an initial version
[14:15] < Davbo> to me it seems like the most fun way to do it
[14:15] < MS-> Then follow the fun :)
[14:15] < MS-> It strikes me as a good ide
[14:15] < MS-> a
[14:15] < MS-> as a starting point
[14:15] < Davbo> I'm pondering when you "add a frame" to blit the contents of the last frame to it too
[14:15] < MS-> I can think of others as well
[14:15] < Davbo> or atleast have that as an option
[14:16] < Davbo> so you can erase and move body parts for example
[14:16] < MS-> Have you tried running the whiteboard ?
[14:16] < MS-> That's got a "checkpoint" button that kinda works like that
[14:16] < Davbo> not since I moved to Ubuntu tbh
[14:16] < Davbo> perhaps it works better now for me though
[14:16] < MS-> np
[14:18] *** MS- is having a busy day
[14:18] < MS-> Will try and take a good look this evening :-)
[14:18] < Davbo> If Pablo were still about I'd tell him this setup I've got for testing functions easily. Just binding keys to little chunks of code for a good luck at them in runtime.
[14:19] < Davbo> s/luck/look
[14:19] < MS-> He wasn't about when he was doing his project though
[14:20] < MS-> Sorry, I just feel I wasted a slot
[14:20] < vmlemon_> Hmm, KamPlanet?
[14:20] < vmlemon_> Or the presumed/speculative testing framework?
[14:20] < MS-> vmlemon_: No, he was meant to be building a testing framework and wasted his time IMO
[14:21] < vmlemon_> Aah :(
[14:22] < Davbo> Agreed MS-, a real shame
[14:23] < MS-> The sad thing is even if you'd told him, I don't know if he'd've listened to the way you were testing :-(
[14:25] < Davbo> I heard a story about a student who was on a project that used git, he didn't go to and of the meetings or hang around on IRC so they failed him. Then he comes on IRC and says what about all this work I've done. Obviously because it's git he's not realised nobody else had seen it :/
[14:25] < vmlemon_> What happened next?
[14:26] < vmlemon_> Aah
[14:26] < MS-> That's a mixture of his fault and his mentors IMO without hearing any more details
[14:26] Reply: Hi, I'm a bot. I've been put here to answer faq's and log the channel.
[14:26] Reply: I've not really been configured yet, so I won't do much here yet :-)
[14:26] < vmlemon_> Hah
[14:26] < vmlemon_> Oops
[14:26] < Davbo> They contacted google, got him back on the course and forced him onto IRC lol
[14:26] < Davbo> That's horribly paraphrased MS-
[14:26] < vmlemon_> Hmm, weren't there struggles with Chong's check-ins, initially, too?
[14:27] < vmlemon_> Although I'm sure his project is better off than Pablo's
[14:27] < vmlemon_> (at the moment)
[14:27] < Davbo> I'm pretty sure they did a lot to get hold of him
[14:27] < Lawouach_> This things happen like you can hire the wrong guy for a job.
[14:28] *** vmlemon_ wished Firefox had some level of integration with KWallet
[14:30] < MS-> vmlemon_: Different people are different. Chong's been great - he listened to what was needed and changed his behaviour :)
[14:30] < MS-> which was a very positive thing to see happen
[14:31] < MS-> :)
[14:32] < MS-> Also, I learnt that I have certain core assumptions surrounding checkin messages, which I hadn't realised in depth before, but now I do, I'll be able to help people better in future, since other people have core assumptions as well
[14:33] < MS-> But it's not nice to rake things over when people aren't around.
[14:35] < Davbo> I have a fear of console text editors, and missing out a ci message pops up nano i think. I've had nightmares ever since.
[14:35] < vmlemon_> I couldn't agree more...
[14:35] < MS-> Both Pablo & Chong worked very hard.
[14:35] < MS-> If you cock up a check in, just follow up with an email
[14:35] < MS-> We all do it :)
[14:42] < MS-> anyway, you know you can do this:
[14:42] < MS-> ~> svn ci FileName.py -n "bla bla
[14:42] < MS-> bla bla bla
[14:42] < MS-> bla bla bla bla
[14:42] < MS-> bla bla
[14:42] < MS-> bla
[14:42] < MS-> bla bla bla bla"
[14:42] < MS-> ?
[14:42] < MS-> is just continue over multiple lines if you don't like using an editor
[14:42] < Davbo> That was a very recent discovery, like, last week :-)
[14:43] < vmlemon_> You can fill it with the first chapter from the bible without issues? ;)
[14:44] < Davbo> todays discovery for me: mkdir -p blah/blah/blah
[14:45] < Davbo> also, shouldn't that be
[14:45] < Davbo> ~> svn ci FileName.py -m "bla bla etc" ;-)
[15:01] < MS-> no, you can do that over multiple lines fine
[15:03] < Davbo> Oh, i know I was just point out s/-n/-m
[15:05] *** Davbo shuts up
[15:05] < MS-> Oh
[15:06] < MS-> typoe earlier then
[15:19] *** Chong- has joined #kamaelia
[15:57] *** MS- looks at j_baker's boxbundle code
[16:03] *** vmlemon_ has joined #kamaelia
[16:15] < vmlemon_> kamlogbot: ecky
[16:15] Reply: Ptang!
[16:31] < MS-> decides not to post about it.
[16:31] *** mhrd-afk has parted #kamaelia
[16:41] *** mhrd-afk has joined #kamaelia
[16:41] *** mhrd-afk is now known as mhrd
[16:42] *** mhrd is now known as mhrd-afk
[16:55] < Lawouach> I start understanding Jason's will for making microprocess and component more explicitely distinct than they are now
[17:26] < MS-> That I don't have an issue with. The BoxBundle code is a hideous mess though
[17:26] < vmlemon_> Hmm, what's BoxBundle?
[17:28] < MS-> It's some code that I'm struggling to see the point of
[17:28] < MS-> And failing
[17:28] < MS-> since I think the problem it's solving is well solved in the past
[17:28] < vmlemon_> Aah
[17:28] < MS-> jason> I need a component that will be able to manage a connection with
[17:28] < MS-> jason> a variable number of components that will continually be being
[17:28] < MS-> jason> deleted and/or created.
[17:28] < MS-> Composing a reply at present
[17:28] < MS-> That above comment is a very common need
[17:28] < MS-> or common enough
[17:29] < MS-> And there's code that does that
[17:49] *** MS- wanders of
[17:57] *** j_baker has joined #kamaelia
[18:25] < j_baker> Am I the only one who's having problems updating Davbo's branch?
[18:26] *** vmlemon_ has joined #kamaelia
[19:06] *** vmlemon_ has joined #kamaelia
[19:14] *** bcarlyon|laptop has joined #kamaelia
[19:49] < MS-> 35% price increase for gas this winter ?
[19:49] < MS-> eek
[19:50] < MS-> I ought to start saving for winter...
[19:57] < MS-> If previous quarters in this house are anything to go by that'll mean the coldest quarter's gas bill will easily go over £500 :-(
[20:00] < Lawouach> I've dropped owning a car a year ago.
[20:00] < Lawouach> But I don't have kids either so I can handle it.
[20:01] < MS-> Never owned a car, so that's not an issue
[20:01] < MS-> Oh, gas.
[20:01] < MS-> No, I mean the stuff that powers the heating & cooker
[20:01] < MS-> Not petrol
[20:02] < Lawouach> oh ok
[21:22] *** MS- has parted #kamaelia
[21:27] *** vmlemon_ has joined #kamaelia
[21:31] *** bcarlyon|laptop has joined #kamaelia
[22:48] *** vmlemon_ has joined #kamaelia