[00:29] *** MS- gets sleep
[00:29] *** MS- has parted #kamaelia
[06:36] *** Lawouach_ has joined #kamaelia
[06:36] < Lawouach_> hello
[07:23] *** vmlemon__ has joined #kamaelia
[07:23] *** vmlemon__ is now known as vmlemon_
[07:25] < vmlemon_> Hi
[07:32] < vmlemon_> kamaeliabot: dance
[07:32] Reply: does the macarena
[07:45] *** orphans has joined #kamaelia
[08:33] *** mhrd-afk is now known as mhrd-sometimes-a
[08:33] < mhrd-sometimes-a> ( I'll, yet again, be in and out of my office all day :-/ )
[09:18] *** Chong- has joined #kamaelia
[09:18] < Chong-> Morning, all.
[09:37] *** vmlemon__ has joined #kamaelia
[09:37] *** vmlemon__ is now known as vmlemon_
[09:42] *** Davbo has joined #kamaelia
[09:43] < vmlemon_> Hi
[09:43] < Davbo> Hey all
[09:51] < Davbo> Great, package manager crashed installing new kernel
[09:52] < vmlemon_> Ouch
[09:58] *** Uraeus has joined #kamaelia
[10:45] *** MS- has joined #kamaelia
[10:59] < Davbo> Hey MS-
[11:04] < MS-> heya
[11:04] < MS-> Oh, it's monday isn't it
[11:04] < MS-> sorry!
[11:04] < Davbo> Have a good weekend?
[11:04] < MS-> completely passed my mind
[11:04] < Davbo> s'ok
[11:04] < MS-> Yes, I did actually, a very good one
[11:04] < Davbo> Good stuff, get everything sorted?
[11:05] < MS-> Not sorted as such
[11:05] < MS-> but definite progression
[11:05] < Davbo> Cool :-)
[11:05] < MS-> I also got lots of stuff done regarding my work work - mainly by nabbing stuff I've done for the kamaelia website
[11:06] < MS-> and then adding lots of knobs onto it
[11:06] < Davbo> ah right
[11:09] < Davbo> could you have a look at my checkin i just did /DK/Paint/Kamaelia/Apps/Paint/UI/XYPad.py
[11:09] < Davbo> when you get a chance
[11:10] < Davbo> need an efficient way of redrawing the bg around the puck when it moves without drawing the whole thing each time :s
[11:15] < MS-> I will do :)
[11:44] < MS-> Davbo: so that have a better idea of what you're after, can you tell me what's inefficient about what's currently happening & why it's an issue?
[11:44] < MS-> (can't really look at it at this moment, but I know that'll be a question that'll spring to mind)
[11:46] < Davbo> Well I use a for and nested for loops to plot all the colours
[11:46] < Davbo> I don't want to have to run that everytime someone clicks (clicking places a marker on the colour you want
[11:46] < Davbo> I could just get rid of the "puck" which is what i had before
[11:47] < Davbo> but it's nice to see where you're selected
[11:51] < MS-> I'll take a look
[11:51] < Davbo> the Packaging thread on the group has got rather confusing
[11:51] < MS-> ?
[11:52] < MS-> hadn't even spotted updates
[11:52] < Davbo> http://groups.google.com/group/kamaelia/browse_thread/thread/5c10266994f2e276?hl=en
[11:53] < MS-> Yes, it has gotten a little confusing
[11:53] < MS-> It's really actually about j_baker's approach
[11:53] < MS-> which is suitable for j_baker's project
[11:53] < MS-> Personally, I'm actually happy with the approach taken by the ER Modeller code
[11:53] < MS-> which is on /trunk
[11:54] < MS-> and would be more than happy to see that be the approach you take as well
[11:54] < Davbo> right
[11:54] < MS-> Two things which are the same are easier to change to something else than 4 or 5 completely different approaches
[11:55] < MS-> It's very easy for people to get things confused.
[11:55] < MS-> the core of the approach taken by the modeller is
[11:56] < Davbo> Yeah it has confused me a bit
[11:57] < MS-> Code/Python/Apps/ERModeller/App/< this is the application>
[11:57] < MS-> Which is worth looking at
[11:57] < MS-> you'll see that what that does is import a bunch of components
[11:57] < MS-> and wire them up
[11:57] < MS-> in a graphline and then runs it
[11:57] < MS-> It imports them from
[11:57] < Davbo> especially with the mention of setuptools/easy_install because i recall you saying that wasn't suitable
[11:57] < MS-> Kamaelia.Apps.< ...?
[11:58] < Davbo> perhaps you even posted that to the list
[11:59] < MS-> I'm aware of setuptools/easy_install, but in practice I'm not sure that I want to go with anything at this instant that works on the _assumption_ that you can download, install and run random software without even checking or the (simple) ability to audit it first
[11:59] < MS-> Especially code that requires priviledged access to the system to install in standard locations
[12:00] < Davbo> indeed
[12:00] < MS-> It's never been acceptable on any server systems I've run and having that as a *requirement* for installing kamaelia is not where I want to go
[12:00] < MS-> Having it as an extra *option* is nice
[12:00] < Davbo> it's nice to have packaging systems up for debate but at some point we need a decision / or do we?
[12:01] < MS-> and I believe standard distutils these days will integrate cleanly as an option for eggs and if you provide the right info, then easy_install/setuptools can take something intended as distutils, but it's a pain
[12:01] < MS-> Personally, I would decide in favour of a distutils based approach because it matches how I think as a sysadmin in a previous life
[12:01] < Davbo> heh
[12:01] < MS-> Which boils down to "I want to know in advance what's getting instanlled upfront"
[12:02] < MS-> I've done sysadmin for & trouble shooting on large scale systems
[12:02] < MS-> When you're doing that, you really do want to know what's going onto them upfront
[12:02] < MS-> That's actually where the megabundle thinking comes from - because it guarantees "if you use all of these together, I know it will work"
[12:03] < MS-> rather than saying "X with version greater than Y"
[12:03] < MS-> also, you can map from distutils approaches to setuptools & eggs, whereas going back the other way appears harder#
[12:03] < Davbo> Yeah Uni has a very clever way of handling those things
[12:03] < MS-> (appears, not looked in detail - not had time)
[12:04] < Davbo> The sysadmin in our dept was explaining how they do distributed applications
[12:06] < MS-> There's a wide variety of approaches that get taken really
[12:07] < MS-> But often the core thing that remains the same throughout all of them is "I know precisely what is installed where, why, and how"
[12:09] < Davbo> I think I'm just tired of reading about the various methods
[12:09] < MS-> Just copy what I did then
[12:09] < MS-> It works :)
[12:09] < Davbo> Yeah I wll
[12:10] < Davbo> s/wll/will
[12:10] < MS-> If j_baker's approach turns out to be a good approach for these sorts of apps as well in practice, I can integrate that
[12:11] < MS-> To be honest I've also realised just how nasty it is to work with installing packages under windows as well - now that I've been playing with XP in a VirtualBox (virtualbox.org)
[12:11] < Davbo> it wants to be in the same layout as ERModeller if it's going to be in /trunk anyway imo
[12:11] < MS-> yep
[12:12] < MS-> Should also make packaging for ubuntu easier to test/play with as well
[12:13] < Davbo> I'll be trying openSUSE 11.0 on wednesday hopefully
[12:13] < Davbo> I believe that's the release day they've set
[12:14] < Davbo> i've got a separate partition/mountpoint for /home anyway
[12:17] < MS-> That's not a bad idea
[12:17] < MS-> I'll try that in a virtual machine as well
[12:17] *** Davbo will try the live CD
[12:18] *** MS- will try the live CD without rebooting
[12:18] < MS-> :-D
[12:18] < Davbo> if it doesn't detect my wireless card (which has open source drivers) then i'll not bother
[12:18] < MS-> (it's the latest shiny piece of free software)
[12:18] < MS-> :)
[12:18] < MS-> (for me anyway(
[12:18] < MS-> )
[12:18] *** MS- goes for food
[12:18] < Davbo> hehe
[12:18] < MS-> biab
[12:18] < Davbo> cya
[13:01] < j_baker> MS-: do you happen to know much about cgitb?
[13:04] < orphans> j_baker, did you ever find out a sensible way to work out the external IP address of a PC using python?
[13:04] < orphans> iirc you were looking at it for wcgi?
[13:05] < j_baker> Nope. There's not really any way to do that that's even portable across different unices.
[13:05] < j_baker> Plus you've also got to figure: do they want IPv4 or IPv6?
[13:06] < orphans> fair enough, it's not vital :)
[13:06] < j_baker> So for me, I figured if anybody writing a WSGI app needs it bad enough, they're better off finding it themselves.
[13:06] < orphans> yeah, me too
[13:07] < orphans> although I am one of those people who'd need to, my ISP has transparent proxies spying all over me
[13:07] < Davbo> You could try importing some html stuff and parsing a site like showmyip.com ?
[13:08] < Davbo> clumsy though
[13:08] < orphans> yeah, too ugly for me I think
[13:08] < j_baker> Well, the proxying may just be for HTTP. Or is it?
[13:08] < orphans> mm, you may well be right actually...
[13:08] < orphans> I remember I had to do stuff to get slsk working back in the day
[13:09] < Davbo> I don't know of any subtle ways to find it i'm afraid orphans :-)
[13:09] < orphans> who knows :)
[13:10] < Davbo> bin/ifconfig/ doesn't even necessarily show your external ip right?
[13:11] < orphans> nopers
[13:11] < j_baker> Yeah. I think most Red Hat systems will just have that show your loopback address.
[13:11] < orphans> definitely sticking to "put it in a config you lazy bum"
[13:12] < Davbo> :-)
[13:13] < Davbo> Why do you need it orphans?
[13:13] < orphans> as an address for one client to send to another one
[13:14] < orphans> so Jam A sends Jam B a message saying "send me stuff to this port"
[13:14] < Davbo> How does Jam A get to Jam B?
[13:14] < orphans> and Jam A says "well, the message came from this address, so we'll try there"
[13:15] < orphans> but if there's a proxy Jam B sends it to the proxy rather than Jam A
[13:15] < orphans> euargh, the second line should have read "and Jam B says"
[13:16] < orphans> Jam A -> UDP Pipe -> Jam B
[13:16] < Davbo> Ah
[13:16] < Davbo> Proxies don't like UDP
[13:16] < orphans> but it's not too bad, cause Jam A can say "send me stuff to this address and this port" at the start
[13:16] < j_baker> You're sending binary data aren't you?
[13:16] < orphans> yeah
[13:16] < j_baker> Hmmm...
[13:17] < Lawouach_> orphans: maybe for the scope of this project you should consider (at least in a first release) that you run on a local network
[13:17] < Lawouach_> I'd rather have a working applictaions over a local network than a broken one over the Internet
[13:17] < Davbo> "Surprise packets" my lecturer described it as. :-)
[13:18] < Davbo> You could always test it with a VPN if you do it Lawouach_'s way
[13:18] < orphans> Lawouach_, all my testing is happening locally, so I wouldn't be surprised if it was pretty sketchy over the internet. That said it's only another couple of lines of code to get it (theoretically) working over the internet
[13:18] < orphans> it's no big problem, just interested whether there was a nice way to do it :)
[13:19] < Davbo> How do Whiteboards work orphans? you had a look at that?
[13:19] < orphans> no - I should do really
[13:20] < Davbo> I've looked but not at the networking code really
[13:20] < Lawouach_> orphans: I'd rather if we pushed those two lines back nonetheless.
[13:20] < Lawouach_> Unless you can assure it would not slow you down
[13:21] < Lawouach_> Up to you really but I don't consider it being a priority
[13:21] < Lawouach_> I'd rather seeing solid code running locally
[13:21] < orphans> no, the two lines are in already - literally no effort
[13:22] < Lawouach_> okay
[13:24] < j_baker> MS-: I posted my question to the list fyi. I've got to take care of a couple of things atm, so I'll be back.
[13:40] *** Chong- has joined #kamaelia
[13:44] < Lawouach_> j_baker: replied
[13:51] < Davbo> orphans: what's my best bet for getting 2 XYPads talking (locally) I just want 1 for saturation and 1 for colour selection
[13:52] < Davbo> A graphline would make more sense than what you've setup already, looks like that will be fine
[13:53] < orphans> if you hook up the localChanges outbox on one to the remoteChanges inbox on the other the position on one will follow the other
[13:53] < orphans> you'll probably need to do a bit of fiddling with what you do with the data coming in on remoteChanges
[13:53] < orphans> so it tracks how you want it to
[13:54] < Davbo> right
[13:54] < Davbo> thanks
[13:54] < orphans> I think that should work anyway, if it doesn't shout and I'll find out where I've messed up :)
[13:56] < Chong-> Lawouach_: it seems that setuptools has been around for a long time.
[13:56] < Chong-> I just notice it when I tried to install PyDispatcher and OpenGLContext. :-)
[13:56] *** MS- back
[13:57] < MS-> Hi Chong-
[13:57] < Chong-> afternoon, MS-
[13:57] < MS-> So, tell me what you've got up to :-)
[13:57] < Davbo> Heh Chong-, thought that was funny when you posted it to the ML :-)
[13:58] < Chong-> MS- : now I am starting OpenGL viewer coding
[13:58] < MS-> k
[13:59] < Chong-> Have you seen my project page? I just made some changes.
[13:59] < MS-> I saw what looked like a reversion
[14:00] < MS-> What changes did you make?
[14:00] < Chong-> Davbo: I thought some may be interested in it. I remembered you had ever asked j_baker if his package system could integrate PyGame.
[14:01] < MS-> Chong-: setuptools can't in any shape or form work correctly with something like pygame in all cases. It can make some guesses, but it'd be wrong
[14:01] < MS-> anyhow, tht's by the by
[14:01] < MS-> what changes did you make?
[14:02] < MS-> have you checked in any code?
[14:02] < Chong-> MS-: first, move OpenGL extention work ahead
[14:02] < MS-> http://cia.vc/stats/author/toplch suggests nothing new
[14:03] < MS-> grep -i import.*gl `find |grep py$|grep -v svn`
[14:03] < MS-> agrees
[14:03] < Chong-> Second, start working with OpenGLApp (maybe not necessary), TopologyViewer3D and particles first, and then extend GridRenderer, ParticleSystem, ParticleDragger and physical laws wherever necessary
[14:03] < MS-> no checkins
[14:03] < MS-> so I can't help
[14:03] < MS-> oh well
[14:04] < Chong-> no. I just play with PyOpenGL and did some preparation, have not started coding yet.
[14:06] < MS-> I take it by "Playig with pyopenGL" this means just "running the existing open gl components" ?
[14:06] < Chong-> MS-: I have saw your reply about setuptools. I am with you. I also thought that it's not a good idea to install something users even don't know.
[14:06] < MS-> Since that's the bare minimum there really
[14:07] < MS-> at minimum the ones for moving cubes around and looking at THF's sketches as well as his final examples/demos
[14:08] < Chong-> yes. run and read the existing open gl components and also check PyOpenGL and OpenGLContext modules
[14:08] < MS-> But you haven't actually tried copying any into your Sketches area, changing them and playing with them?
[14:08] < MS-> playing == modifying code
[14:09] < MS-> please correct me if I'm wrong
[14:10] *** MS- feels that he's micromanaging your project when it should just be proceeding sensibly
[14:10] < Chong-> yes.
[14:10] *** MS- doesn't understand why you're not actually proceeding
[14:10] < MS-> Are you not spending your daytime on this?
[14:11] < MS-> Or is it some other problem?
[14:12] < Chong-> I have been working on it, but have not started my coding.
[14:12] < MS-> What have you been doing then?
[14:13] < MS-> Tell you what
[14:13] < MS-> come back when you start writing code
[14:14] < MS-> I can't help if you don't actually communicate
[14:14] < Chong-> check the existing codes and review my OpenGL knowledge. BTW, I only started it on last Friday.
[14:14] < MS-> I'm not trying to be awkward or abrasive, or anything, but it isn't actually possible to review or do anything
[14:14] < MS-> Mentoring is not meant to be managing
[14:15] < MS-> it's meant to be mentoring
[14:15] < MS-> whilst a good manager is normally also a good mentor
[14:15] < MS-> a good mentor is not necessarily always a manager
[14:15] < MS-> Indeed the best mentors often aren't
[14:15] < Chong-> Last week, in most time, i did Extend viewer to be able to update the figure dynamically; add link arrow and text; clean up codes and finish up the PyGame version extention;
[14:16] < MS-> So, if you've "finished up", where's the communication to the list saying what you've done (clearly) ?
[14:16] < MS-> (for example)
[14:17] < Chong-> Sorry, I have not. I thought it's just an exercise, so I have not.
[14:17] < MS-> I'm not going to chase after you for information
[14:17] < MS-> I'm expecting you (all incidentally) to let me know what you're doing, to let me know when I'm not giving you enough information, and also to search for answers yourselves
[14:18] < MS-> So far, I've been chasing you for information and that's entirely the wrong way round
[14:18] < MS-> I don't expect Lawouach to chase me for details for example, nor does he expect to
[14:18] < MS-> :)
[14:18] *** MS- says picking a random target who will more than defend himself ;)
[14:19] < Chong-> I thought last Thursday or Friday, I had asked you to check my codes I have committed
[14:19] < Lawouach_> French like being chased. But you're not girly enough.
[14:19] < MS-> heh
[14:19] < Lawouach_> i have a feeling that didn't come out as well as I'd wanted to
[14:19] < MS-> Chong-: and I said that last week was going to be a nightmare, and that I would (maybe) start catching up at the weekend
[14:19] < Davbo> no Lawouach_, it was perfect :P
[14:19] < MS-> Lawouach_: That's what they all say :-p
[14:19] < orphans> :D
[14:20] < Chong-> haha
[14:20] < Lawouach_> I won't say more.
[14:20] < Davbo> biab :-)
[14:20] *** Davbo is now known as Davbo-afk
[14:21] < MS-> Chong-: I also have repeatedly said to you "make your checkins followable"
[14:21] < MS-> "make your code followable"
[14:21] < MS-> I've said I can't review stuff in you don't make it possible to see what's going on
[14:21] < Chong-> yes. I'll.:/
[14:22] < MS-> You've said that every week
[14:22] < MS-> Anyone can write code in a cave
[14:22] < Chong-> From last Friday, I have not started real coding, so I have not checked in any.
[14:22] < MS-> and get something working
[14:23] < MS-> Why not?
[14:23] < MS-> No, seriously.
[14:23] < MS-> Why haven't you taken the code examples which exist, copied them into your scratch area and experimented with how to move forward?
[14:23] *** MS- ponders
[14:23] < Chong-> It's not related with project, just learning PyOpenGL codes.
[14:24] *** MS- gives up
[14:24] *** MS- goes off to do work
[14:24] < MS-> back later
[14:24] *** vmlemon__ has joined #kamaelia
[14:24] *** vmlemon__ is now known as vmlemon_
[14:26] < Chong-> In fact, I really have some questions to ask you. But I haven't got chance yet.
[14:26] *** Lawouach_ goes to get some tea
[14:28] *** vmlemon__ has joined #kamaelia
[14:28] *** vmlemon__ is now known as vmlemon_
[14:28] *** MS- changed the topic to Don't forget you can ask questions on the mailing list as well | Claim a branch for review and (maybe) merge! :-) | Update and review the release Wiki here: http://edit.kamaelia.org/ReleaseJune2008 u/p : wiki/wiki | Next weekly meeting 4pm 19th June 2008 | Don't ask to ask, just ask (channel is logged: http://yeoldeclue.com/logs/ )
[14:29] *** MS- has parted #kamaelia
[15:05] < orphans> ye gods, I think I've actually managed to write the single worst bit of code ever. So far it's errored out on every one of the last 10 lines :D
[15:06] < vmlemon_> Hi
[15:10] < Davbo-afk> lol :D
[15:10] < Davbo-afk> nice one orphans :p
[15:10] < Davbo-afk> I'll remember that before asking to use your code in future ;-)
[15:10] < Davbo-afk> also: hi vmlemon_
[15:11] < orphans> :)
[15:12] < Lawouach_> orphans: talking about that revomit script of yours?
[15:12] < orphans> no, thankfully!
[15:12] < orphans> although that is pure evil
[15:12] < orphans> and I realised I could have just used replace all the way through :)
[15:12] < orphans> revomit works surprisingly well actually...
[15:13] < Lawouach_> Ultimately I won't mind if you find a more suitable name ;)
[15:14] < orphans> heh, ultimately I wouldn't mind if I could work out how to use sed to do it. But yeah, point taken :)
[15:14] < Lawouach_> :)
[15:14] < orphans> I was quite frustrated by that point :)
[15:14] < Lawouach_> BTW, regarding string substitutions, Python has a nice Template in built-in
[15:14] < Davbo-afk> "(16:13:30) orphans: and I realised I could have just used replace all the way through :)" is this what you wanted to use sed for?
[15:14] < Lawouach_> that works well in many cases
[15:15] *** Lawouach_ shakes head on radiohead - Climbing up the wall
[15:15] < Lawouach_> orphans: http://docs.python.org/lib/node40.html
[15:15] < Lawouach_> Just in case you need it
[15:15] < orphans> Davbo-afk, I should be using sed really, but switched to python because I could actually work it. Then used about the worst way to do it in python :)
[15:16] *** Davbo-afk is now known as Davbo
[15:16] < Davbo> Hah :-)
[15:16] < orphans> Lawouach_, ahh, interesting. I never knew about that
[15:16] < Davbo> I love that about Python if you don't get it the "right way" it's usually hilariously wrong ;-)
[15:16] < Lawouach_> The python documentation sucks in the way its organised
[15:16] < Lawouach_> Most of the time Python has what you need but doesn't advertise it
[15:17] < orphans> I'll rewrite that all when I get a moment - it's a real hack atm
[15:17] < Lawouach_> s/its/it's
[15:17] < Lawouach_> orphans: no worries
[15:17] < Lawouach_> I hope you guys keep some kind of internal todo for those things
[15:17] < Lawouach_> There are plenty of small tools or even a pad+pen to support that :)
[15:18] < Davbo> http://www.rememberthemilk.com/
[15:18] *** Davbo loves remember the milk
[15:18] < Lawouach_> You guys know about intriguing sites
[15:18] < orphans> tomboy here :)
[15:20] < Davbo> TomBoy? is that the equivalent of KNotes?
[15:21] < orphans> yeah
[15:21] < Davbo> thought so
[15:21] < Davbo> anyway, brb again
[15:21] *** Davbo is now known as Davbo-afk
[15:42] < Lawouach_> http://pyinstaller.python-hosting.com/ < -- I didn't know about that one
[15:42] < Lawouach_> Looks interesting at first glance
[15:51] < orphans> [('/Jam/PeerList', [], 0.0), ('127.0.0.1', 32947)] => that comes from Jam when you connect to it :-)
[15:52] *** vmlemon__ has joined #kamaelia
[15:52] *** vmlemon__ is now known as vmlemon_
[15:52] < Lawouach_> goto home
[16:01] < Davbo-afk> orphans: what happens on localChanges?
[16:03] < Davbo-afk> Oh right I see, thats for linking them up
[16:03] < Davbo-afk> ignore that :-)
[16:06] < orphans> :)
[16:07] < orphans> you could just use outbox, but it sends loads of messages which would be bad for my app, whereas localChanges sends out the minimum you need to keep the position the same
[16:10] < Davbo-afk> nah, I'm putting some buttons on it so just added a buttons inbox
[16:10] < orphans> it working OK?
[16:10] < Davbo-afk> Yeah
[16:10] < Davbo-afk> fine
[16:10] < orphans> cool :)
[16:11] < Davbo-afk> I might get rid of the puck for now
[16:12] < Davbo-afk> make a little box displaying selected colour or something
[16:12] < orphans> yeah, I guess a crosshair or something would be better
[16:12] < orphans> or that :)
[16:12] < Davbo-afk> need to work out how to just redraw the area effected really
[16:16] < orphans> maybe have a second surface which holds the puck/box?
[16:16] < orphans> then you won't need to go through all the colour filling code again, just the box drawing
[16:18] < Davbo-afk> oh oh
[16:18] < Davbo-afk> good idea
[16:21] < Lawouach> back
[16:22] *** orphans goes to make a jerker
[16:23] < orphans> http://en.wikipedia.org/wiki/Jamaican_jerk_spice#Modern_day_.22Jerkers.22 for those of you looking to make crude jokes :)
[16:26] < Davbo-afk> As though we'd do such a thing ;-)
[16:32] *** vmlemon has joined #kamaelia
[16:34] *** vmlemon is now known as vmlemon_
[16:36] < Davbo-afk> coool!!
[16:36] < vmlemon_> Hmm, stupid question, but does anyone have the correct date and time?
[16:37] < Davbo-afk> 17:37 16th June
[16:37] < vmlemon_> (The clock on this machine is set to 10:00pm at some date in 2002, since the CMOS battery is knackered)
[16:37] < vmlemon_> Thanks
[16:37] < Davbo-afk> I hate it when that happens too, they're a bugger to replace too
[16:40] < vmlemon_> Haha, I just got a "cpu overload: aborting" error from the aRts server, for some reason
[16:41] < Davbo-afk> lol
[16:43] < vmlemon_> Meh, it won't change :|
[16:44] < vmlemon_> (It keeps auto-reverting back to 2nd March 2007)
[16:44] *** vmlemon_ grumbles
[16:50] *** vmlemon has joined #kamaelia
[16:56] *** Davbo-afk thinks it's a shame "The Best of: Radiohead" doesn't have much / anything from Kid A or post-Kid A
[16:57] < Lawouach> "best of" suck most of the time IMO
[16:57] < Davbo-afk> Yeah, I think they were just going for the more popular ones / easier to listen to ones
[16:58] < Lawouach> indeed
[16:58] < Lawouach> AFAIK, most bands don't have their say in best of
[16:59] < Davbo-afk> Which is what confused me really, of all the bands to release one I'd expect Thom Yorke to make sure he had a say in what goes on it
[16:59] < vmlemon_> "Worst Of" albums, anyone? ;)
[17:00] < Davbo-afk> reminds me of that Alan Partridge sketch where he says his favourite Beatles album is "Probably, the best of The Beatles"
[17:01] < Davbo-afk> http://www.youtube.com/watch?v=tyZspqjtG2k
[17:03] < Davbo-afk> on that note, i'm off to get something to eat
[18:03] < Lawouach> orphans: ping
[18:07] *** orphans_ has joined #kamaelia
[18:07] < orphans_> hmm, this working now?
[18:08] < Lawouach> orphans_: burp
[18:08] < orphans_> hey Lawouach, sorry, internet is being silly
[18:08] < Lawouach> :)
[18:09] *** orphans_ is now known as orphans
[18:09] < orphans> right, should be all sorted now :)
[18:10] < Lawouach> cool
[18:10] < orphans> how's it going?
[18:11] < Lawouach> I feel like I just saw Face/Off
[18:11] < Lawouach> You killed your alter
[18:11] < Lawouach> orphans_ is now dead!
[18:11] < orphans> :)
[18:12] < Lawouach> I'm doing well and I'm ready
[18:12] < orphans> I never liked that orphans_ anyway
[18:12] < orphans> cool
[18:13] < orphans> ok, so I think I told you already but last week was quite a lot of maintenance which I think I'm pretty much back up to date with
[18:13] < orphans> and I can now create sdists and exes simply, which is cool
[18:14] < Lawouach> That's great
[18:14] < orphans> and the next stage of networking stuff is coming along I think - it's kinda how you said it would be :)
[18:15] < Lawouach> ;)
[18:15] < orphans> so at the moment I can get a client to send a connect message to a Jam instance, it'll receive a list of other connected clients and then any other messages sent out from Jam
[18:16] < Lawouach> I looked at your UDPDistributor module
[18:16] < orphans> what do you think?
[18:16] < Lawouach> I think it's a good start. It's clean and simple
[18:17] < orphans> yeah, it seems to work OK so far but I've not done much with it
[18:17] < Lawouach> I wasn't sure about the name but Kamaelia has always been quite liberal in the sense that what matters is more the functionnality of the component than the theory
[18:17] < Lawouach> So for instance you could have called it "UDPDispatcher"
[18:17] < orphans> ahh, yeah, that's almost certainly subject to change - I just couldn't think of what to call it
[18:18] < Lawouach> dispatcher being quite a common term for such function
[18:18] < orphans> yeah, that's a lot better :)
[18:19] < orphans> I don't suppose you've looked at the TransformerSplitter too have you?
[18:20] < orphans> I'm not sure whether that's a huge hack or something which will save me a lot of code
[18:20] < Lawouach> What is the goal of that component?
[18:21] < orphans> it's really so I can do splitting and filtering in one without too much hassle
[18:21] < orphans> and stuff like rearranging tuples etc. Otherwise I fear I'm going to get lost in a jumble of filters just to seperate out which OSC messages I want to listen to
[18:22] < orphans> you can see it working in jam
[18:23] < orphans> (albeit with only one function going at the moment)
[18:23] < Lawouach> where?
[18:24] < Lawouach> okay
[18:24] < Lawouach> I see
[18:24] < orphans> in /Sketches/JT/Jam/application/trunk/jam
[18:25] < Lawouach> talking about that, there is an error in setup.py of the application
[18:25] < orphans> I think it'll help to keep the component fairly generic rather than really focused around OSC too. But it doesn't feel particularly Kamaelia-like in a way
[18:25] < orphans> :)
[18:25] < orphans> *£^$ thing
[18:27] < Lawouach> messageSplitter = TransformerSplitter(((addPeer, "addPeer"),)),
[18:27] < Lawouach> I can't find where addPeer comes from :)
[18:27] < orphans> up the top
[18:28] < Lawouach> damln
[18:29] < Lawouach> I'm stoopid :)
[18:29] < Lawouach> Okay
[18:30] < Lawouach> Well the splitter idea is not bad actually
[18:30] < Lawouach> But
[18:31] < Lawouach> well
[18:31] < Lawouach> actually it's not so bad
[18:32] < Lawouach> It might be better if the filter was a component
[18:32] < Lawouach> rather than a function
[18:32] < orphans> yeah, I was going with that because that's how PureTransformer works
[18:33] < Lawouach> I think that'd be good to put that on your TODO for this week
[18:33] < orphans> and then Filter takes a class with a filter() function
[18:34] < Lawouach> This is task that could have side effects if you don't clean it sooner than later
[18:34] < orphans> yeah. It seemed useful but not quite "right"
[18:34] < Lawouach> PureTransformer?
[18:35] < orphans> Kamaelia.Util.PureTransformer
[18:36] < Lawouach> < orphans> and then Filter takes a class with a filter() function < -- I'm not sure about that
[18:36] < Lawouach> It doesn't feel Kamaelia compliant
[18:37] < orphans> http://kamaelia.sourceforge.net/Components/pydoc/Kamaelia.Util.Filter.html
[18:37] < Lawouach> One way that it could be done is by using a BackPlane
[18:37] < orphans> it's old fwiw
[18:37] < Lawouach> heh not evrything in Kamaelia is Kamaelia compliant ;)
[18:38] < orphans> :)
[18:38] < orphans> using a Backplane how?
[18:38] < Lawouach> I'm not against the idea but this looks more like a "quick needy component" rather than a solid long term design decision
[18:38] < Lawouach> Well
[18:38] < Lawouach> You know how Backplanes work right?
[18:39] < orphans> ish - I've glanced over the docs a couple of times
[18:39] < Lawouach> They allow for one outbox to be linked to many inboxes via an intermediary component, a backplan.
[18:40] < Lawouach> I'll give you an example
[18:40] < orphans> yeah, so you publish to it and subscribe to it
[18:40] < Lawouach> Currently I'm using it in headstock for one simple task.
[18:40] < Lawouach> yes
[18:40] < Lawouach> So
[18:40] < orphans> uh huh
[18:40] < Lawouach> When a client connects to a XMPP server, the server returns a specific piece of data which is a full JID
[18:41] < Lawouach> A JID is just a XMPP id.
[18:41] < Lawouach> That value is critical for further communication between the client and the network.
[18:41] < Lawouach> So in an application using headstock it's equally critical to be aware of that value when it arrives.
[18:42] < Lawouach> Because I don't want to create strong coupling between components that shouldn't be coupled in the first place
[18:42] < Lawouach> I use a backplane
[18:42] < Lawouach> The JID is published to that backplane
[18:42] < Lawouach> and any component that needs that value just subscribe to the backplane
[18:42] < Lawouach> This allows for much more loosely coupled design between components.
[18:43] < orphans> yeah, I was looking at using it for the list of peers which is needed in a couple of fairly unrelated places
[18:43] < Lawouach> So in your case, what I was considering is that you publish the data you are trying to split.
[18:43] < Lawouach> Components that are interested will subscribe to it
[18:44] < Lawouach> And only process if the data they receive concern them
[18:44] < Lawouach> in other words transform the addPeer function into a component
[18:44] < Lawouach> Make one inbox of that component be linked to that backplane
[18:44] < Lawouach> and you're good to go
[18:45] < Lawouach> one example:
[18:45] < Lawouach> http://trac.defuze.org/browser/oss/headstock/headstock/example/microblog/microblog/jabber/client.py#L68
[18:45] < Lawouach> Look at the initComponents() method
[18:46] < Lawouach> http://trac.defuze.org/browser/oss/headstock/headstock/example/microblog/microblog/jabber/client.py#L571
[18:46] < Lawouach> http://trac.defuze.org/browser/oss/headstock/headstock/example/microblog/microblog/jabber/client.py#L639
[18:46] < Lawouach> http://trac.defuze.org/browser/oss/headstock/headstock/example/microblog/microblog/jabber/client.py#L654
[18:47] < Lawouach> In those four places you have an illustration of what I'm talking about
[18:47] < Lawouach> You wouldn't have to change much
[18:47] < orphans> yeah, I see
[18:48] < Lawouach> Okay cool
[18:48] < Lawouach> So that'd be a good thing to do this week if you feel it makes sense.
[18:49] < orphans> yeah, I think it probably does. I'll give it a try anyway, and see if I end up swimming in filters
[18:49] < Lawouach> ;)
[18:49] < Lawouach> I think you ought to go that way:
[18:49] < Lawouach> 1. Make addPeer a component. A simple one.
[18:49] < Lawouach> 2. Create a backplane with a meaningful name
[18:50] < Lawouach> 3. Follow the first linke above to link the Backplane to your component using a SubscribeTo component
[18:50] < orphans> subscribeTo("incommiiinnnnggggg!!!!!")
[18:50] < Lawouach> 4. Add the publishTo component wherever it makes sense
[18:50] < Lawouach> orphans: :)
[18:50] < Lawouach> yeah kind of ;)
[18:50] < Lawouach> To be honest you already have the code in place.
[18:50] < orphans> yeah, I see how it'd fit in, shouldn't take me long
[18:51] < Lawouach> Just modify the TransformSplitter into a PublishTo component in some fashion
[18:51] < orphans> yeah
[18:51] < Lawouach> I wouldn't expect it to take too long
[18:51] < Lawouach> One thing I wanted to talk to you about actually
[18:52] < Lawouach> Your TransformSplitter is the second place where I see that
[18:52] < orphans> yup
[18:53] < Lawouach> To preface this however, I'd like to say that it's nice to see your mind is flexible and fast enough to adapt to Kamaelia. This is good because with my long OOP background it took much longer to get my head around Axon :)
[18:53] < Lawouach> From what I've seen from the others I think the same of everyone.
[18:53] < Lawouach> That's really fun :)
[18:54] < Lawouach> I guess Michael and Matt would agree.
[18:54] < Lawouach> Anyhow
[18:54] < orphans> :)
[18:54] < Lawouach> In two places I've seen you doing loops inside a main() method whenever you received data into an inbox
[18:55] < Lawouach> Although loops are perfectly fine you should try to consider if you can make such loop a more Axon-like design
[18:55] < orphans> should I be yielding somewhere?
[18:55] < Lawouach> Do you remember how you called components in MiniAxon?
[18:56] < orphans> nope :)
[18:56] < Lawouach> not a trick question BTW
[18:56] *** orphans looks
[18:57] < orphans> don't really see what you're getting at?
[18:57] < Lawouach> Well
[18:58] < Lawouach> you called them microprocess
[18:58] < Lawouach> Right?
[18:58] < orphans> then calling microprocess.next()?
[18:58] < Lawouach> Well it's more than just a naming convention
[18:58] < Lawouach> hang on
[18:58] < Lawouach> I'll explain
[18:58] < orphans> :)
[18:59] < Lawouach> a microprocess really means that it's a discrete piece of code being called and giving back the hand to the scheduler, in a rather constant time fashion
[18:59] < Lawouach> The last bit is important because it's part of the implicit promise made by Axon
[18:59] < orphans> uh huh
[18:59] < Lawouach> If you create components you make the promise of being constant in the time you require for each pass
[19:00] < Lawouach> With a loop that promise may be broken when the loop gets too large
[19:00] < Lawouach> That's what I'm getting at.
[19:00] < orphans> ok, I see
[19:01] < Lawouach> Whenever you write a loop inside a component
[19:01] < orphans> so by having too large a loop without ever yielding I'm effectively starving other microprocesses
[19:01] < Lawouach> yeah you may
[19:01] < Lawouach> So whenever you write a loop inside a component, ask yourself:
[19:02] < Lawouach> 1. can I predict it'll be constant in how much time it'll require?
[19:02] < Lawouach> 2. could this loop be translated to a set of components?
[19:03] < Lawouach> By doing 2. you ensure that a loop is broken so that it keeps that promise a microprocess makes.
[19:03] < Lawouach> Yielding inside a loop is one other way too
[19:03] < Lawouach> Although I prefer breaking down to a set of components
[19:04] < Lawouach> For instance we've transformed your TransformSplitter from a loop to a set of components
[19:04] < Lawouach> haven't we?
[19:04] < orphans> yeah
[19:05] < Lawouach> right. So please keep it in mind.
[19:05] < Lawouach> Beyond Kamaelia, this is important
[19:05] < orphans> yeah, I will do. It's not really something I've every really thought about before
[19:06] < Lawouach> Being a good developer is demonstrated whenever you start using the idioms of the platform, tools, environment you are using rather than your own idioms :)
[19:06] < orphans> :)
[19:07] < orphans> definitely still on the rocky road to being an okay developer :)
[19:07] < Lawouach> I'm still walking the path too ;)
[19:08] < Lawouach> I think that'll do for this this evening.
[19:08] < Lawouach> Unless you have more questions
[19:08] < orphans> no, I think I'm pretty sorted for stuff to do for the next week
[19:09] < Lawouach> okay
[19:09] < Lawouach> so in a nutshell, what's the plan this week?
[19:10] < orphans> Backplaneize, three peers connecting to each other without knowing where they all live explicitly, make sure that works with more than three
[19:11] < Lawouach> that sounds good
[19:11] < Lawouach> moving forward well
[19:11] < orphans> yeah, seems to be going ok
[19:12] < orphans> right, I'm off to see how my food's doing
[19:12] < orphans> cheers for all the help Lawouach
[19:12] < Lawouach> np :)
[19:12] < Lawouach> take care
[19:13] < orphans> you too
[19:22] *** vmlemon_ has joined #kamaelia
[19:36] *** vmlemon_ has joined #kamaelia
[21:17] *** Trun has joined #kamaelia