[01:06] *** Trun has joined #kamaelia
[01:37] *** Trun has parted #kamaelia
[02:37] < ms-afk> woo. my image upload/transcode/moderate/view cycle is working correctly
[02:38] *** ms-afk goes for sleep
[02:43] *** xmlhacker has joined #kamaelia
[07:13] *** Lawouach_ has joined #kamaelia
[07:13] < Lawouach_> morning
[08:07] *** orphans has joined #kamaelia
[08:10] *** mhrd-afk is now known as mhrd
[08:32] < ms-afk> morning
[08:34] < mhrd> hi
[08:49] < Lawouach_> I was looking at the Joe's SchedulingComponent
[08:49] < Lawouach_> It's really interesting and opens quite few doors for specific task
[08:49] < Lawouach_> Questions arise however :)
[08:53] < mhrd> such as?
[08:59] < Lawouach_> well
[09:00] < Lawouach_> for one, Joe has considered quite sensibly it'd make a good fit for Axon rather than Kamaelia.
[09:00] < Lawouach_> I can see why he made such a choice
[09:00] < Lawouach_> But adding stuff to Axon should require strong requirements
[09:00] < Lawouach_> Considering that Axon is at the core of Kamaelia
[09:01] < Lawouach_> It should be updated carefully
[09:02] < mhrd> indeed. fwiw I think there may potentially be a strong case for some kind of timing/event capability ...
[09:02] < mhrd> (in Axon) ...
[09:02] < mhrd> Axon/Kamaelia systems naturally tend to 'free-run' and so in some cases need rate control - eg. reading data from a file
[09:03] < Lawouach_> Yes I agree.
[09:04] < mhrd> Axon does deliberately concern itself already with the dynamics of teh system - it provides scheduling - ie. control over when stuff gets run ... even if the current scheduling algorithm is deliberately simple-stupid
[09:05] < Lawouach_> simple-stupid and with very little control upstream
[09:05] < mhrd> yep
[09:05] < mhrd> alot of the earlier file reading stuff, for example, relies on a separate timing component (or built in), which, in current implementations, busy-waits .... it functions well, but is less desireable wrt efficiency and playing nice with other processes :)
[09:06] < Lawouach_> Incidently it'd be interesting if Axon mainloop could be run from within another host mainloop, e.g. use the Qt mainloop system to drive the Axon scheduling. This is more or less dosable already but it's neither clean nor straightforward in my book
[09:07] < mhrd> agreed - it just about can be, but ought to be cleaner
[09:09] < mhrd> I have tried doing rate control by enforcing size limits on all inboxes in a system (the video reframer app) ...
[09:09] < mhrd> but writing components that behaved well in that situation turned out to be quite hard
[09:09] < Lawouach_> I see
[09:11] < mhrd> particularly wrt. ensuring shutdown through "control"->"signal" messages can still happen even if components are 'stalled' because the inbox(es) they want to write to are full
[09:13] < mhrd> ... sorry thats kind of an aside as it doesn't directly relate to Joe's idea, timing, scheduling :)
[09:13] < Lawouach_> :)
[09:14] < Lawouach_> Nonetheless interesting :)
[09:17] *** bcarlyon|laptop has joined #kamaelia
[09:22] *** bcarlyon|laptop has parted #kamaelia
[10:02] *** orphans has joined #kamaelia
[10:17] *** Davbo has joined #kamaelia
[11:20] *** vmlemon__ has joined #kamaelia
[11:20] *** vmlemon__ is now known as vmlemon_
[11:29] *** Davb1 has joined #kamaelia
[11:42] *** Chong- has joined #kamaelia
[11:50] < vmlemon_> Hi
[11:54] < Chong-> morning, vmlemon_
[12:47] < vmlemon_> kamaeliabot: dance
[12:47] Reply: does the macarena
[13:27] *** Trun has joined #kamaelia
[14:07] < j_baker> You know, django seems a lot better than pylons in terms of designing a website. But it definitely needs some work to integrate it better with WSGI.
[14:11] < Lawouach_> They have a long standing tickets for that support
[14:11] < Lawouach_> It's a showstopper I think for their 1.0 release
[14:15] < j_baker> btw, you wouldn't happen to have or know about any simple, stable CherryPy source code I could test with my server, would you Lawouach_?
[14:17] < Lawouach_> Depends which part of CP you want to try. The WSGI server aspect of CP with a Kamaelia WSGI application, or the CP application engine hosted by the Kamaelia WSGI server.
[14:18] < j_baker> I was wanting a WSGI application to be hosted by the Kamaelia WSGI server.
[14:21] < Lawouach_> give me a minute then
[14:22] < j_baker> np
[14:26] < Lawouach_> http://rafb.net/p/FnT7N257.html
[14:26] < Lawouach_> try that
[14:27] < Lawouach_> just replace the wsgiref server creation with your Kamaelia server
[14:27] < j_baker> Alright. I'll let you know how that goes.
[14:35] < Lawouach_> This BTW was working against the latest trunk of CP
[14:35] < Lawouach_> should work 3.1RC1
[14:35] < Lawouach_> +with
[14:37] < j_baker> Awesome. Thanks.
[14:43] *** Davb1 is pondering ways to implement "layers" in his paint program
[14:43] < Davb1> Pygame Surfaces aren't all that feature rich =[
[14:45] < Lawouach_> can't pygame create and handle OpenGL surfaces?
[14:45] < vmlemon_> Davbotoshop - soon to be the industry standard! ;)
[14:45] *** vmlemon_ ducks
[14:46] < orphans> afternoon all
[14:46] < vmlemon_> Hi orphans
[14:46] *** orphans made it (following a day of hell caused by department administration)
[14:47] *** MS- has joined #kamaelia
[14:47] < Davb1> All sorted orphans?
[14:47] < MS-> afternoon
[14:47] < MS-> (back in a sec)
[14:47] < Davb1> Afternoon MS-
[14:48] < orphans> yeah, I had to wait for aaages to get my viva, got messed around loads
[14:48] < orphans> resulted in having to sit for about 2 hours in a room on my own with nothing to do but stare blankly at a wall
[14:49] < j_baker> I think being a sadist is a job requirement for being a university administrator sometimes.
[14:50] < orphans> they were supposed to announce the list at 9.30, delayed it til 12.30, told us no-one was having vivas then half an hour later told me I had been chosen to have one.
[14:50] < Lawouach_> I assume they called the room the numb room
[14:51] *** Chong- has joined #kamaelia
[14:51] < j_baker> Just out of curiosity, what is a viva?
[14:52] < orphans> it's like an oral exam to help determine what grade you get for your degree
[14:52] < orphans> they normally only do them for postgrad courses afaik, and then you have to defend your thesis
[14:53] < j_baker> Ah, I see.
[14:53] < j_baker> Are you a grad student?
[14:53] < orphans> no, final year undergrad
[14:53] < orphans> my department are indeed sadists :)
[14:54] < orphans> from tomorrow I'm a free man though! (apart from GSoC and a Masters next year :D)
[14:54] < vmlemon_> Viva la sitting in a room for hours with extreme boredom! ;)
[14:54] < MS-> (back)
[14:54] < vmlemon_> (Sorry, I couldn't resist)
[14:57] < MS-> (just getting notes together for meeting)
[14:57] < vmlemon_> Hi MS-
[14:57] < MS-> vmlemon_: hI
[14:58] < j_baker> I actually remembered to prepare my DONE, TODO, and BLOCKED ahead of time today. :)
[14:58] < MS-> j_baker: Cool
[14:58] < MS-> OK, let's go
[14:58] < MS-> ==============================================
[14:58] < MS-> START OF WEEKLY IRC KAMAELIA MEETING, 20080626
[14:58] < MS-> ==============================================
[14:58] < MS-> 1. Note of Agenda
[14:58] < MS-> -----------------
[14:58] < MS-> 1. Note of Agenda
[14:58] < MS-> 2. Participants
[14:58] < MS-> 3. Activity Reports
[14:58] < MS-> 4. Discussion items (max 3 or 4)
[14:58] < MS-> 4.1 Summer of Code Progress
[14:58] < MS-> 4.2 Other
[14:58] < MS-> 5. Date/Time of next weekly meeting
[14:58] < MS-> Thursday 3rd July 2008, 4pm UK time
[14:58] *** mhrd is now known as mhrd-afk
[14:58] < MS-> Any extra items?
[14:58] < mhrd-afk> :)
[14:58] < mhrd-afk> (sorry)
[14:59] < MS-> heh
[14:59] *** MS- takes that as no
[14:59] < MS-> 2. Participants
[14:59] < MS-> ---------------
[14:59] < MS-> Participants: MS-, mhrd, Lawouach, Chong-, orphans, Davb1, Trun, j_baker, Lawouach
[14:59] < j_baker> I'm here. :)
[14:59] < MS-> Also present: others
[15:00] < MS-> :)
[15:00] < MS-> 3. Activity Reports
[15:00] < MS-> -------------------
[15:00] < MS-> Ready?
[15:00] < MS-> Go!
[15:00] < j_baker> DONE: Got kp working with Moin, pylons, and to some degree django
[15:00] < MS-> DONE:
[15:00] < MS-> Merged LOTS onto /trunk
[15:00] < MS-> Release Candidate
[15:00] < MS-> Build system for release candidates & upload
[15:00] < MS-> Various GSOC related things
[15:00] < MS-> Speak N'Write
[15:00] < MS-> IRC Speaker Bot
[15:00] < Trun> DONE: Tested some stuff at HTTPClient/HTTPParser, a couple of bugs found and fixed, trying to put the changes in a branch. Improvements, stats and tests in KamPlanet. Tried to move from private_MPS_Scratch/**/LikeFile to trunk/**/Handle in order to make the branch from trunk for testing other stuff; still on it.
[15:00] < Trun> TODO: Finish moving to Handle, create the branch, move the HTTPClient tests/fixes to the branch, add kamtest to the branch, and start testing Kamaelia.Chassis etc. based on existing tests.
[15:00] < Trun> BLOCKED: None
[15:00] < MS-> Offline Batch Image/Video Transcoder
[15:00] < MS-> Presentation @Mashed
[15:00] < Chong-> DONE: start TopologyViewer3D and Particles3D base coding. Particles3D: OpenGL cuboid with label, position, size, rotation customable and updatable; TopologyViewer3D: add particles, random position generation, event handling (click and drag)
[15:00] < MS-> God knows what else... :-)
[15:00] < MS-> TODO:
[15:00] < orphans> DONE: Componentised python's sched module. Finished Step Sequencer UI, and made
[15:00] < orphans> it work over a network. Started redoing Pure Data example to use the Step Sequencer.
[15:00] < orphans> TODO: Finish PD example. Document scheduling and sequencer components. Test ne
[15:00] < orphans> twork code more thoroughly using step sequencer. Start making piano roll component.
[15:00] < orphans> BLOCKED: None
[15:00] < j_baker> TODO: Test CherryPy, optimize server, clean up and document code
[15:00] < MS-> Clean up release & release tools
[15:00] < Chong-> TODO: add links, extend GridRenderer, ParticleSystem and physical laws wherever necessary
[15:00] < MS-> Continue merge of code from branches
[15:00] < j_baker> BLOCKED: Just started back at my old part time job and have been having to work more hours than normal
[15:00] < MS-> Extend release tools to pull in autodocs
[15:00] < MS-> Check webcam code into svn
[15:00] < MS-> Get kernel fix into linux-uvc project
[15:00] < Chong-> BLOCKED: None
[15:00] < MS-> Sleep
[15:00] < MS-> BLOCKED:
[15:00] < MS-> Been blocked: Work is very busy, eating into home/kamaelia time
[15:00] < MS-> Will be blocked: again, deadlines with work (this is rare)
[15:00] < MS-> Will be blocked: no doubt will take a rest...
[15:00] < MS-> NEED SLEEP
[15:01] < MS-> j_baker: BLOCKED notes
[15:01] < MS-> noted
[15:01] < MS-> thanks
[15:01] < j_baker> np
[15:02] < MS-> I don't suppose you could answer the query regarding HTTP POST that's just come on the list at some point ? (no rush :) )
[15:02] < orphans> MS-, you've been busy!
[15:02] < j_baker> Sure. I'll look at it.
[15:02] < MS-> j_baker: ta
[15:02] < MS-> orphans: And that's only the non-work stuff
[15:02] < MS-> I've built a youtube/flickr clone at work from the ground up more or less
[15:03] < MS-> Which is why I'm kinda needing sleep :)
[15:03] < MS-> (Massively reusing stuff from the kamaelia website / cerenity though)
[15:03] *** MS- will explain another time
[15:03] < orphans> :)
[15:04] *** MS- will take up any issues in people's mentor time
[15:04] < MS-> or offline
[15:04] < Chong-> MS-: after you have a good rest :-)
[15:05] < MS-> Chong-: I don't think I can leave things for that many weeks
[15:05] < MS-> OK, moving on
[15:05] < MS-> 4. Discussion items (max 3 or 4)
[15:05] < MS-> --------------------------------
[15:05] < MS-> 4.1 Summer of Code Progress
[15:05] < MS-> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[15:05] < MS-> Oh, hold on
[15:05] < MS-> Davb1:
[15:05] < MS-> Davb1: yoooooooooooooooooooooooo hoooooooooooooooooooooooooooooooooo
[15:06] < Davb1> Sorry!
[15:06] < Davb1> DONE: Non-recursive flood-fill working nicely lots better than last week, cleaned up code and added buttons for controling the tools. Started work on methods for layering
[15:06] < Davb1> TODO: Implement Layers using pygame surfaces perhaps. Once this is done start adding paint features where possible but start progressing on the Animation tools. Some ideas up on the project page.
[15:06] < Davb1> BLOCKED: None
[15:06] < MS-> ta
[15:06] < MS-> FWIW, definitely use surface
[15:06] < MS-> s
[15:07] < Davb1> Yeah
[15:07] < Davb1> I will be, certainly at first anyway
[15:07] < MS-> You may wish to delve into the cess pit called PygameDisplay to see how transparency etc can work
[15:07] < MS-> I'd be tempted to use whole components actually
[15:07] < MS-> which happen to use pygame display
[15:07] < MS-> but that's not for the meeting
[15:07] *** MS- moves on
[15:08] < MS-> 4. Discussion items (max 3 or 4)
[15:08] < MS-> --------------------------------
[15:08] < MS-> 4.1 Summer of Code Progress
[15:08] < MS-> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[15:08] < MS-> OK, This may catch people out, but we're approaching the 1/2 way point
[15:08] *** Davb1 went afk because he realised the gutter appears to be falling off :-)
[15:08] < MS-> oops
[15:09] < MS-> And in practice, 12 weeks really == 10 weeks + documentation + packaging
[15:09] < MS-> Which probably means everyone is actually about 1/2 way through
[15:09] < Davb1> Cool
[15:10] < MS-> Or 1/3 if you're good and packaging and doc'ing as you go
[15:10] < MS-> Generally everyone's made progress, but there are issues
[15:11] < MS-> Trun - you're still not asking enough (brief enough, quick enough to answer) questions
[15:11] < MS-> You're developing something that should be used by the rest of us, and haven't been actively poking people for information about how they're testing now and *what* they're testing so that can be automated
[15:12] < MS-> I suspect you're going to end up with a very well tested KamPlanet tool
[15:12] < MS-> But that's a bad risk
[15:12] < MS-> please be aware of the difference between "exploration & learning" exercise vs "actual tool"
[15:13] < MS-> If that carries on beyond the actual half way point (say 7th-10th July), then you'll be simply wasting your time.
[15:13] < Trun> yeah, I'm sorry for that, I started testing SimpleHTTPClient and I wanted to have already started testing Kamaelia.Chassis.*
[15:13] < Trun> ok
[15:14] < MS-> Was only saying here because you weren't very communicative during mentor time
[15:14] < MS-> and haven't been saying anything on email
[15:15] < MS-> More generally, I think discussions around checkin messages have brought something interesting to light
[15:15] < MS-> which I posted to the list
[15:15] < MS-> Does everyone understand what I meant there?
[15:15] < Davb1> (When was it debated on IRC because i'd like to read the logs)
[15:15] < Davb1> Yeah seems fair enough
[15:16] < Chong-> I understand :-)
[15:16] *** MS- checks time
[15:16] < j_baker> Yes. I understand.
[15:16] < MS-> Chong-: I noticed - your checkin messages have become clearer :)
[15:16] < Trun> Yes. I understand.
[15:17] < Chong-> MS-: Thanks :-)
[15:17] < Davb1> Mine are usually pretty brief and informal "did this 'cause this wasn't working" - the post to the ML is certainly useful
[15:17] < MS-> I know it was a bit strict thing (policing checkins) , but it can make a huge differece
[15:17] < MS-> Davb1: Informal is fine -
[15:18] < MS-> yours have naturally defaulted to a "'cause" approach
[15:18] < MS-> which is my default as well
[15:18] < MS-> But I'd not considered that simply summarising without *why* was natural as well
[15:18] < j_baker> I admit sometimes mine can be cryptic and hard to decipher, but I generally try to be descriptive.
[15:18] < Davb1> Yeah
[15:19] < MS-> j_baker: Yours are generally OK as well - you have a nice habit of checking in often
[15:19] < Davb1> I also look at this http://cia.vc/stats/author/davbo and see how it reads
[15:19] < MS-> Davb1: That's a good habit - thanks :)
[15:20] < MS-> terse is often fine as long as it covers the why
[15:20] < MS-> The diffs will cover the what and how
[15:21] < MS-> To give a completely unrelated view of checkin messages http://code.google.com/p/facilitate/source/list
[15:21] < MS-> That's what I'm working on during the day - the general gist of things should be gettable from that, without any detail..
[15:22] < Davb1> Hah r105 Should not be checked in
[15:22] < MS-> Yep, someone else checked that file in
[15:22] *** vmlemon_ thinks a minute was too much for reheating his cup of coffee in the microwave...
[15:22] < MS-> So I was removing it and explaining why
[15:22] < MS-> which boils down to "should not be there" :)
[15:23] < Davb1> :-)
[15:23] < MS-> I've also noticed that there seems to be a constant level of lines of text for checkins
[15:23] < MS-> eg 12 lines over 3 checkins or 12 lines over 12 checkins
[15:23] < MS-> You can't really escape that
[15:24] < MS-> unless you lose clarity
[15:24] < MS-> Beyond that though, I think everyone appears to be progressing well in the projects I have a clear following of
[15:24] < MS-> So, question is
[15:25] < MS-> Is there anything you guys think I or Lawouach or mhrd-afk should be doing ?
[15:25] < MS-> :)
[15:25] < MS-> (aside from sleep)
[15:25] < MS-> (or drinking caffienated beverages)
[15:25] < orphans> I think Lawouach should take me on holiday with him next time
[15:25] < MS-> heh
[15:26] < MS-> orphans: You're not supposed to be here anyway, so I'll ignore that
[15:26] < orphans> :)
[15:26] < MS-> Seriously BTW
[15:26] < MS-> If anyone thinks something could be improved, please let us know
[15:26] < j_baker> Personally, I would like it if someone would review my code to some degree and give me an idea of what's clear and what needs to be documented better. And also take a precursory glance to make sure I'm not doing anything stupid.
[15:26] < MS-> Even if it can't happen immediately
[15:27] < MS-> j_baker: Will do
[15:27] < MS-> FWIW, I am glancing over things to check stuff isn't happening that is stupid :)
[15:27] < MS-> Probably ought to say that though
[15:27] < MS-> At present it has been a bit of glance mode
[15:27] < j_baker> I see.
[15:28] < MS-> However I'll set aside some decent time
[15:28] < MS-> The 1/2 way point for GSOC is also the point where my work deadlines let up
[15:28] < Davb1> Yeah, mhrd-afk sent me an email last week when he'd seen me complaining about something in a checkin message and offered a solution :-)
[15:28] *** Davb1 is happy with progress
[15:29] < MS-> We do actively tend to read the checkin messages
[15:29] < Davb1> yeah, it's nice to know :)
[15:29] < vmlemon_> Time to call the round tuit supplier again, I think ;)
[15:29] < MS-> Once you're used to them it's quite relaxing really
[15:29] < orphans> I quite like reading what everyone's up to too, it's kinda fun seeing all the stuff going on around you
[15:29] < MS-> Indeed :-)
[15:30] < MS-> That's actually part of the idea behind /Sketches as well
[15:30] < MS-> It's a bit unusual in open source to have a /Sketches area
[15:30] < Lawouach_> indeed
[15:30] < MS-> the closest you'd normally get is Scratch branches
[15:30] < MS-> But it's actually alot more open
[15:30] < MS-> as a result
[15:31] < orphans> MS-, off topic, but whilst I think of it can you change the address on cia.vc so it points to viewvc rather than viewcvs
[15:31] < MS-> orphans: No idea if I can
[15:31] < MS-> (not my site)
[15:31] < MS-> (Would be nice if we could)
[15:31] < orphans> ok, np. thought it might be an option somewhere
[15:32] < MS-> /Sketches does also encourage you not to develop under a bushel
[15:32] < Davb1> i know orphans has played with Paint and others have which is useful for me since there are still bugs to iron out with the features in there atm
[15:32] < vmlemon_> Speaking of CVS, some of the links to stuff in it on the wiki are/were broken
[15:32] < j_baker> It seems to be fixed now.
[15:33] < j_baker> At least on edit.kamaelia.org
[15:33] < MS-> FWIW j_baker once my work crush is over, I'm actually intending on porting it all to be usable on top of your codebase
[15:33] < MS-> So you'll probably get the best possible review that way
[15:33] < MS-> :)
[15:33] < orphans> Davb1, paint = almost as much fun as Speak n write :) when I can draw moustaches on people it'll overtake it I think :)
[15:33] < MS-> And a free flickr/youtube clone at the same time
[15:33] < j_baker> Sounds fun. And scary at the same time. :)
[15:34] < MS-> Well, it sounds fun to me and may seriously break some people I know, so that's always a plus
[15:34] < MS-> :)
[15:34] < Davb1> hah orphans, images will be one of the next things implemented, they're dead easy with pygame
[15:34] < vmlemon_> Take it to the next level - Speak 'n' Paint ;)
[15:35] < MS-> OK, so I guess the only major comment coming back is "a bit more review of my code please"
[15:35] < MS-> That's a fair cop :)
[15:35] < MS-> There is one way to guarantee review of course - put it up for merge.
[15:35] < MS-> j_baker: Your packaging tools will be first up for that as a result :)
[15:36] < MS-> OK, moving on
[15:36] < MS-> 4.2 Other
[15:36] < MS-> ^^^^^^^^^
[15:36] < MS-> Rather generic - anything else ?
[15:36] < MS-> non-GSOC related, but kamaelia related ?
[15:37] < j_baker> Did you want me to come up with a solution to the CSA problem I posted, or were you working on it?
[15:37] < MS-> I think it just needs periodic reminders to be made for one of us to do so
[15:38] < MS-> If you do, I'll happily review it, otherwise it'll have to be this weekend
[15:38] < MS-> Fixing the CSA would be the highest priority thing I can think of though
[15:38] < MS-> It's an unusual corner case really
[15:38] < MS-> But still, I kinda think of the TCP subsystem as the core
[15:39] < j_baker> Yeah. There are a LOT of other components that depend on it.
[15:39] < MS-> Indeed
[15:40] < MS-> OK, all sounds good.
[15:41] < Davb1> Overall is GSoC progress going alright you think MS-?
[15:41] < MS-> FWIW, I actually want to merge your app onto mainline as soon as I can - even if parts are simply rebranded as being a vanilla webserver :)
[15:41] < MS-> Davb1: Overall, yes. I think picking projects based on people having a vested interest in them (for whatever reason)
[15:41] < MS-> is actually going really well.
[15:42] < orphans> "for whatever reason" :D
[15:42] < Davb1> good, i've been enjoying it so far anyway :)
[15:42] < MS-> It's a very different feel from different years :)
[15:42] < MS-> Davb1: Me too :)
[15:43] < MS-> OK, is there anything else anyone wants to raise at this point?
[15:43] *** MS- waits a minute
[15:44] *** MS- guesses not, as he watches the tumbleweed blow by
[15:44] < MS-> moving on then
[15:44] < MS-> 5. Date/Time of next weekly meeting
[15:44] < MS-> -----------------------------------
[15:44] < MS-> Thursday 3rd July 2008, 4pm UK time
[15:44] < MS-> I'm guessing that's fine for everyone ?
[15:44] < MS-> j_baker: if you told me you're disappearing next week it wouldn't surprise me :)
[15:45] < Chong-> fine for me :-)
[15:45] < j_baker> Nah, I've already discussed my situation with my boss and told him about my schedule here as far as mentoring and meetings are concerned.
[15:45] < MS-> cool
[15:46] < MS-> in which case, i declare the meeting done
[15:46] < Davb1> Is celebrating American Independence not a good enough excuse for the rest of us?
[15:46] < Davb1> :P
[15:46] < MS-> ==============================================
[15:46] < MS-> END OF WEEKLY IRC KAMAELIA MEETING, 20080626
[15:46] < MS-> ==============================================
[15:46] < orphans> err, yeah, go Independence!
[15:46] < j_baker> Well, that would be a good enough reason if the meeting were the day after, Davb1.
[15:46] < MS-> 48 minutes
[15:47] *** orphans goes to lie down for a bit and forget about today
[15:47] < MS-> Davb1: It's rather uncouth to celebrate the annivesary of someone growing up leaving home - unless you're that person ;)
[15:47] < Davb1> hehe
[15:48] < MS-> (Besides, we don't tell them that we all do that)
[15:48] < Davb1> Not if you're glad to get rid of 'em ;-)
[15:48] < MS-> (it's a secret)
[15:48] < Davb1> hehe
[15:48] < MS-> It was a standing joke when I worked at Inktomi
[15:48] < MS-> The people in the US would be celebrating being shot of us, so we did likewise :)
[15:50] < j_baker> It's ok. We're happy to be rid of you guys too. :P
[15:50] < MS-> j_baker: Don't we know it :-)
[15:50] < MS-> We just burn an effigy of a terrorist with long hair and and bear each year with fireworks
[15:50] < MS-> Closest we get
[15:51] < j_baker> I do have to admit though, you guys' movie about that holiday (V for Vendetta) was a lot more cool than ours (Independence Day).
[15:52] < MS-> I still haven't seen that film. I really ought to.
[15:52] *** j_baker struggles not to type y'all every time he means to say "you guys."
[15:52] < MS-> I do like independence day. It's a wonderfully silly film
[15:52] < Davb1> Haha the virus in Independence Day is amazing.
[15:53] < MS-> Personally I like the fact that Brent Spiner thought no-one would recognise him
[15:53] < MS-> And the bit where the head of the NSA (or whatever) turns round and says "well, actually...." in response to the president going "there are no aliens"
[15:53] < j_baker> I wouldn't have recognized him had I not seen him in interviews about the film.
[15:53] < MS-> Fair enough :)
[15:53] < MS-> I always recognise people based on voices
[15:54] < MS-> Probably because I listen to tv alot (much like other people do with radio)
[16:10] *** Davb1 can't stand the "Data Episodes" of Star Trek
[16:11] < Davb1> oh MS- I did read your comments about that video i linked yesterday
[16:11] < Davb1> I agree entirely, I just thought it was interesting
[16:12] < MS-> Yeah, some of the comments around the video are really quite badly misinformed
[16:12] < Davb1> Was the guy commenting on it an American?
[16:12] *** MS- has sat in a meeting with Erik Huggers and heard him very categorically wax lyrical about wanting the BBC to do more with open source and have a more positive impact
[16:13] < MS-> Davb1: Dunno
[16:13] < Davb1> He didn't seem to understand how closely the govt keeps an eye on the BBC
[16:13] < MS-> (When I say sat in a meeting I wasn't sitting silent either - there was like a dozen of us there, talking etc)
[16:13] < MS-> who?
[16:13] < MS-> who doesn't?
[16:13] < Davb1> whoever subtitled the video
[16:13] < MS-> the person making the comments
[16:13] < MS-> yes
[16:14] < MS-> indeed
[16:14] < MS-> So many possible reasons to rip into it with regard to that video
[16:14] < Davb1> I find it hard to believe Govt' would let Microsoft have such a large say in BBC activities
[16:14] < MS-> and missing it all by going after conspiracy theories
[16:14] < MS-> They don't
[16:15] < MS-> The "memorandum on understanding" was actually signed with lots of others as well
[16:15] < MS-> including people like IBM and Google
[16:15] < Davb1> Sorry, who's Erik Huggers?
[16:15] < MS-> it actually boils down to a fancy standing NDA
[16:15] < MS-> he's an ex-microsoft exec
[16:15] < MS-> who is now in change of (essentially) online stuff at the BBC
[16:15] < Davb1> Ah, now at the beeb?
[16:15] < Davb1> Right
[16:15] < MS-> He's in my direct chain of management
[16:16] < MS-> Actually seems like a nice guy, honest, up front and committed to doing the right thing
[16:16] < Davb1> Yeah
[16:16] < MS-> Though I believe "the right thing" is determined by where he works - which is fair enough
[16:17] < MS-> It wouldn't surprise me if he could be sold on the idea of growing our GSOC involvement TBH
[16:17] < MS-> He really did seem genuine about wanting to make a more positive involvement
[16:17] < MS-> That or copying the model
[16:21] < Davb1> Yeah that'd be cool. Open source fits nicely into the BBC really
[16:21] < Davb1> For some things at least
[16:22] < MS-> Most things really
[16:22] < MS-> We're not really a tech company
[16:23] < Davb1> I bet open source goes down horribly with a lot of middle management though
[16:23] < MS-> we're required to do R&D (primarily to give the BBC an edge but also to push the broadcast industry forward) and that's a really cool thing, but we're not a tech company
[16:23] < MS-> It's varied considerably
[16:24] < Davb1> Yeah
[16:24] < MS-> Though currently it's at risk in a way because it's at present the new "buzz word" - last year it was "Innovation" the year before it was "blue sky"
[16:24] < vmlemon_> They certainly do a lot of tech stuff, to say they're not tech
[16:24] < MS-> So, I'm not holding my breath, but will do my best to make things longer lasting :)
[16:24] *** bcarlyon|laptop has joined #kamaelia
[16:25] < MS-> vmlemon_: Yeah, but the BBC's core job is making cool stuff for us all to watch and listen to - to give something to think about and ponder about
[16:25] < vmlemon_> Hmm, what the hell is "blue sky"?
[16:25] *** bcarlyon|laptop has parted #kamaelia
[16:25] < vmlemon_> Very true
[16:25] < MS-> vmlemon_: Not manchester - it's all grey sky at the moment
[16:25] < MS-> Hm...
[16:25] < vmlemon_> Hehe
[16:26] < MS-> wonder if I could be evil and start a "grey sky thinking" meme
[16:26] < MS-> That'd be delightfully broken
[16:26] < vmlemon_> Yum
[16:26] < Davb1> I think that would be a difficult pitch MS- :P
[16:27] < MS-> Oh I dunno
[16:27] < Lawouach> back
[16:27] < vmlemon_> "Northern English Weather Thinking"
[16:27] < MS-> NEWT
[16:27] < MS-> I like it
[16:27] < MS-> It's got potential
[16:27] < MS-> You see all you need to do is pick out 5 other places where it rains that produce "innovation"
[16:28] < MS-> And pick 5 cool inventions/discoveries from each
[16:28] < vmlemon_> ;)
[16:28] < MS-> and just say "there you go"
[16:28] < MS-> COmpelling BS
[16:28] < Davb1> lmao
[16:28] < vmlemon_> Hah
[16:28] < Davb1> Masterfully done
[16:29] < MS-> Right gotta go
[16:29] < MS-> biab
[16:29] < Lawouach> isn't Newt the name of the child in Aliens?
[16:29] < MS-> Lawouach yep
[16:29] < Davb1> Cya MS- :-)
[16:29] < MS-> cya
[16:29] *** MS- has parted #kamaelia
[16:30] < Davb1> I was thinking that too Lawouach
[16:32] < Davb1> It's also an S-lang library apparently, but hey, what isn't
[16:37] *** vmlemon_ thinks S-lang sounds like some crappy pop band, for some reason ;)
[16:40] *** vmlemon__ has joined #kamaelia
[16:42] *** vmlemon__ is now known as vmlemon_
[17:08] < j_baker> Well, I have to say that cherrypy was the easiest framework to get working with the server, Lawouach_. :)
[17:08] < Lawouach> :)
[17:44] *** MS- has joined #kamaelia
[18:02] < orphans> Lawouach, ping?
[18:06] < Lawouach> pong
[18:06] < orphans> hey, how's it going?
[18:07] < Lawouach> good :)
[18:07] < orphans> cool, you ready for meetingness?
[18:08] < Lawouach> yeap
[18:08] < Lawouach> go ahead
[18:08] < Lawouach> let me know what you've done in the past week :)
[18:09] < orphans> cool, so this week I've turned the scheduler into an axon component (which from reading the logs back you've had a look at), and sorted out the step sequencer and added it to jam
[18:10] < orphans> which all seems to work ok :)
[18:11] < Lawouach> alright
[18:12] < Lawouach> I haven't had the chance yet to launch the application itself but I will
[18:12] < Lawouach> I was interested indeed by the scheduler component
[18:12] < Lawouach> I think it will need a bit of improvment
[18:13] < orphans> yeah, it's pretty much a direct port of the python version for now
[18:13] < Lawouach> it's a good start
[18:13] < Lawouach> what were your challenges this week then?
[18:14] < orphans> hah, I got caught up for about a day with a horrible python gotcha in the step sequencer
[18:14] < Lawouach> ah?
[18:14] *** orphans exaggerates slightly
[18:14] < Lawouach> which was?
[18:14] < orphans> just let me find it in the logs
[18:15] < orphans> a = [[[0, None]]*4]*4
[18:15] < orphans> a[0][0][0] = 2
[18:15] < orphans> print a
[18:15] < orphans> [[[2, None], [2, None], [2, None], [2, None]], [[2, None], [2, None], [2, None], [2, None]], [[2, None], [2, None], [2, None], [2, None]], [[2, None], [2, None], [2, None], [2, None]]]
[18:16] < Lawouach> :)
[18:16] < orphans> where * is doing a shallow copy rather than the deep copy I expected. Had me baffled for aages
[18:16] < Lawouach> yeah :)
[18:17] < Lawouach> it's like you should never use [], {} and other sequences like that in function signature
[18:17] < orphans> I was certain I was just setting one variable, then they were all going. I thought I'd accidentally looped somewhere
[18:17] < orphans> yeah, MS- showed me that one :)
[18:17] < orphans> the step sequencer dropped really nicely into the networking stuff though, which is encouraging :)
[18:17] < Lawouach> :)
[18:18] < orphans> and I'm all of 10 minutes work before jam can make something vaguely resembling music (drum beats)
[18:18] < Lawouach> I'll let you do that then if you will.
[18:19] < Lawouach> I really didn't get the time to look through your code yet
[18:19] < Lawouach> so there is little point wasting your time
[18:19] < orphans> no probs :)
[18:19] < Lawouach> I apologise
[18:19] < Lawouach> I'll review your code this weekend and will make comments either here or on the list before next Monday
[18:20] < orphans> it's fine. This week's been pretty straightforward I think (aside from issues with the design of scheduler which will need some thrashing out)
[18:21] < Lawouach> :)
[18:21] < Lawouach> I'm around this evening anyway
[18:22] < orphans> k, cool. If I think of anything else I'll ping you
[18:23] < orphans> back to the joy that is working in PD. Whoever thought ctrl-1 was a good shortcut?
[18:25] < Lawouach> :)
[19:21] *** Lawouach wonders how to deploy the SpeakNLearn application
[19:22] *** pphalen has joined #kamaelia
[19:22] < pphalen> Hello, I have a question about IRCSpeakerBot
[19:22] < MS-> Hi
[19:22] < pphalen> HI
[19:22] < MS-> Go ahead - I wrote it :)
[19:23] < pphalen> I'd like to adapt it to use on OS X, which has the 'say' builtin
[19:23] *** MS- nods
[19:23] < MS-> That should be a relatively simple change
[19:24] < pphalen> I've installed Kamaelia .5 and Axon 1.5 but am getting not found on the IRC module
[19:24] < MS-> We've got a new release candidate out - which is probably why
[19:24] < pphalen> Ah
[19:25] < pphalen> BTW, Kamaelia seems VERY cool
[19:25] < MS-> It's linked from here : http://edit.kamaelia.org/GetMashed
[19:25] < MS-> thank you :)
[19:25] < MS-> Which links to here: http://edit.kamaelia.org/release/
[19:25] < pphalen> OK
[19:25] < MS-> Installation of both axon & kamaelia is done from the single setup.py now
[19:25] < MS-> Which simplifies things :)
[19:26] < pphalen> Ah, good, that wasn't clear.
[19:26] < pphalen> So http://edit.kamaelia.org/release/Kamaelia-0.6.0-rc7.tar.gz
[19:26] *** MS- nods
[19:26] < pphalen> Great!
[19:27] < pphalen> I was thinking of calling IRCSpeakerBot.py with the channels as parameters and using sys.argv[1] to gather a list of them
[19:28] < MS-> Seems like a reasonable idea
[19:28] < MS-> The nice thing about the way we configure components these days BTW
[19:28] < MS-> ie like this:
[19:28] < MS-> class spokenIRCFilter(Axon.Component.component):
[19:28] < MS-> channels = ["#mashed", "#kamaelia", "#kamtest"]
[19:28] < MS-> Also means you can do this:
[19:28] < pphalen> There are two or three groups I like to follow that are sparsely populated
[19:28] < MS-> spokenIRCFilter(channels = ["#kamaelia", "#python", "#foobar"])
[19:29] < pphalen> channels = []
[19:29] < pphalen> for channel in channels_in:
[19:29] < pphalen> channels.append('#' + channel)
[19:29] < pphalen> maybe?
[19:31] < MS-> Yep, that'd work
[19:31] < pphalen> Also perhaps, if os.uname()[1] == 'Darwin': UnixProcess("while read word; do echo $word | say; done")
[19:31] < MS-> That's a good idea.
[19:31] < pphalen> Thanks! I'll go try it. :)
[19:32] < MS-> Please do - I hadn't actually expected it to be useful to anyone else - if you find it useful I'll package it up with autodetection for Mac OS :)
[19:32] < pphalen> From a IRC etiquette standpoint, should I change the nick
[19:32] *** MS- nods
[19:32] < MS-> Yes, I would
[19:33] < pphalen> So maybe I'll abstract that out into a parameter too
[19:33] < MS-> It's a 40 minute hack or so, so there's liable to be some nice ways to extend it :)
[19:33] < MS-> Sounds like a plan :)
[19:33] < pphalen> Thanks again!
[19:33] *** pphalen has parted #kamaelia
[19:40] *** vmlemon__ has joined #kamaelia
[19:40] *** MS- notes http://pyprocessing.berlios.de/ has been merged into python 2.6 & python 3.0
[19:41] < MS-> I'll have to review the way we're doing multiprocess stuff then I guess
[19:41] < MS-> since that'll be in the standard lib
[19:42] < vmlemon__> o.O http://news.slashdot.org/article.pl?sid=08/06/24/0216205
[19:42] *** vmlemon__ is now known as vmlemon_
[19:45] < MS-> Here's an interesting thought
[19:46] < MS-> When a component/microprocess dies, the scheduler could quite happily catch that
[19:46] < MS-> with a bare try...except...
[19:46] < MS-> It could then choose to call an emergency shutdown on the component
[19:46] < MS-> The component could, then if it so chose respond by spawning a new microprocess
[19:46] < MS-> potentially with the same in/outboxes
[19:47] < MS-> Or it could choose to shutdown
[19:48] < MS-> I wonder what that'd give you
[19:49] < MS-> The thing is, the earliest versions of Axon *did* have bare try..excepts there, but I think I wasn't really sure what I wanted from that
[19:51] < MS-> It'd probably make the system much more resilient under fire as well
[19:51] < MS-> (which is highly desirable)
[19:54] < MS-> I think this time it might be an idea to find out what erlang does - though what erlang does will be appropriate for a pure functional language, not necessarily what you want in python
[19:54] < MS-> I think I'll post about it on my blog & on the list
[19:57] < MS-> (the idea that is)
[20:04] *** vmlemon_ has joined #kamaelia
[20:27] *** Trun has joined #kamaelia
[20:30] < MS-> Trun: Heya
[20:30] < Trun> hi
[20:31] < MS-> I don't suppose you could take a look at the last 10-20 lines of the log http://yeoldeclue.com/logs/kamaelia2008-06-26_log.html - ie [19:45] -- [19:57] and give me your thoughts could you?
[20:31] < Trun> sure :-)
[20:32] < MS-> ta :)
[20:35] < Trun> I'm not sure if I get it. You mean something like hooking a "callback" for the end of the component? (I don't know erlang)
[20:38] < MS-> No,ignore the erlang comment
[20:39] < MS-> It's not relevant
[20:39] < MS-> The idea is to go back to something we once did
[20:39] < MS-> but with some experience
[20:40] < Trun> so you have a component SimpleComponent, that, as soon as it dies (by an exception?), it calls some code that chooses to shutdown itself or activate a new component that substitutes itself?
[20:40] < MS-> turn it round slightly
[20:40] < MS-> look at it from the perspective of the scheduler
[20:41] < MS-> At present the scheduler *essentially* does this:
[20:41] < MS-> for mprocess in runqueue:
[20:41] < MS-> try:
[20:41] < MS-> result = mprocess.next()
[20:41] < MS-> except StopIteration:
[20:41] < MS-> del self.threads[mprocess]
[20:41] < MS-> mprocess.stop()
[20:41] < MS-> knockon = mprocess._closeDownMicroprocess()
[20:41] < MS-> self.handleMicroprocessShutdownKnockon(knockon)
[20:42] < MS-> Whereas at one point in the past it did this:
[20:42] < MS-> for mprocess in runqueue:
[20:42] < MS-> try:
[20:42] < MS-> result = mprocess.next()
[20:42] < MS-> except:
[20:42] < MS-> del self.threads[mprocess]
[20:42] < MS-> mprocess.stop()
[20:42] < MS-> knockon = mprocess._closeDownMicroprocess()
[20:42] < MS-> self.handleMicroprocessShutdownKnockon(knockon)
[20:43] < MS-> This of course makes the /system/ next to indestructable in the case of a rogue component
[20:43] < MS-> Which was why it was there
[20:43] < MS-> but it did make killing kamaelia systems relatively hard
[20:43] < MS-> so over time that's been eroded
[20:43] < MS-> However.
[20:43] *** vmlemon_ found a broken tree splayed across a town path, a few days ago (got blown over in very strong wind) - http://www.flickr.com/photos/vmlemon/2612527061/
[20:43] < MS-> We can now do this:
[20:43] < MS-> self.scheduler.stop()
[20:43] < MS-> In order to shutdown the system
[20:44] < MS-> which makes it sensible to consider going back to this bare try...except
[20:44] < MS-> vmlemon_: Impressive tree failure
[20:45] < MS-> Anyhow, changing the bit after the except opens up interesting options
[20:45] < MS-> Such as (maybe) copying this logic:
[20:45] < vmlemon_> Some elderly folks came a few hours later, and started chucking parts of the tree into a nearby ditch (which was already full of blown over signs and shopping baskets, of all things)...
[20:46] < MS-> result = mprocess.error_handling()
[20:46] < MS-> if isinstance(result, reactivate):
[20:46] < MS-> ...
[20:46] < MS-> or
[20:46] < MS-> if isinstance(result, newComponent):
[20:46] < MS-> for c in result.components():
[20:46] < MS-> c.activate()
[20:47] < MS-> etc
[20:47] < MS-> So the idea would be to call the thing and allow the thing to just shutdown, or pass on a generator worth activating in place of an exception based death
[20:48] < MS-> The upshot would be that the system could actually gain greater restart support
[20:48] < MS-> hence greater resilience
[20:48] < MS-> (ie inplace process replacement)
[20:49] < Trun> would the code of mprocess.error_handling() receive the raised exception as parameter?
[20:49] < MS-> Maybe, depends on where we can grab the exception from (reliably) in a
[20:49] < MS-> try:
[20:49] < MS-> except: # no args
[20:49] < MS-> form
[20:50] < MS-> try: except:
[20:50] < MS-> catches string exceptions btw
[20:50] < MS-> where as
[20:50] < MS-> try:
[20:50] < MS-> except Exception, e:
[20:50] < MS-> doesn't
[20:50] < Trun> I mean, would this mechanism be something "auxiliar" that can be provided but not "very used" or a mechanism that you would encourage people to use for "normal exception handling"?
[20:51] < MS-> I think it would be rare to use it, but in places where it could be used (I'm thinking network servers) it could be pretty invaluable
[20:51] < Trun> ok
[20:52] < Trun> would error_handling be always implemented? I mean, maybe if the component doesn't implement it, it would be useful to reraise the exception, right?
[20:54] < MS-> No. The aim exception would be blocked
[20:54] < MS-> s/aim//
[20:54] < MS-> Currently its possible for a bug to take out the server
[20:55] < MS-> which is kinda unacceptable really for a production system
[20:55] < MS-> (speaking from experience)
[20:56] < MS-> Interestingly, looking at an ancient version of Axon,
[20:56] < MS-> in version 1.4, it changed from this:
[20:56] < MS-> try:
[20:56] < MS-> runComponentABit
[20:56] < MS-> except:
[20:56] < MS-> pass
[20:56] < MS-> to this:
[20:56] < MS-> try:
[20:56] < MS-> runComponentABit
[20:56] < MS-> except Exception, e:
[20:56] < MS-> if crashAndBurn:
[20:56] < MS-> raise e
[20:57] < Trun> so you could just choose wether you wanted to activate the system?
[20:58] < MS-> Not sure what you mean by that - I guess you mean "not crash the system" rather than activate
[20:59] < Trun> sorry, by "activate the system" I meant that you could choose if the error handling management was being used or not
[20:59] < Trun> yep, "not crash the system"
[21:01] < MS-> hmm. interesting
[21:01] < Trun> so was that "crashAndBurn" variable set to False when running in production?
[21:01] < MS-> Found the initial generator based socket test
[21:01] < MS-> That was the idea
[21:02] < MS-> dated 2002.11.06.15.57.46
[21:02] < MS-> It's interesting actually, I think people who've looked at various parts of kamaelia would recognise a certain core here
[21:03] < MS-> (It's a simple echo server using generators)
[21:03] < Trun> (where can I find it? is it in the SVN or in a concrete release?)
[21:03] < MS-> But my instinct then was to do this:
[21:04] < MS-> for sock in readables:
[21:04] < MS-> process = lookup[id(sock)]
[21:04] < MS-> try:
[21:04] < MS-> value = process.next()
[21:04] < MS-> except:
[21:04] < MS-> ... # shutdown
[21:04] < MS-> It's not in a release
[21:04] < MS-> I don't think...
[21:04] < MS-> nope
[21:06] < MS-> It's useful though for this discussion. I'll post a certain part of the core on my blog I think
[21:08] < MS-> In case you're wondering, its in a tar ball of an old archive of a tar ball of an internal CVS repository
[21:10] < Trun> yeah, I was looking at the SVN, but it starts on 2004 with code coming from the CVS repository
[21:10] < MS-> no, this predates the public CVS repository
[21:11] < Trun> oh
[21:11] < Trun> was kamaelia hosted in a private CVS repository back then?
[21:11] < MS-> Yep - before we released as open source
[21:12] < MS-> We were using CVS from day one more or less.
[21:20] < Trun> I was still thinking in the crashAndBurn thing...
[21:20] < Trun> would it make sense to have that "crashAndBurn" configured in a global AND component basis?
[21:21] < Trun> like asking the component "you want to raise any exception? [y/n/don't know]" -default to "don't know"-, and, if "don't know" ask the global variable?
[21:22] < Trun> I mean, I'm thinking of whenever someone is writing code and a common exception is raised. Wouldn't it become a problem to discard the information provided by the exception itself?
[21:22] < MS-> Maybe - it's _very_ easy to over complicate things
[21:22] < Trun> how did you gather the exception information in older versions of Axon, when you did the try..except thing?
[21:22] < MS-> we didn't - we just killed the thing off
[21:23] < MS-> My thought was that maybe we could allow restart
[21:23] < Trun> but when you were writing code and a NameError or something like that because you did a typo, how did you find it?
[21:24] < Trun> s/NameError or something like that/NameError or something like that was raised/
[21:25] < MS-> That's why the scheduler doesn't contain that anymore :)
[21:25] *** vmlemon__ has joined #kamaelia
[21:25] < MS-> I'm wondering if there's a way of putting that resilience back in
[21:25] < MS-> but without losing the benefits.
[21:25] *** vmlemon__ is now known as vmlemon___
[21:26] *** vmlemon___ is now known as vmlemon_
[21:27] < Trun> (sorry, resilience in wordreference gives me two translations... flexibility -in a material- and endurance -in a person-... what did you mean by resilience?)
[21:27] < vmlemon_> Failure-protection
[21:27] < MS-> ...rephrasing..
[21:27] < MS-> yes, that
[21:27] < Trun> ok
[21:29] < MS-> Mind you...
[21:29] < MS-> That *entire* section :
[21:30] < MS-> http://kamaelia.svn.sourceforge.net/viewvc/kamaelia/trunk/Code/Python/Axon/Axon/Scheduler.py?view=markup
[21:30] < MS-> line 439
[21:30] < MS-> to line
[21:30] < MS-> 462
[21:30] < MS-> is doable as just a function call
[21:30] < MS-> meaning we could have our cake and eat it - make it a switch
[21:31] < MS-> Though adding in a function call there affects the performance of the whole system
[23:32] *** bcarlyon|laptop has joined #kamaelia
[23:32] *** bcarlyon|laptop has parted #kamaelia
[23:40] *** vmlemon__ has joined #kamaelia
[23:40] *** vmlemon__ is now known as vmlemon_