[06:44] *** vmlemon__ has joined #kamaelia
[06:44] *** vmlemon__ is now known as vmlemon_
[06:46] *** Lawouach_ has joined #kamaelia
[06:46] < Lawouach_> morning all
[06:46] *** vmlemon__ has joined #kamaelia
[06:47] *** vmlemon__ is now known as vmlemon_
[06:51] < vmlemon_> Hi
[07:17] *** vmlemon__ has joined #kamaelia
[07:18] *** vmlemon__ has joined #kamaelia
[07:18] *** vmlemon__ is now known as vmlemon_
[08:13] *** mhrd-afk is now known as mhrd
[08:14] < mhrd> hi all (just finished reading the weekend's scrollback excitement)
[08:15] < Lawouach_> :)
[08:15] < Lawouach_> Now coffee break :)
[08:17] < mhrd> MS- / Chong misunderstanding is unfortunate, but these things happen. Chong obviously did try to give warning; but it helps to be more explanatory as people don't necessarily share the same knowledge about things :-) (I've never heard of that show either!)
[08:17] < mhrd> orphans' timing issues: ought to have a chat with him if he's not already resolved them to his satisfaction
[08:18] *** orphans has joined #kamaelia
[08:22] < Lawouach_> hi orphans
[08:23] < mhrd> hi orphans: how's the timing issues? (and life in general :-) )
[08:23] < Lawouach_> mhrd: Regarding students not being loud and clear enough when they might be away I think may indeed have to reiterate that GSoC is a bit like a work placement in its commitment really.
[08:24] < Lawouach_> Students are working on OSS projects but they do so as part of an agreement
[08:24] < mhrd> Lawouach_: indeed
[08:24] < Lawouach_> It's different from willingly on your spare time doing the same thing.
[08:24] < orphans> morning all
[08:25] < orphans> timing issues = interesting - I'm still trying to work out what the right way to do everything is. Currently in the trying a failing and learning stage methinks
[08:26] < orphans> life in general = pretty good :)
[08:26] < mhrd> cool :)
[08:26] < Lawouach_> :)
[08:26] < mhrd> I've had to deal with timing issues with Kamaelia stuff before and with the Java VoIP stuff I'm doing at work ...
[08:26] < mhrd> the short answer is that unless you do platform specific optimisations, you won't be able to get better accuracy than you are already
[08:27] *** Chong- has joined #kamaelia
[08:27] < Lawouach_> Hi Chong-
[08:27] < Chong-> morning, Lawouach_
[08:27] < orphans> yeah, I think I came to that conclusion. Now it's more about designing something which is easy enough but flexible enough to do what I want
[08:27] < orphans> hey Chong-
[08:27] < mhrd> python, java etc.. all try, to some degree, to hide you from the platform details - so they provide a "best effort" timer
[08:27] < Lawouach_> mhrd: You'd avise a good buffer management and a simple timer synchronisation?
[08:27] < mhrd> ooi why do you need that much accuracy?
[08:28] < Chong-> morning, orphans and mhrd
[08:28] < Lawouach_> mhrd: That's my question too ;)
[08:28] < mhrd> Lawouach_ : not quite sure I understand what you're suggesting, but I probably do agree :)
[08:28] < orphans> ah - well, I'd like to ideally get < 1ms because the limit between a human hearing two sounds at seperate times is ~2-10ms
[08:29] < mhrd> things like the audio subsystem work okay since they have built in FIFOs which you just ensure are filled with data - so you don't need to be particularly accurate (you just write in large chunks every few 10s of milliseconds)
[08:29] < Lawouach_> Well if your timer is not precise enoufgh, or in other way if you can't rely on it, you have to provide the audio synchronisation at a different stage
[08:29] < mhrd> yep
[08:29] < Lawouach_> Buffering and making sure you always enough data seems like one simple solution
[08:29] < mhrd> orphans: what are you causing to happen at specific times?
[08:29] < orphans> that's all offloaded to whatever's producing the sound though - nowt to do with me
[08:30] < mhrd> filling a buffer? triggering a sound playing? something else?
[08:30] < orphans> mhrd, sending out messages which trigger a sound (in some other program)
[08:30] < mhrd> what kind of msgs? what is the "other program" ?
[08:30] < orphans> OSC messages (or MIDI messages), and anything which will take them
[08:31] < orphans> I'm using pure data (puredata.info) for testing
[08:31] < mhrd> are the messages sporadically timed? or is it a constant stream (like playing out audio samples) ?
[08:31] < orphans> sporadically timed
[08:31] < mhrd> hmm, the awkward case :)
[08:32] < Lawouach_> :)
[08:32] < orphans> yeah, it's more about knowing when to trigger to get them out fast enough
[08:32] < mhrd> so you're filling a buffer for the "other program", which then sorts out exactly what to do and when?
[08:32] < orphans> yeah
[08:33] < Lawouach_> Hmm. Still you don't necessarily have control on how the consumer will deal with your way of sending messages out.
[08:33] < mhrd> ok ...
[08:33] < Lawouach_> Meaning you have to be rather sensible in your producer
[08:33] < orphans> no, I have no control really
[08:33] < orphans> the spec says that the consumer should just deal with the messages as they arrive
[08:33] < mhrd> yeah, the problem is you're not running on a "real time OS" with a real time "hard" scheduler ...
[08:33] < Lawouach_> okay
[08:33] < orphans> yeah
[08:34] < mhrd> any requests your thread makes to be woken at any time are just a request - the OS will not guarantee to honour it ...
[08:34] < mhrd> so saying sleep(10ms) will only guarantee that you will be woken *at least* 10ms later ...
[08:34] < orphans> yeah, I've been reading a bit around
[08:34] < mhrd> so if you're trying to time output and you don't want to get behind, then you want to find out what the new time is after the sleep() returns; and compensate ...
[08:34] < mhrd> cool
[08:34] < Lawouach_> maybe you could think it the other way
[08:34] < orphans> MS-'s code illustrates it nicely
[08:35] < Lawouach_> Rather than doing time-based sync', you could use size-based sync'
[08:35] < Lawouach_> like a socket buffer
[08:35] < Lawouach_> so you fill a buffer of messages and send them in one go
[08:35] < Lawouach_> when that buffer is full
[08:35] < mhrd> yep
[08:35] < Lawouach_> in such case the time is less of a concern
[08:35] *** aNickName has joined #kamaelia
[08:36] < Lawouach_> But would that play well with existing consumers and the way most people would implement consumers... I don't know :)
[08:36] < mhrd> if you're unable to do that; take a look at Kamaelia.Util.RateControl.ByteRate_RequestControl (apologies for the rubbish name) ...
[08:36] < Lawouach_> :)
[08:36] < orphans> mm. The other think I haven't really looked at properly is OSC supposedly supports timestamping
[08:37] < orphans> not sure how much it's actually supported, but that might make the whole job a bit easier
[08:37] < mhrd> its a timer I wrote to improve rate-controlled file reading; and it does alot of stuff to compensate for timer delays and to try to prevent drift due to rounding errors
[08:37] < mhrd> if you can attach playout timestamps to the data you're writing out then that sounds an excellent plan :)
[08:37] *** bNickName has joined #kamaelia
[08:38] < orphans> the problem is that you really want to be signalling as close to the time you want it played, cause someone might delete/change it in the meantime
[08:39] < mhrd> its a trade off that is a weakness of doing stuff with computers, particularly with desktop multitasking OSes ..
[08:39] < Lawouach_> orphans: well it depends really. Do you plan that every peer in the network lays the sound right at the same time?
[08:39] < mhrd> you've got a trade-off to determine: how small can you make your buffer before spikes in CPU load (from other activity) causes problems
[08:40] < Lawouach_> It seems to me that you want the music to be continuous locally where it's played. But it might be offset from other peers
[08:40] < orphans> Lawouach_, it's not massively important, probably more important locally
[08:40] < Lawouach_> Okay
[08:40] < orphans> well, definitely more important locally
[08:40] < Lawouach_> so that already allievates part of the concurrency and synchronisation constraints.
[08:40] < mhrd> simplest way to determine it is 1) experimentally, 2) provide a user controllable buffer size (since their system will be different to yours)
[08:41] < orphans> I'm not 100% sure I understand the idea of the data buffer completely
[08:41] < mhrd> ok: take the situation that you're playing a WAV file ...
[08:41] < orphans> yup
[08:42] < mhrd> the OS, application software, etc. will be rubbish at doing exact timing ...
[08:42] < orphans> don't I know it
[08:42] < mhrd> so its completely impractical, to say, try to generate an interrupt every time a single sample needs to be played out, and to try and play it out exactly on time ...
[08:43] < orphans> uh huh
[08:43] < mhrd> so the way your PC solves it is the sound hardware has a big input buffer
[08:43] < mhrd> and only interrupts the system when the buffer is starting to run dry
[08:43] < orphans> yeah
[08:43] < mhrd> then then software fills it with a large chunk of data
[08:44] < mhrd> so the exact time this is done at doesn't matter so much - and the cpu is being interrupted less often, which is more efficient
[08:44] < Lawouach_> and user experience is good :)
[08:44] < mhrd> the sound hardware then has hardware timers and plays the individual samples out of the buffer when they're needed (every 441000's of a second for example)
[08:44] < mhrd> yep
[08:44] < mhrd> the trade-off of course, is that the latency is higher (because you've got a big buffer in the way)
[08:44] < orphans> ok, so how does that correlate to the sporadic case? I timestamp all of the messages and send the buffer every n ms?
[08:45] < mhrd> if the playout system will accept timestamped data, then you just try to make sure the buffer is always reasonably full (as Lawouach_ suggests)
[08:45] *** Chong- has parted #kamaelia
[08:45] < mhrd> if it doesn't; another solution might be to try to find a way to go from sporadic to periodic ...
[08:46] < Lawouach_> orphans: just one general note, trying to make things highly synchronised is usually hard and rarely needed in most domains. The buffer solution is usually a way to compensate for the trade off made by the OS.
[08:46] < mhrd> indeed
[08:46] < mhrd> eg. is it possible to fill in the gaps with some kind of null message? and instruct the receiving programme to play out one message every 'x' milliseconds
[08:47] < Lawouach_> Areas where you would need perfect real-time synchronisation would be stoke market, health care, planes. Try to ask yourself: "does my application require such high standard as a plane software?" :)
[08:47] < mhrd> people pay big premiums for dedicated specialist equipment to do low latency/highly synchronised versions of the same jobs a cheap PC can do with poor timing/latency
[08:47] < orphans> mhrd: mm, probably possible if you do a lot of work on the receiving program, but not in the general case
[08:47] < mhrd> Lawouach_ : many broadcasting apps too :)
[08:48] < Lawouach_> :)
[08:49] < mhrd> can you point me at a URL for docs/overview of the receiving program you're using?
[08:49] *** mhrd feeling very abstract :)
[08:49] < orphans> here's the protocol which programs should be following: http://opensoundcontrol.org/spec-1_0
[08:51] < Lawouach_> An OSC server must have access to a representation of the correct current absolute time. OSC does not provide any mechanism for clock synchronization.
[08:51] < Lawouach_> I wonder, what does "absolute time" mean here? How do you decide of its value?
[08:51] < mhrd> good question :)
[08:51] < orphans> mm, I read that somewhere
[08:51] < orphans> I think time since the epoch
[08:52] < mhrd> ah yeah - 3rd paragraph
[08:52] *** Chong- has joined #kamaelia
[08:52] < mhrd> so you'll need to be aware of the datetime of the machine running the server :)
[08:52] < mhrd> so you're writing packets and sending them to an OSC server
[08:53] < mhrd> does indeed sound like you need to time-tag them, and make sure you send them a little before they're needed
[08:54] < orphans> yeah - rather than needing to wake up dead on when they need to be sent, needing to wake up a bit before
[08:54] < mhrd> yep
[08:54] < mhrd> exactly the same kind of "best effort" timing loop; just time the moment a little before :)
[08:54] < orphans> yeah
[08:55] < orphans> mm, cool
[08:55] *** Lawouach_ is cooking questions for orphans's meeting :)
[08:55] < orphans> has given me a lot to think about/work on
[08:55] < mhrd> enjoy :)
[08:56] < Lawouach_> :)
[08:56] < orphans> all this before my first coffee this morning too - I think it's probably time for me to fill my veins with some caffeine
[08:57] < mhrd> I've been sipping my fist cup of wholesome machine coffee whilst typing :)
[08:57] < mhrd> s/fist/first/
[08:57] < orphans> mm, envious
[08:57] *** Uraeus has joined #kamaelia
[08:57] < orphans> < = coffeee
[08:58] < mhrd> you wouldnt be so envious if you tasted it ;-)
[08:59] < Lawouach_> and I drink tea
[09:00] < Lawouach_> now that's a strange World
[09:02] < mhrd> yay, finished processing emails :)
[09:29] *** Chong- has parted #kamaelia
[09:30] *** Chong- has joined #kamaelia
[09:37] < vmlemon> Hi
[09:37] < mhrd> hi vmlemon
[09:56] *** MS- has joined #kamaelia
[09:56] < MS-> Morning
[09:57] *** MS- notes aNickName, bNickName are chong's alter-egos
[09:57] *** MS- notes Davbo's not here yet, & checks logs, bearing in mind mail he sent last week
[09:58] < MS-> I've re-enabled times on this page btw: http://edit.kamaelia.org/RecentChanges
[10:00] < mhrd> yay RecentChanges :-)
[10:00] < Chong-> morning, MS-
[10:00] < mhrd> fussy request: swap around date and page name? (will look nicer imho) :-)
[10:00] < MS-> mhrd: Well it's always largely worked, but the times /dates were removed which was a pain - I discovered why last night, and fixed it
[10:01] < Chong-> yes. aNickName, bNickName are for testing the IRCClient :-)
[10:01] < Lawouach_> Chong-: you might want to create a dummy IRC channel for those :)
[10:01] < MS-> mhrd: I'm probably going to change the format into a table
[10:01] < Lawouach_> off to lunch :)
[10:01] < MS-> enjoy
[10:01] < Chong-> cya, Lawouach_
[10:02] < mhrd> cya Lawouach_
[10:02] *** bNickName has parted #kamaelia
[10:02] *** aNickName has parted #kamaelia
[10:33] *** kamaeliabot has joined #kamaelia
[10:33] < MS-> there you are
[10:40] < Uraeus> hmm, first voice activated IRC bot I ever seen :)
[10:41] < MS-> heh
[10:44] *** Chong- has joined #kamaelia
[11:09] *** MS- has finished weekend spam deletion. Only 1100 of the b's
[11:11] *** vmlemon__ has joined #kamaelia
[11:11] *** vmlemon__ is now known as vmlemon_
[11:33] < MS-> Oooh. I've had a thought
[11:34] < MS-> Most mail that is spam causes scatterback
[11:34] < MS-> ie if I have an out of office mail message going out, that almost always bounces for spams
[11:34] < MS-> So, I can use these bounces to train a spam system
[11:35] < MS-> In a similar way to greylisting
[11:35] < MS-> Since people will do the opposite ie not respond with an "undeliverable" message
[11:36] < MS-> Won't give a definite "this is not a spam" for messages that don't give a bounce
[11:37] < MS-> But for anything that does bounce, it's much more likely to be spam
[11:37] < MS-> That'll massively assist with monday mornings/time off
[11:41] *** MS- changes out of office message to state that it's going to be left up, for the purposes of assisting killing spam
[11:48] < MS-> OK, that's the oddest crash
[11:50] < vmlemon_> Ouch, it looks like there's something wrong with my USB SD card reader's USB port, and just when I needed to use it...
[11:51] < MS-> ouch
[11:52] < vmlemon_> I can get it to mount on Linux after fumbling with the port and cable, if I'm lucky
[11:53] < vmlemon_> although it gives weird errors in the dmesg 90% of the time
[11:54] < vmlemon_> And annoyingly, I couldn't get it to work at all with a Windows machine here
[12:06] < MS-> Chong-: I fixed your page here: http://edit.kamaelia.org/Developers/Projects/3DTopologyVisualiser
[12:06] < MS-> hope that helps :)
[12:06] < MS-> Not sure how you managed it, but you'd manage to save the editor as the page contents
[12:06] < MS-> Which causes interesting "issues" when it came to editting the page (it tried to load the editor within the editor)
[12:08] < Lawouach_> back
[12:12] < Lawouach_> MS-: I've added myself to the wiki. I assume you have to validate the account
[12:15] < MS-> Nope - it sends and email you to click on.
[12:15] < MS-> at present it's not used, favouring the apache level username/password thing
[12:16] < MS-> It is used to enable you to add tags to pages thouh
[12:16] < MS-> and so that will grow to be more useful
[12:16] < MS-> On sourceforge, it was used to cause an error when hitting "edit" to not occur
[12:17] < MS-> (thus making a non-logged-in-edit look like the wiki was bust)
[12:18] < MS-> The security on there at the moment is primarily needed it seems to prevent spam
[12:18] < MS-> in practice
[12:19] < Lawouach_> okay
[12:19] < Lawouach_> thanks
[12:19] < MS-> Code is going in here btw - http://code.google.com/p/cerenity/
[12:19] < MS-> (that code was written entirely on my own time, and so is BSD licensed)
[12:20] < MS-> (as far as I'm concerned)
[12:20] < Lawouach_> alright
[12:20] *** Davbo has joined #kamaelia
[12:20] < MS-> Though I need to remove dependency on cgi_app & htmltmpl for that statement to be valid. Switching it over to use wsgi properly & something like either cheetah (or just use the CDML renderer properly) will eradicate that
[12:21] < MS-> Davbo: afternoon
[12:21] < Lawouach_> It'd be funny to make it GAE-compliant :)
[12:21] < Lawouach_> wouldn't it?
[12:21] < Lawouach_> you could scale (buzz-word inside)!
[12:22] < MS-> indeed - there's no reason it shouldn't really
[12:23] < Lawouach_> I was actually midly joking only. But well it's another task for another time :)
[12:24] < MS-> yeah, no rush :)
[12:25] < MS-> it was due to cerenity's existance (and being not too bad a code structure for it's type of code0
[12:25] < MS-> that made me want someone to look at (what became called) Shard's last summer
[12:25] < MS-> since if it's a component system it should support purely linear plugins like cerenity does as well
[12:29] < Davbo> Afternoon all
[12:30] < Lawouach_> hi Davbo
[12:32] < Davbo> Sorry I wasn't online earlier MS-, completely forgot. I know it's not meant as a meeting as such and I'm still quite confident about what I'm doing next.
[12:34] < MS-> Davbo: No problem - you did give me warning that you may forget things
[12:34] < MS-> (which was appreciated)
[12:36] < MS-> BTW, if you have any feedback on LikeFile / MakeHandle, I'd appreciate it . Your project will be relying on it under the hood (since its used inside the process stuff), hence the question
[12:36] < MS-> I realise that you said that you weren't sure what it's *for*
[12:37] < MS-> The core behind it is to allow the use of kamaelia stuff in non-kamaelia systems
[12:37] < Davbo> Oh yes, Lawouach_ kindly explained it to me last night.
[12:37] < MS-> but also allows certain kinds of usage to be simpler
[12:38] < MS-> Whilst the implementation of LikeFile on trunk at the moment has all those hidden issues,
[12:38] < MS-> http://kamaelia.svn.sourceforge.net/viewvc/kamaelia/trunk/Code/Python/Kamaelia/Examples/LikeFile/
[12:38] < MS-> does have a number of examples that should help clarify :)
[12:39] < Davbo> is the reason why it doesn't use Generators just to preserve Axon support for older versions of Python?
[12:39] < MS-> Reading this backward: http://cia.vc/stats/author/ms_ should help
[12:40] < MS-> no, it's because it has to due to the usecase
[12:40] < Davbo> ah
[12:41] *** MS- just tests an example on the console to explain more clearly what I mean by that :)
[12:44] < Chong-> MS-: Thank you very much. It works now :-)
[12:45] < MS-> Davbo: OK, example
[12:45] < MS-> from background import background
[12:45] < MS-> from LikeFile import LikeFile
[12:45] < MS-> from Kamaelia.Visualisation.PhysicsGraph.TopologyViewer import TopologyViewer
[12:46] < MS-> (all of that typed in an interactive python prompt)
[12:46] < Davbo> right
[12:46] < MS-> >>> background.start()
[12:46] < MS-> >>> TV = LikeFile(TopologyViewer()).activate()
[12:46] < MS-> >>>
[12:47] < MS-> The viewer pops up into existance and is running at the same time as the interactive python prompt
[12:47] < MS-> >>> TV.put("ADD NODE 1 1 auto -".split(), "inbox")
[12:47] < MS-> >>> TV.put("ADD NODE 2 2 auto -".split(), "inbox")
[12:47] < MS-> >>> TV.put("ADD LINK 1 2".split(), "inbox")
[12:47] < Davbo> I see
[12:48] < MS-> At all times the prompt returns, but the topology viewer continues running in the background accepting messages
[12:48] < Davbo> put being a LikeFile command?
[12:48] < MS-> yep
[12:48] < MS-> like file because it's "like a file" as in "something complicated going on concurrent to the mainline of execution"
[12:48] < Davbo> yeah
[12:48] < MS-> not "like file" as in "implements .read(), .write(), .seek(), .close()"
[12:49] < MS-> Essentially it's like a graphline running in a thread
[12:49] < MS-> as a threaded component instead of a normal generator based on
[12:49] < MS-> and with a slightly odd way of getting data in/out
[12:49] < MS-> (odd from a kamaelia perspective)
[12:50] < Davbo> hmm, right
[12:50] < MS-> Anyway, if you have time to play with it/review it for sanity, it'd be welcome
[12:50] < MS-> if you don't, that's no problem
[12:50] < MS-> reading checkin messages backwards from here:
[12:50] < MS-> http://cia.vc/stats/author/ms_
[12:50] < Davbo> uhh sure, it in your scratch?
[12:51] < MS-> yep
[12:51] < MS-> In: /trunk/Sketches/MPS/Experiments/Likefile2/likefile/
[12:51] < MS-> (sorry, not in scratch, but it does use *one* modification to the scheduler in scratch)
[12:52] < Davbo> ah "LikeFile" in scratch updated when I did svn update
[12:52] < Davbo> so i assumed that was it
[12:52] < MS-> Specifcally this change: http://kamaelia.svn.sourceforge.net/viewvc/kamaelia/branches/private_MPS_Scratch/Axon/Axon/Scheduler.py?r1=3885&r2=4131
[12:53] < MS-> The likefile that I'm developing is here at present: http://kamaelia.svn.sourceforge.net/viewvc/kamaelia/trunk/Sketches/MPS/Experiments/Likefile2/likefile/
[12:53] < MS-> it relies on that one change to the scheduler
[12:54] < Davbo> right
[12:58] < MS-> It's alot simpler than the existing likefile and has the advantage that it works properly for the cases that LikeFile *should* work for (but doesn't quite) :0
[12:58] < MS-> :)
[12:58] < MS-> I deliberately started from a copy/modification of Graphline to try and simplify someone's process of review
[12:59] < MS-> http://kamaelia.svn.sourceforge.net/viewvc/kamaelia/trunk/Sketches/MPS/Experiments/Likefile2/likefile/LikeFile.py?annotate=4141
[12:59] < MS-> for example, should help with showing what's new and why each bit was added
[13:01] < Davbo> oh alright thanks
[13:02] < MS-> As I say, only if you have time :)
[13:02] < MS-> thanks either way :)
[13:04] < Davbo> I understand get/put but I haven't used any child components yet
[13:04] < Davbo> so i'm not sure what's going on in the main loop
[13:06] < Davbo> it also sounds like the boxes are the wrong way round lol
[13:07] < Davbo> When you read the description next to them at least
[13:11] < Davbo> (maybe that's just me)
[13:13] < MS-> It seems wrong because the boxes are on the inside, not on the outside
[13:14] < MS-> If you look at diagram 1 in section 2.3 of this document:
[13:14] < MS-> http://edit.kamaelia.org/Docs/NotationForVisualisingAxon
[13:14] < MS-> all the inboxes/outboxes are on the inside of the component
[13:15] < MS-> _inbox gets it's messages from the child components outbox
[13:15] < MS-> _control gets it's messages from the child components signal
[13:15] < MS-> s/it's/its/
[13:15] < MS-> the reason it looks odd is because it *is* odd :)
[13:15] *** MS- goes to get munch
[13:15] < Davbo> ah i see
[13:32] < Davbo> oh i get it
[13:32] < Davbo> because you wrap LikeFile around components with their own boxes
[13:32] < Davbo> *facepalm* ;-)
[13:32] < Davbo> it only took 15 minutes.
[13:38] *** Lawouach_ has bought the new The Black Angels album
[13:38] < Lawouach_> rockin'!
[13:55] < Davbo> The Black Angels Death Song? Lawouach_?
[13:55] < Davbo> Velvet Underground
[13:55] < Lawouach_> The band
[13:56] < Lawouach_> But the sound is indeed reminiscent from VU
[13:56] < Lawouach_> http://www.myspace.com/theblackangels
[13:56] < Davbo> oh right lol
[13:56] < Davbo> I thought you'd bought a VU album called that or something
[13:57] < Davbo> never heard of these
[13:57] < Lawouach_> They're great
[13:57] < Lawouach_> If you're into that kind of music :)
[13:57] < Davbo> I'm a big fan of the Velvet Underground though
[13:58] < Lawouach_> check them out then
[14:00] < Chong-> Hi MS-, are you ready for our meeting?
[14:01] < MS-> yep
[14:01] < MS-> whenever you are
[14:02] < MS-> I haven't had a chance to review any of the code you've checked in
[14:02] < Chong-> cool
[14:02] < Chong-> np
[14:02] < MS-> Largely because you're waiting until code is "done" before doing so, so I can't check
[14:02] < Chong-> I checked them in yesterday
[14:02] < MS-> or review
[14:03] < Chong-> I will check them in more often in the future
[14:03] < MS-> Checkin messages btw should explain what's been checked in and why, generally speaking
[14:03] < Chong-> sorry for late checkin
[14:03] < MS-> unless it's been discussed to death
[14:03] < MS-> "RelationTopology Add: sudo add"
[14:03] < MS-> doesn't actually mean anything to me I'm afraid
[14:03] < Chong-> I see.
[14:03] < MS-> can you explain what you've checked in please
[14:04] < Chong-> I check in twice
[14:04] < Chong-> the first time with detailed explain, but I forgot to add sudo svn
[14:04] < MS-> check in what ?
[14:05] < MS-> http://cia.vc/stats/author/toplch
[14:05] < Chong-> I though the log might add automatically when I checkin the second time
[14:05] < MS-> Are you subscribed to the commits mailing list?
[14:05] < Chong-> the same code. but it failed because without sudo
[14:05] < MS-> http://edit.kamaelia.org/mailinglists
[14:05] < Chong-> no. only the group list
[14:06] < Chong-> I will subscribe it.
[14:06] < MS-> Everyone should be subscribed to the commits list
[14:06] < MS-> wonder if anyone else isn't
[14:06] < Chong-> np
[14:06] < MS-> if you had been subscribed you would have seen your checkin message
[14:07] *** Davbo wasn't subscribed, is now
[14:07] < MS-> And I would expect a follow up
[14:07] < MS-> Davbo: ta
[14:07] < MS-> I'm not sure I mentioned the commits list
[14:07] < Chong-> I also posted a review report for private_MPS_JL_IRCSupport and edited my project page today. Have you seen them?
[14:07] < Davbo> I believe you have in the past, before coding started
[14:07] < Davbo> but it's a very busy list
[14:07] < MS-> Davbo: cool
[14:08] < Chong-> It would be easier to see if the checkin and log has gone through
[14:08] < MS-> Davbo: Mail filters and folders were invented to deal with high traffic lists though
[14:08] < MS-> :)
[14:08] < Davbo> yeah i'll label it and box it all
[14:09] < MS-> Since this
[14:09] < MS-> was only last editted an hour ago, no I haven't seen it, or had a chance to review it.
[14:09] < Chong-> np
[14:09] < MS-> If you came back last friday, I would have expected that to be what you work on, given it was the one thing I requested as a part of the coding period last week
[14:10] < MS-> Chong-: It's not "np" I ask for these things in advance, so that i can have a chance to review things and give feedback
[14:10] < Chong-> I see. I will do them earlier next time.:-)
[14:11] < MS-> Your schedule is very "functionality light"
[14:11] < MS-> In terms of, I can't actually tell from it what you mean to have done by when
[14:11] < MS-> 28/7 - Start application develop
[14:11] < MS-> 4/8 - Finish up application develop11/8 - Retrospect and clean up the project
[14:11] < MS-> 18/8 - Package and merge to trunk
[14:11] < MS-> For example doesn't tell me what you're actually planning on doing
[14:12] < Chong-> I agree. I should write in more detail.
[14:12] < MS-> Detail isn't really the point, specificity is
[14:13] < MS-> http://edit.kamaelia.org/Developers/Projects/KamaeliaPublish for example isn't actually any longer than yours, but has detail/specific
[14:13] < MS-> Also, I note that you've missed the same thing - you need to move packaging to the beginning, not the end
[14:14] < Chong-> I will rewrite it with more specificity
[14:14] < Chong-> I see.
[14:15] < MS-> I'll review it more properly when there's some detail
[14:15] < Chong-> np
[14:15] < MS-> The blanket copy and paste of the where do I get it and install it isn't really helpful
[14:16] < MS-> Since it doesn't actually answer the question
[14:16] < MS-> your schedule doesn't mention a database at all btw
[14:16] < Chong-> I know. Because I have not set up my branch yet, so I left it blank.
[14:16] < MS-> Given this one line description:
[14:16] < MS-> This project is to parse relationships defined in database, a file or console and then show them in graph.
[14:17] < MS-> from the first line
[14:17] < MS-> I'd expect to see some mention related to this in your detailed schedule
[14:17] < MS-> largely to show you've thought what functionality you're writing
[14:17] < Chong-> I'll
[14:18] < Chong-> database should be put into application
[14:18] < MS-> I've actually said a lot of this regarding Jason's schedule btw, and he's taken it on board and it's really helped me understand what's involved & where he can take his project
[14:18] < MS-> it's all on the mailing list last week
[14:19] < Chong-> I will check the list
[14:20] < Chong-> One problem about the picture support: the picture cannot be clicked because it's not part of self
[14:20] < Chong-> how to make the picture a part of self?
[14:20] < MS-> Well, I can't answer as to why your code has problems, because I haven't reviewed your code yet
[14:20] < MS-> and you haven't described what was in your checkin
[14:21] < Chong-> It adds picture support for particles.
[14:22] < Chong-> Files: RelationAttributeTopologyViewer.py, Files/RelationAttribute.re
[14:23] < Chong-> Util/RelationAttributeParsing.py, GenericTopologyViewer.py, Particles.py
[14:23] < MS-> just finding those
[14:24] < Chong-> cool
[14:25] < MS-> you mean: https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/CL/Topology/src/RelationTopology/RelationAttributeTopologyViewer.py
[14:25] < MS-> ?
[14:25] *** MS- notes .pyc files in 
[14:25] < MS-> https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/CL/Topology/src/RelationTopology/Util/
[14:25] < MS-> Those should be removed
[14:25] < MS-> L =`ls *pyc`
[14:25] < MS-> svn rm $L
[14:25] < MS-> svn ci $L
[14:26] < MS-> Ok, which file in that directort>
[14:26] < MS-> ?
[14:26] < Chong-> yes
[14:26] < Chong-> https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/CL/Topology/src/RelationTopology/
[14:27] < Davbo> what's a .pyc - should I just remain not knowing what it is? :P (assumes it's a compiled to byte-code version of the code)
[14:27] < Lawouach_> Davbo: it's byte compiled representation of the .py
[14:27] < MS-> Actually, this picking through your code bit by bit without a chance to even try running the code, is pretty pointless
[14:27] < Davbo> Thought so
[14:28] < MS-> I didn't try running it yesterday because the checkin didn't say it was runnable
[14:28] < MS-> or what it was supposed to do or how
[14:28] < MS-> Chong-: Why not explain to me
[14:28] < Chong-> I will make it clearer next time
[14:28] < MS-> What you were trying to do
[14:29] < MS-> What you've done to try to do that
[14:29] < MS-> What you've gotten that's caused you problems
[14:29] < Chong-> added picture support to viewer.
[14:29] < MS-> No, specifically
[14:29] < MS-> *how*
[14:29] < MS-> person mum gender='female',photo='Files/mum.jpg' person dad gender='male',photo='Files/dad.gif' person son gender='male',photo='Files/son.gif' person daughter childof(mum, son) childof(dad, son) childof(mum, daughter) childof(dad, daughter)
[14:29] < MS-> person mum gender='female',photo='Files/mum.jpg'
[14:29] < MS-> person dad gender='male',photo='Files/dad.gif'person son gender='male',photo='Files/son.gif'
[14:29] < MS-> gah
[14:30] < MS-> ie how does that relate to this:
[14:30] < MS-> person mum gender='female',photo='Files/mum.jpg'
[14:30] < MS-> person dad gender='male',photo='Files/dad.gif'
[14:30] < MS-> person son gender='male',photo='Files/son.gif'
[14:30] < Chong-> What I have done is to add in particles
[14:30] < Chong-> picture = pygame.image.load(self.extraArgd['pic']).convert()
[14:30] < Chong-> picture_rect = surface.blit(picture, (x,y))
[14:31] < MS-> Which file is that in
[14:31] < Chong-> in Util/Particles
[14:31] < Chong-> GenericParticle class, render function
[14:32] < MS-> this: https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/CL/Topology/src/RelationTopology/Util/Particles.py ?
[14:32] < Chong-> yes
[14:32] < MS-> Where is GenericParticle from?
[14:32] < MS-> (why is it called that? Why not something more specific?)
[14:33] < MS-> Where is it called from?
[14:33] < MS-> rather
[14:33] < MS-> This?
[14:33] < MS-> https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/CL/Topology/src/RelationTopology/Util/GenericTopologyViewer.py
[14:33] < Chong-> I would like to make it more customable parameters
[14:34] < Chong-> GenericParticle is in Util/Particles
[14:34] < MS-> The problem here is clear
[14:35] < MS-> You're not explaining what messages are going into the topology viewer
[14:35] < MS-> you're just doing a complete system "big bang" approach
[14:35] < MS-> which means you're having to debug several things at once
[14:36] < MS-> I'm looking at this for example:
[14:36] < MS-> https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/CL/Topology/src/RelationTopology/Util/GenericTopologyViewer.py
[14:36] < MS-> Specifically this:
[14:36] < MS-> Proceses a topology command tuple:
[14:36] < MS-> [ "ADD", "NODE", < id>, < name>, < positionSpec>, < particle type> ]
[14:36] < MS-> and note that it formally states it has 6 elements
[14:36] < MS-> BUT
[14:36] < MS-> if cmd == ("ADD", "NODE") and (len(msg) == 6 or len(msg) == 7):
[14:37] < MS-> meaning you've defined a 7th somewhere and I don't know what that is
[14:37] < Chong-> yes. it's an additional parameter for particles
[14:37] < MS-> Gets added here:
[14:37] < MS-> if len(msg) == 6: particle = ptype(position = pos, ID=id, name=name) else: attributes = msg[6] attributes_dict = eval('dict('+attributes+')') particle = ptype(position = pos, ID=id, name=name, **attributes_dict)
[14:37] < Chong-> for example, it's gender='female',photo='Files/mum.jpg'
[14:38] < MS-> if len(msg) == 6:
[14:38] < MS-> particle = ptype(position = pos, ID=id, name=name)
[14:38] < MS-> else:
[14:38] < MS-> attributes = msg[6]
[14:38] < MS-> attributes_dict = eval('dict('+attributes+')')
[14:38] < MS-> particle = ptype(position = pos, ID=id, name=name, **attributes_dict)
[14:38] < MS-> you do this ? eval('dict('+attributes+')') ?
[14:38] < Chong-> yes it goes into **attributes_dict
[14:39] < MS-> aside from that being a gaping security hole, OK
[14:39] < Chong-> yes. I know it's not secure, it's the easiest way to
[14:39] < MS-> (that should be parsed by your parser as arguments)
[14:40] < Chong-> transfer a string to dict
[14:40] < MS-> If the component has to use eval there because of that reason, it should not be accepting a string there
[14:40] < MS-> It should be defined to accept something else
[14:41] < Chong-> maybe just dict
[14:41] < MS-> but that's a detail
[14:41] < Chong-> and use parse to transfer first as you said
[14:41] < MS-> we'll come back to that after we've found what your question related to
[14:41] *** vmlemon__ has joined #kamaelia
[14:41] *** vmlemon__ is now known as vmlemon_
[14:41] < Chong-> cool
[14:42] < vmlemon_> Hi
[14:42] < Chong-> afternoon vmlemon_
[14:42] < MS-> Chong-: OK, I think I understand your question now
[14:42] < Chong-> cool
[14:43] < MS-> In < particle>.render() you do this:
[14:43] < vmlemon_> The Bejeweled game mentioned on the mailing list sounds interesting
[14:43] < MS-> if self.extraArgd.has_key('pic'):
[14:43] < MS-> picture = pygame.image.load(self.extraArgd['pic']).convert()
[14:43] < MS-> picture_rect = surface.blit(picture, (x,y))
[14:43] < MS-> every single time you render the particle?
[14:43] < MS-> ie you load the image, and render it on every iteration?
[14:43] < MS-> correct?
[14:43] < MS-> And you're wondering
[14:43] < Chong-> yes.
[14:43] < MS-> how can I change that to
[14:44] < MS-> picture_rect = surface.blit(self.picture, (x,y))
[14:44] < MS-> ?
[14:44] < MS-> is that right?
[14:44] < Chong-> yep
[14:44] < MS-> Um, well, are you
[14:45] < MS-> sure you can't see how to do that?
[14:45] < MS-> (Just checking)
[14:45] < Chong-> no. I want to make the picture part of the particle and clickable
[14:46] < Chong-> Now I can only click the circle ball not the picture
[14:46] < MS-> In which case the question is more detailed than just the one I was thinking you were asking
[14:46] < MS-> The question you were asking looked like
[14:46] < MS-> change this:
[14:46] < MS-> def __init__(self, **argd):
[14:46] < MS-> self.extraArgd = {}
[14:46] < MS-> if argd.has_key('pic'):
[14:46] < MS-> self.extraArgd.update({'pic':argd['pic']})
[14:46] < MS-> argd.pop('pic')
[14:46] < MS-> to this:
[14:47] < MS-> def __init__(self, **argd):
[14:47] < MS-> self.extraArgd = {}
[14:47] < MS-> if argd.has_key('pic'):
[14:47] < MS-> self.extraArgd.update({'pic':argd['pic']})
[14:47] < MS-> self.picture = pygame.image.load(self.extraArgd['pic']).convert()
[14:47] < MS-> argd.pop('pic')
[14:48] < MS-> Which I believe is part 1 of your question
[14:48] < MS-> ("how to make it so I don't load the image on every iteration")
[14:48] < Chong-> I see
[14:48] < MS-> It's pretty basic that BTW
[14:49] < MS-> The other part is about selection?
[14:49] *** MS- waits for a yes/no
[14:50] < Chong-> yes
[14:50] < Chong-> I just tried. It seems there is some problem.
[14:52] < Chong-> ('ERROR', 'Error processing message : [\'ADD\', \'NODE\', \'mum\', \'mum\', \'auto\', \'-\', "color=\'(255,128,128)\'"] resason:\nTraceback (most recent call la
[14:52] < MS-> Shrug
[14:54] < Chong-> no. it works now. I put it in wrong positions.
[14:54] < Chong-> Now it's the problem of selection?
[14:55] < Chong-> I can select it by if self.selected:
[14:55] < Chong-> pygame.draw.rect(surface, (0,0,0), picture_rect, 2)
[14:55] < Chong-> but cannot click it
[15:01] < MS-> It's likely that you're rectangle/image are not being centred
[15:02] < MS-> That could result in that behaviour
[15:02] < MS-> since you'd be clicking NOT inside the click area
[15:02] < Chong-> yes. The left top point of the rectangle/image is in the centre
[15:03] < MS-> That's your problem
[15:03] < MS-> get the height/width and do the obvious maths to centre it
[15:03] < Chong-> So my question is how to adjust click area?
[15:03] < MS-> :)
[15:03] < MS-> Focus on drawing it in the "right" place first :)
[15:04] < Chong-> Because the picture is relatively big, so even if it is in the centre, the whole picture cannot be clickable
[15:04] < Chong-> np. I will do it first.
[15:07] < MS-> you're trying to run before you can walk if you do that
[15:08] *** Davbo goes to revise JK - Flip Flops and a range of other fun digital electronics *snore*
[15:08] < Chong-> I have just finished centering the pictures :-)
[15:08] < Chong-> :-)
[15:08] < MS-> I'm sure I'm mentioned this before, but it is probably well worth your time (and mine) you looking at this code:
[15:08] < MS-> https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/MPS/Experiments/360
[15:09] < MS-> Which is a little dated, but goes a lot further than you code does right now
[15:09] *** Chong- looking
[15:09] < MS-> OK, I'm done, I can't really allocate any more time to this
[15:09] < MS-> In future, it's far more effective to checkin early
[15:10] < MS-> and if there's issues, to mail the group
[15:10] < Chong-> np
[15:10] < MS-> you need to include sufficient detail that allows us to run your code, or it's pure guesswork
[15:10] < Chong-> Thank you very much for your time.
[15:10] < MS-> and please, stop using "np"
[15:10] < MS-> When I'm asking you to do something which you haven't done :)
[15:10] < MS-> I'm sure that's just a language thing though:)
[15:11] < Chong-> got it :-)
[15:11] < MS-> Also, you will find it *alot* easier to test your code
[15:12] < Chong-> cool
[15:12] < MS-> if you write a basic harness like this:
[15:12] < MS-> Pipeline(
[15:12] < MS-> Source(
[15:12] < MS-> ["ADD", "NODE", ...],
[15:12] < MS-> ["ADD", "NODE", ...],
[15:12] < MS-> ),
[15:12] < MS-> GenericTopologyViewer(),
[15:13] < MS-> ConsoleEchoer(),
[15:13] < MS-> ).run()
[15:13] < MS-> Allows you to test the component you want in isolation
[15:13] < MS-> "Source" may or may not exist
[15:14] < MS-> I tend to write a version everytime I want one, and one of them may've ended up in the utils area
[15:14] < Chong-> cool
[15:15] < MS-> http://edit.kamaelia.org/Components/pydoc/Kamaelia.Util.DataSource seems to imply there has
[15:15] *** MS- will have to try to remember that
[15:16] < Chong-> I have used DataSource in RelationAttributeParsing.py and others to do unit test
[15:16] < Chong-> thanks to mhrd's suggestion
[15:44] < Davbo> Hey MS-
[15:44] < Davbo> That guy replied to you on the list, the Kamaelia - Bejeweled
[15:44] < Davbo> :-)
[15:44] < MS-> cool
[15:44] *** MS- looks
[15:45] < Davbo> Nice to see things like this pop-up time to time i imagine :D
[15:45] < Davbo> it's academic work so help with commits might be a bit too far ;-)
[15:45] *** j_baker has joined #kamaelia
[15:46] < MS-> yes, it's very nice.
[15:47] < MS-> I can ask them for feedback afterwards about stuff :)
[15:50] < Davbo> Yeah that'd be cool to see what they think
[15:57] *** Davbo wonders where the idea for Axon came from
[15:57] < Davbo> as a programmatic model, not the idea of nerve endings ;)
[15:58] < Davbo> I can recall reading something MS- linked me but I think it was only brief
[16:03] < MS-> Rainbdow AHV project, occam, unix pipelines, combined with frissance of experience of building (and running) large scale network systems and noticing the similarity
[16:03] < MS-> And deciding that co-routines were the way forward
[16:03] < MS-> Axon as a name comes from "what word starting with the letter A seems appropriate"
[16:04] < MS-> Kamaelia as a name comes from "I want a name that sounds mythological, but isn't, but has an obscure monty python link, and is deliberately mispelt to make the name highly googleable"
[16:04] < MS-> (and trademarkable if necessary)
[16:04] < Davbo> Hehe :)
[16:05] < MS-> A Camellia bush is actually a shrubbery, which gives the tenuous link
[16:05] < Davbo> All good Python projects should have a Monty Python link
[16:05] < Davbo> ;-)
[16:05] < MS-> Though one thing I forgot is that Camellia Sinesis is in fact tea.
[16:05] < MS-> Which is kinda fun, given "java"
[16:06] < Davbo> :D
[16:06] < MS-> And given that tea powers much of BBC R&D
[16:06] < MS-> Though it wasn't the reason :)
[16:06] < Davbo> It powers me also :)
[16:06] < Davbo> (like any good Yorkshire lad)
[16:08] < MS-> This btw is probably what I linked to: http://www.cs.man.ac.uk/~fellowsd/work/rainbow/msc.ps.gz
[16:09] < MS-> Though it is worth bearing in mind that I had 3 books on occam at that time, and had been using unix pipes for a fair while then, so it wasn't totally alien ideas then
[16:10] < MS-> i have you contributor agreement btw - thanks :)
[16:13] < Davbo> Ah good!
[16:17] < Davbo> That's another thing to tick off the "Worry about" list
[16:17] < Davbo> ;-)
[16:17] *** vmlemon__ has joined #kamaelia
[16:17] *** vmlemon__ is now known as vmlemon_
[16:20] < Davbo> Back later chaps. Think I've got my head around LikeFile to review it tomorrow hopefully MS-
[16:24] *** mhrd is now known as mhrd-afk
[16:27] < Lawouach> back
[16:37] < MS-> biab
[16:37] *** MS- has parted #kamaelia
[16:39] < j_baker> Hmmmm... so apparently, os x has an option for the file system to be case sensitive.
[16:39] < j_baker> So now I can check out the svn repository without svn complaining. :)
[17:43] *** vmlemon__ has joined #kamaelia
[17:43] *** vmlemon__ is now known as vmlemon_
[17:59] < orphans> evening all
[18:01] < j_baker> hello orphans
[18:01] < orphans> how goes it j_baker?
[18:01] < j_baker> Not too bad. :)
[18:01] < j_baker> And you?
[18:03] < orphans> ok ta - spent the whole day trying to write something only to find out I'd rewritten (with added bugs) something which already existed, and I'd used before :)
[18:03] *** orphans slaps forehead :)
[18:04] < j_baker> That's always fun. :)
[18:04] < Lawouach> orphans: I'm taking a quick shower and I'll ping you
[18:04] < Lawouach> 10mn
[18:04] < orphans> k, no rush
[18:10] < Lawouach> back
[18:10] < Lawouach> :)
[18:10] < orphans> k k
[18:11] < orphans> right - I'm sposed to be leading this one aren't I :)
[18:11] < Lawouach> sort of yes
[18:11] < Lawouach> it should be more of an exchange that you drive
[18:12] < Lawouach> what have you done? what you plan on doing? etc.
[18:12] < orphans> yeah, that's what I mean really :)
[18:12] < Lawouach> :)
[18:12] < orphans> ok, so to start with what have I done
[18:13] < orphans> well, after much discussion and writing bad code I've got to a reasonably working way of doing timing stuff
[18:14] < Lawouach> alright, which approach have you chosen?
[18:14] < orphans> not thoroughly tested and/or optimised in any way shape or form, but it seems to work for writing nicely timed components
[18:14] < orphans> well, after a good few rewrites I've ended up using scheduler from sched (in the standard library)
[18:14] < orphans> because I ended up writing a worse version of it myself :)
[18:15] < Lawouach> where should I be looking at?
[18:15] < Lawouach> eh eh :)
[18:15] < orphans> erm, just let me check it in - I got it working about 10 mins ago :)
[18:16] < Lawouach> okay
[18:18] < orphans> https://viewcvs.svn.sourceforge.net/viewcvs.cgi/kamaelia?view=rev&rev=4154
[18:18] < orphans> mm, don't think that link'll work actually
[18:19] < orphans> http://kamaelia.svn.sourceforge.net/viewvc/kamaelia?view=rev&revision=4154
[18:19] < Lawouach> no worries
[18:19] < Lawouach> I've updated my copy
[18:19] *** vmlemon_ has joined #kamaelia
[18:20] < orphans> at the moment it doesn't do any correction for time.time inaccuracy, but I think that'll be relatively easy to put in
[18:21] < orphans> i.e. average the difference between when events should be happening, subtract it, and timestamp any messages which are sent
[18:21] < Lawouach> where does "sched" come from?
[18:22] < Lawouach> meh
[18:22] < Lawouach> nevermind that
[18:24] < orphans> sched.scheduler bears a remarkable similarity to what I was writing before I realised that I was basically rewriting it. My one double triggered sometimes though :D
[18:24] < Lawouach> okay
[18:24] < Lawouach> that sounds good
[18:25] < Lawouach> I don't know the efficiency and accuracy of the sched module but it was a good move
[18:26] < orphans> I think it should be pretty close to what I could manage, given that it's using time for sleeping etc
[18:26] < orphans> time (and testing) will tell :)
[18:28] < Lawouach> I would argue that it could be done with axon components indeed but let's have functionnality first
[18:28] < Lawouach> we'll improve where it needs later on
[18:28] < orphans> yeah - I thought it might not be the most Kamaelia-ific way of doing things, but it works
[18:28] < Lawouach> I'll be looking at how the sched module works internally :)
[18:29] < Lawouach> right
[18:29] < Lawouach> what else?
[18:29] < orphans> as you've probably seen I rearranged my home dir to something resembling what we discussed
[18:29] < Lawouach> yes
[18:29] < Lawouach> That's very good
[18:30] < Lawouach> there is one problem however
[18:30] < orphans> and wrote a basic setup.py to let you install the library stuff easily enough
[18:30] < orphans> yup?
[18:30] < Lawouach> from Kamaelia.Apps.Jam.Protocol.Osc import Osc
[18:30] < Lawouach> was failing
[18:31] < orphans> hum, works for me
[18:31] < Lawouach> what do you need in a Python package to allow import like that?
[18:31] < Lawouach> Osc is not the pb BTW
[18:31] < orphans> __init__.py?
[18:31] < Lawouach> yeap
[18:31] < Lawouach> indeed
[18:31] < Lawouach> they are missing from the many intermediate directories
[18:32] < Lawouach> :)
[18:33] < orphans> oops :)
[18:33] < Lawouach> BTW, did setting up the layout help you out to develop?
[18:34] < orphans> still finding it a bit of a hassle at the moment tbh - it means I have to have at least another two screen tabs open. I'll get used to it though, and it'll have real advantages in the long run
[18:35] < Lawouach> hah!
[18:35] < Lawouach> developers tend to have many windows open at the same time :)
[18:35] < Lawouach> get used to it
[18:35] < Lawouach> :p
[18:35] < Lawouach> or use an IDE like eric4 or PyDev
[18:35] < orphans> my ctrl-a n hand is getting awful strong :)
[18:35] < Lawouach> :D
[18:36] < orphans> it's cool though - just something to get used to
[18:36] < Lawouach> Personally I appreciated the layout because I'm used to packages being laid like that
[18:36] < orphans> I keep forgetting to run setup.py and wondering why stuff doesn't work
[18:36] < Lawouach> :)
[18:36] < Lawouach> you'll get sed to it :)
[18:36] < Lawouach> or again just use eclipse and pydev
[18:36] < orphans> yeah, give it a week and I won't know how I lived without I'm sure :)
[18:37] < Lawouach> :)
[18:37] < Lawouach> That also means you'll be more used at going through other packages
[18:37] < Lawouach> that's quite useful
[18:37] < orphans> yeah
[18:37] < Lawouach> right
[18:38] < Lawouach> so unless you did something else last week, let's move to what you plan on doing this week
[18:38] < orphans> think that's about it
[18:38] *** orphans consults schedule :)
[18:39] < orphans> ok, yeah, so I need to do some proper testing on the timing code for a start
[18:39] < orphans> but I think that should be ok
[18:40] < orphans> so mainly network stuff I think - sorting out mhrd-afk's CSA to work with UDP, and getting components to talk to each other over a socket
[18:40] < Lawouach> Do not waste your entire time on the timing thing.
[18:40] < Lawouach> If it's good enough as it is, please move on
[18:40] < Lawouach> Alright
[18:41] < Lawouach> That UDP thing actually was one of the question I noted this morning for you
[18:41] < orphans> uh huh
[18:41] < Lawouach> As I understand it, the spec. doesn't force you to use UDP
[18:41] < Lawouach> TCP is allowed as well
[18:41] < Lawouach> why did you choose UDP over TCP?
[18:42] < orphans> because support is much wider at the moment. Almost nothing will accept OSC over TCP
[18:43] < Lawouach> You're connecting to a Osc server right?
[18:43] < Lawouach> Most of them are using solely UDP?
[18:43] < orphans> yeah
[18:43] < orphans> yeah
[18:44] < Lawouach> okay
[18:44] < Lawouach> so yes, please work on the UDP CSA this week
[18:44] < orphans> I could use TCP to do the communication with other instances of Jam though if you can see advantages
[18:44] < Lawouach> I would like to see if it'd be easy to switch transparently from UDP to TCP
[18:44] < orphans> uh huh
[18:45] < orphans> the other thing is UDP CSA probably has a fair bit of value anyway, so I thought it was worthwhile
[18:45] < Lawouach> I believe mhrd-afk would confirm but I assume the CSA is the way to abstract the socket access
[18:45] < Lawouach> so that would work
[18:45] < Lawouach> You're right
[18:46] < Lawouach> Okay so with this in mind, what is your target for next week?
[18:46] < Lawouach> I mean working on the CSA is just a task, not a functionnality
[18:46] < Lawouach> what's the goal for this week?
[18:46] < orphans> yeah - working UDP send and receive so you have two XYPads being controlled simultaneously by different Jam instances
[18:47] < orphans> which I think gets me a bit ahead on my schedule, but I reckon it's pretty doable
[18:48] < Lawouach> Okay.
[18:50] < Lawouach> One thing I would appreciate also is that you extend your documentation (readme or install) so that I can setup a Osc server.
[18:50] < Lawouach> Not asking you to go into great details
[18:50] < orphans> yeah, I will do
[18:50] < Lawouach> But enough info so that I know what product to get, if there are specific settings
[18:50] < Lawouach> I was able to run your code today
[18:50] < Lawouach> That's great
[18:50] < orphans> cool :)
[18:50] < Lawouach> but I still don't quite understand what I should hear or see
[18:51] < Lawouach> That's less good :)
[18:51] < orphans> I'll stick up a doc in the next couple of days - you'll be hearing sound in no time :)
[18:51] < Lawouach> good
[18:52] < Lawouach> One more thing, since we enter a more important phase of the project now, I would appreciate if you could update me at least once before next week's meeting
[18:52] < orphans> ok, over irc or email?
[18:52] < Lawouach> Just a bullet point email to the list or here (the list could be better)
[18:52] < Lawouach> Nothing too involving
[18:52] < orphans> cool, will send it to the list
[18:53] < Lawouach> Mind you we already have the IRC meeting on Thursday but I still need to be updated more regularly now
[18:54] < orphans> yeah - what I might do is make an extended version of my todo, done, blocked and mail it to the list
[18:54] < orphans> that sort of thing good?
[18:54] < Lawouach> yes
[18:54] < Lawouach> that'd do
[18:54] < orphans> ok, great
[18:54] < Lawouach> I'm asking it for my personal benefit :)
[18:55] < orphans> yeah, no probs
[18:55] < Lawouach> I'm looking forward to see two components working together over the network
[18:55] < orphans> me too - I've never made anything with networking in before now if I'm honest
[18:55] < orphans> should be exciting :)
[18:56] < Lawouach> :)
[18:57] < orphans> cool, so is that pretty much it?
[18:57] < Lawouach> yes
[18:58] < Lawouach> I'll expect two components conversing using Osc next week
[18:58] < Lawouach> Don't worry about the UI if it makes it more difficult
[18:58] < orphans> nah, UI should be pretty simple now - plus I like things which move and look fun :)
[18:59] < Lawouach> alright
[19:00] < orphans> cool cool
[19:01] < orphans> think I might be off to the pub now, cheers for the help Lawouach
[19:03] < Lawouach> okay
[19:03] < Lawouach> take care then
[19:03] < Lawouach> thanks
[19:04] *** vmlemon__ has joined #kamaelia
[19:06] *** vmlemon__ is now known as vmlemon_
[19:32] *** bcarlyon|laptop has joined #kamaelia
[20:08] < j_baker> If MS- logs on looking for me, I have to run up to school to do some stuff and I'll be back in a while.
[20:08] *** j_baker is now known as j_baker-away
[20:10] *** vmlemon_ has joined #kamaelia
[20:21] *** mhrd-home has joined #kamaelia
[20:50] *** MS- has joined #kamaelia
[20:50] < MS-> evening
[20:50] < mhrd-home> hi
[20:50] < MS-> Oh damn, just realised
[20:50] < mhrd-home> ?
[20:50] < MS-> excuse my language
[20:50] < mhrd-home> you missing BSG or something?
[20:50] < MS-> MIssed Jason's time
[20:50] < mhrd-home> :)
[20:50] < mhrd-home> oh :(
[20:50] < MS-> no, that's tomorrow due to the day out at the big top
[20:51] < MS-> But I can watch that when I get back (if it's not too late)
[20:51] < mhrd-home> wrt that I'm being experimenting with being defiant
[20:51] < MS-> ?
[20:51] < MS-> Ah
[20:51] < mhrd-home> yes :)
[20:51] < MS-> I believe bruce is doing the same
[20:51] < mhrd-home> well, I'll see him on IRC then :)
[20:52] < MS-> I'm going on the offchance there's anything worth knowing
[20:52] < mhrd-home> I ordinarily would, but I'm in a strange mood and would drive myself insane knowing I'd rather be sorting hackday/mashed stuff
[20:53] < MS-> Yeah, I know that one
[20:53] < MS-> One huge advantage to Sky - they're currently showing "The Goodies"
[20:53] < MS-> The only TV comedy to ever actually manage to kill an audience member
[20:54] < mhrd-home> just read scrollback for mentoring time stuff today: chong will need to spend time analysing the topologyviewer component to understand how particle selection works
[20:54] < MS-> I think I cheated when I did that
[20:54] < MS-> I resized the image to match the click radius
[20:55] < mhrd-home> heh :)
[20:55] < MS-> piece of randomness - I'm currently lit by solar lighting
[20:55] *** mhrd-home raises eyebrow
[20:55] < mhrd-home> bright enough?
[20:55] < MS-> An experiment to see how doable it is
[20:56] < MS-> It's not bad - I bought some garden ones from Tesco as an experiment. If they're all in one area (ie beside me) it's bright enough for this part of the room
[20:56] < MS-> Which makes me think it's viable for being done "better" and therefore brighter
[20:56] < MS-> I'm toying with the idea of trying to run my home server using solar you see
[20:57] < MS-> so starting with side lighting, then lighting a room strikes me as a sensible starting points
[20:57] < MS-> LED lights of course
[20:57] < mhrd-home> MS- needs to do the wattage maths?
[20:57] < MS-> Yeah, for a server it's a killer
[20:58] *** vmlemon_ has always thought of "solar(-powered) lighting" as the ultimate oxymoron ;)
[20:58] < MS-> low power laptop + high wattage solar panel + deep cycle 12V battery aren't cheap. But then neither is electricity these days
[20:58] < mhrd-home> get a low power via c7 or atom based mini itx board (they run off DC supplies - much more efficient than converting up to mains, then going through a std psu)
[20:58] < MS-> vmlemon_: yeah, it's strange
[20:58] < mhrd-home> heh
[20:58] < mhrd-home> unrelated: any ideas on how to, in a shell script, convert a long hex string to an equivalent base 36 (0-9a-z) string? I've got something horrific involving bc and I feel ashamed of it
[20:59] < MS-> Yep, I was think of that sort of approach - since you can go straight from 12V to most laptops
[20:59] < MS-> base 36?
[20:59] < MS-> You been reading Turing's papers?
[20:59] < mhrd-home> yeah, don't ask :)
[20:59] < mhrd-home> nope
[20:59] < MS-> (he liked bse 36)
[20:59] < MS-> So you want to go from base16 to base 36?
[20:59] < mhrd-home> trying to crush a uuid into the permitted number of chars for a TVAnytime CRID in a DVB transport stream SI descriptor
[20:59] < mhrd-home> yep
[21:00] < MS-> OK
[21:00] < MS-> Why not create a simple C program to do it? Make it accept the base16 number as an argument
[21:00] < MS-> compile it
[21:00] < MS-> with -O2
[21:00] < mhrd-home> its tempting :)
[21:01] < MS-> and then strip the binary?
[21:01] < MS-> That should be small/quick/simple to use
[21:01] < mhrd-home> "strip the binary"?
[21:01] < vmlemon_> Use the 'strip' utility to remove the debugging data in it
[21:01] < vmlemon_> to reduce the file size
[21:02] *** mhrd-home not fussed by size, more by the fact that the shell script I've got feels way too complicated
[21:02] < MS-> yep
[21:02] < MS-> more hello.c
[21:02] < MS-> #include < stdio.h>
[21:02] < MS-> void main(void) {
[21:02] < MS-> printf("Hello World\n");
[21:02] < MS-> }
[21:02] < MS-> gcc -O2 -o Hello hello.c
[21:02] < MS-> ls -l Hello
[21:02] < MS-> -rwxr-xr-x 1 michael users 9026 2008-06-02 22:06 Hello
[21:02] < MS-> strip Hello
[21:03] < MS-> ls -l Hello
[21:03] < MS-> -rwxr-xr-x 1 michael users 5672 2008-06-02 22:06 Hello
[21:03] < mhrd-home> heh, ta, MS-, vmlemon_ - never knew about 'strip'
[21:03] < vmlemon_> Hmm, tried other optimisations
[21:03] < vmlemon_> ?
[21:03] < MS-> You could always hack bash and add a function to bash?
[21:04] < mhrd-home> hmm, these suggestions are, though welcome, feeling diproprortionate on the effort front :)
[21:04] < MS-> I think the c program version isn't bad
[21:04] < mhrd-home> MS-: sorry, yep - "c program" is a good suggestion. recompiling bash, less so :)
[21:04] < mhrd-home> ok, here's the shell script as it stands .. any simplifications are welcome :-) ...
[21:05] < vmlemon_> Write it in x86 assembler? ;)
[21:05] < mhrd-home> x=(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z)
[21:05] < mhrd-home> for c in `(echo obase=36; echo ibase=16; uuidgen \
[21:05] < mhrd-home> | tr --delete "-" \
[21:05] < mhrd-home> | tr [:lower:] [:upper:]; ) \
[21:05] < mhrd-home> | bc | sed ':a;N;$!ba;s/[\\\n]//g'`;
[21:05] < mhrd-home> do
[21:05] < mhrd-home> echo -n "${x[`echo $c | bc`]}";
[21:05] < mhrd-home> done;
[21:05] < mhrd-home> vmlemon_ after you sir :)
[21:05] < vmlemon_> Hah, I doubt I could, anyway
[21:05] < Lawouach> thanks
[21:05] < Lawouach> burp
[21:05] < Lawouach> wrong key
[21:06] < MS-> mhrd-home: That is a little sick
[21:06] < mhrd-home> MS-: thanks :)
[21:08] < MS-> I think "dc" may be more what you want
[21:08] < MS-> Given this quote
[21:08] < MS-> "Studying the info page for dc is a painful path to understanding its intricacies. There seems to be a small, select group of dc wizards who delight in showing off their mastery of this powerful, but arcane utility."
[21:08] < MS-> http://tldp.org/LDP/abs/html/mathc.html#HEXCONVERT
[21:09] *** vmlemon_ never knew about 'dc'
[21:09] *** Uraeus has joined #kamaelia
[21:09] < MS-> vmlemon_: It's the twisted companion
[21:10] < vmlemon_> Aah
[21:10] < mhrd-home> MS- : thanks, I'll give dc a try
[21:10] < mhrd-home> I didn't know about it either
[21:10] *** vmlemon_ still wonders why most Linux distributions still have /sbin/ctrlaltdel, albeit hailing from Linux 1.2.x days, and very little information on why it still exists...
[21:11] < MS-> mhrd-home: It's a stack based calculator
[21:14] < mhrd-home> cool, looking good - I've gotten it to do the base 16 to base 36 conversion I need ... looks like it doesn't do annoying line wrapping like bc :-)
[21:16] < MS-> How did you get it to do base16 to base 36>
[21:16] < MS-> ?
[21:17] < mhrd-home> echo 16 i $hexval 36 o p | dc
[21:17] < mhrd-home> set input base to 16; put in value of 36; set output base to 36; print value off top of stack
[21:17] < mhrd-home> s/of 36//
[21:19] *** j_baker-away is now known as j_baker
[21:20] < j_baker> MS-: we still on for our meeting? :)
[21:21] < MS-> If you're OK
[21:22] < MS-> Your new schedule looks alot clearer btw - many thanks for that
[21:22] < j_baker> Yeah, I'm OK.
[21:22] < j_baker> np
[21:22] < j_baker> I did also get a py2app version of the server up and running.
[21:22] < MS-> Cool
[21:23] < MS-> Is the toolchain that got that going checked in?
[21:23] < j_baker> Yes. It's under private_JMB_DescartesComponentsAdded/Apps/Kamaelia-Publisher
[21:23] < MS-> cool
[21:24] *** MS- updates that branch
[21:24] < j_baker> I made the pkg file for OS X using one of the tools in XCode. Is that going to be a problem since it's not open source?
[21:25] < MS-> I think that really depends on what you did / what it's used for /how
[21:26] < MS-> Perhaps simply documenting the steps you used (copy and paste of command lines for example) would be enough to answer that q
[21:26] < j_baker> I just made an installer that installs a directory for WSGI apps and then installs the app itself to the Applications directory
[21:27] < j_baker> It's a graphical tool. Will the command line steps to install the program with an app bundle be sufficient?
[21:27] < j_baker> (as opposed to the steps to make the pkg file)
[21:28] < MS-> "It's a graphical tool. Will the command line steps to install the program with an app bundle be sufficient?"
[21:28] < MS-> I don't know - I haven't seen the tool - so I can't really comment
[21:28] < mhrd-home> oops, mistake in my dc code :)
[21:28] < MS-> Are you referring to
[21:28] < MS-> PublishInstaller.pkg
[21:29] < j_baker> Yeah. The tool I made to package that up is what I was referring to.
[21:30] < MS-> I think you're missing some logical steps out I'm missing
[21:30] < MS-> What did you use py2app for?
[21:30] < MS-> And what does the thing added by XCode add ?
[21:30] < j_baker> To actually put the source files into an executable.
[21:30] < vmlemon_> Hah, http://www.plainenglish.co.uk/generator.htm/
[21:31] < MS-> "What did you use py2app for? --> To actually put the source files into an executable."
[21:31] < MS-> (is how I read that)
[21:31] < j_baker> The XCode package maker made it into an installer file that will install the executable into /Applications and install all the WSGI Apps into /WsgiApps
[21:31] < j_baker> Yes, that's correct. You type faster than I do. :)
[21:32] < MS-> Yeah, my typing fast sometimes confuses people - they sometimes think I'm ranting when it fact it's just a stream of ideas/suggestions
[21:32] < MS-> By /Applications do you mean system wide?
[21:32] < j_baker> Yes.
[21:33] < MS-> like this:
[21:33] < MS-> Michael-Sparks-Computer:/ michaelsparks$ ls
[21:33] < MS-> Applications Users import
[21:33] < MS-> Desktop DB Volumes mach
[21:33] < MS-> Desktop DF automount mach.sym
[21:33] < MS-> ...
[21:33] < MS-> k
[21:33] < MS-> And you also add
[21:33] < MS-> a new top level directory?
[21:33] < j_baker> Yes.
[21:34] < j_baker> Then below /WsgiApps, there's also a blank __init__.py and a subdir called Apps that contains simple_app.py and error_handler.py
[21:37] < MS-> OK
[21:38] < MS-> So, looking at this another way, this installer is just a binary blob, created by another binary blob, but you could still install it manually anyway
[21:38] < MS-> So given you have the code, as long as it's documented about what it puts where
[21:38] < MS-> it's not an issue
[21:38] < j_baker> The only thing that the installer does that may not necessarily be easy to do by hand is generate a package receipt in the Library somewhere.
[21:39] < j_baker> (which just makes it easier to upgrade/downgrade/uninstall the package)
[21:39] < MS-> It's probably worth documenting that on your page
[21:39] < MS-> Such as open issues, discussion of packaging/etc
[21:40] < j_baker> That can be done easily.
[21:40] < MS-> since it's quick to edit now, it's probably not a big problem :)
[21:40] < j_baker> So, should I move on to making a Linux installer, or is there something else that I should take care of?
[21:41] < j_baker> (I've started on the Linux installer anyway, but it's not quite ready yet)
[21:41] < MS-> If you're happy it works, moving on makes sense ;)
[21:41] < MS-> :-)
[21:41] < MS-> (scrub the ;), typo)
[21:42] < j_baker> Ok. That makes sense. Do you know of any way to make a deb file with distutils?
[21:42] < mhrd-home> fwiw, the correct version of base converter: echo 36 o 16 i $hexval p | dc
[21:42] < j_baker> I did a google search, but came up with nothing.
[21:43] < MS-> A deb file isn't really any interest to me to be honest
[21:43] < MS-> for linux, distutils is definitely more appropriate
[21:43] < MS-> ala what Kamaelia-Grey does
[21:43] < MS-> (I don't use a .deb based linux system)
[21:44] < MS-> Hm.
[21:45] < j_baker> Well, I was actually planning on using the deb to make a 0install installer: www.0install.net
[21:45] < MS-> these might be useful though if you do want to use a .deb
[21:46] < MS-> https://kamaelia.svn.sourceforge.net/svnroot/kamaelia/trunk/Sketches/Contrib/Debian
[21:47] < MS-> The goals of that project look cool - I'd not heard of it
[21:47] < MS-> Does it use a similar approach to .dmg files ?
[21:47] < MS-> (ones which allow the user to run the app without installing)
[21:47] < j_baker> Well, yeah essentially.
[21:48] < j_baker> What I like about it is that it uses a "pull" model rather than a "push" model for installing. I hadn't thought of the similarities to .dmg installers, but I can see where that comes from.
[21:49] < MS-> Looks worth exploring
[21:49] < j_baker> Considering my project's goals, I would like something that's point and click, so that's what I was leaning towards. If you know of any other options, I can look into them.
[21:51] < MS-> Giving that it's your project, that's fine
[21:52] < MS-> My suggestion though is that many people using Linux, especially those who may be able to assist with developing it and moving it forward, will prefer something that is commandline based
[21:52] < j_baker> Oh yes. I was planning on getting a regular distutils version set up as well.
[21:52] < MS-> Aside from anything else because it makes repeated testing (aka continuous integration, though many people don't have the kit for that), automateable
[21:52] < MS-> k
[21:53] < MS-> For example, for many things I tend to use command line tools even under SuSE, because I know what they are
[21:53] < MS-> The GUI being a skein on top
[21:53] < mhrd-home> hurrah, crid generation sorted - thanks for assistance
[21:54] < j_baker> Yeah. I've definitely become more accustomed to command line tools in the past few weeks myself. :)
[21:54] < MS-> But it's your project, the installer approach you take will reflect the sort of user you're hoping will use it
[21:55] < MS-> Well, I grew up with 8bit micros and then the amiga & then (v briefly) pc/windows and then Linux. At all stages command lines were there
[21:55] < MS-> I also suspect that a new command line is likely to evolve at some point in the future
[21:55] < MS-> A more intelligent one - since people are used to talking using text and may decide that texting the computer makes sense again
[21:56] < MS-> I can see that being rather amusing in future
[21:56] < j_baker> I definitely agree with that. I think the primary reason why nobody likes command lines is because nobody's focused on making them user-friendly.
[21:56] < j_baker> (Although KDE's is the best I've seen)
[21:56] *** mhrd-home wants a command line where you can type: "I want 'a thing', give it to me" and it knows what you mean and sorts it for you :-)
[21:57] < j_baker> Anyway, staying on subject, is there anything else you can think of that needs to be done to work on the installer other than a Windows installer?
[22:01] < MS-> The key problem really is often actually getting any installation chain going. The sooner you do it in a poroject, the easier it is
[22:01] < j_baker> Ok. Sounds good to me.
[22:01] < j_baker> I don't really have any other questions for you then. :)
[22:02] < MS-> Cool. It seems like you've got things in hand - which is good
[22:02] < MS-> The one thing i would say is "document what you've done as if being read by someone with *zero* clue"
[22:02] < MS-> copies and pastes of commandlines are good
[22:02] < MS-> It's always OTT, but always useful for detail
[22:03] < j_baker> Ok, I can do that.
[22:03] < j_baker> Have you tried running the OS X installer?
[22:03] < vmlemon_> Hah, "The label said 'roast chicken salad', but had a special flash on it saying 'Now with roast chicken'. So what was in it before?'"
[22:04] < MS-> j_baker: I don't tend to use the machine very often other than as a server
[22:04] < MS-> Though I can do,
[22:05] < j_baker> Oh, I see. I put some instructions into it and I was wondering if they were clear or not. I can put them up on the Kamaelia wiki or my wiki somewhere if not.
[22:05] < MS-> (It's got a teeny keyboard mouse plugged in, but rarely used with those)
[22:05] < MS-> On the Kamaelia wiki is preferable
[22:05] < MS-> Since that means there's only one place to look
[22:06] < j_baker> Ok. Will do.
[22:09] < MS-> Some something "zero install", this 0install stuff seems a real pain
[22:09] < MS-> :)
[22:09] < MS-> I've rpm -Uvh'd the zeroinstall-injector
[22:10] < MS-> I can't actually see anything that installs using it
[22:11] < j_baker> Are you talking about user-friendliness or putting packages together?
[22:11] < MS-> Ah : http://www.0install.net/injector-feeds.html
[22:11] < MS-> finally
[22:12] *** MS- finds an example
[22:13] < j_baker> Yeah, it seems pretty user-friendly, but it seems like kind of a pain to put packages together in. That's why I was thinking about starting with a deb and then converting that over.
[22:13] < MS-> I'm not convinced it's user friendly myself
[22:20] < j_baker> Hmmm... there are a couple of other options that I can look into if that one falls through. I know there's one way that's more like a traditional installer package. If nothing else, I can just stick with debs and rpms.
[22:21] < j_baker> and basic distutils
[22:21] < MS-> I must admit I don't like the fact that it hides where it puts the files it downloads
[22:21] < vmlemon_> AutoPackage?
[22:21] < j_baker> That's what I was thinking of. Thanks vmlemon_.
[22:22] < MS-> "~/.cache"
[22:23] < MS-> OK, found where it's putting stuff
[22:27] < MS-> I must admit that I can see why you picked that, and I can see some people liking it
[22:27] < MS-> But it's not really an approach I like
[22:28] < MS-> It's nowhere near as "nice" as the approach taken with Mac Apps
[22:30] < j_baker> I agree. I haven't found as nice a system on linux yet. AutoPackage is nice also, but it requires that my script be able to find any data files no matter where they get installed to, which seems to be a lot more than my app is capable of at this point.
[22:30] < MS-> Well, the thing is, for me, rpm install & commandline install are fine
[22:31] < MS-> And the problem is that many developers are much the same, so many packaging things target that group
[22:31] < MS-> Since that is for all intents and purposes the user group
[22:31] < MS-> But the ability to have 3 versions of firefox installed sidebyside on a mac *easily* is really useful
[22:32] < j_baker> Yeah. And I suppose that Debs and RPMs are sufficiently point and click if the user has the right version of Linux.
[22:32] < MS-> But on the flip side, there's somethings that are a pain
[22:32] < MS-> Yep - the integration in Open SUSE 10.3 is really well done IMO
[22:33] < vmlemon_> Hmm, wouldn't the *buntu or Fedora folks have to run "Alien" on the package, before they can use it?
[22:33] < vmlemon_> (Depending on the package format)
[22:33] < MS-> vmlemon_: The 0install stuff gets around that by using a completely different format and running from that instead
[22:34] < vmlemon_> Aah
[22:34] < vmlemon_> I was referring to "traditional" Linux packages, that said...
[22:34] < MS-> It's a bit like "what if we only distributed chroot jails"
[22:34] < vmlemon_> Would Klik be suitable for that sort of thing?
[22:35] < MS-> Klik?
[22:35] < vmlemon_> Although that seems better suited to quick evaluation of apps before deciding to install them propetly
[22:35] < vmlemon_> *properly
[22:35] < j_baker> It looks like Klik is basically just another 0install
[22:35] < MS-> maybe
[22:35] < vmlemon_> http://klik.atekon.de/wiki/index.php/
[22:36] < MS-> j_baker: yeah, but they have a bigger number of packages
[22:36] < j_baker> True.
[22:36] < MS-> ah, no, they have a more misleading number
[22:37] < MS-> The website is shinier. I don't know if the mechanism is better
[22:38] *** sadrul has joined #kamaelia
[22:40] < j_baker> Well, I'll probably just stick to RPMs and Debs for now.
[22:41] < j_baker> Since 0install has a way to convert Debs (and I believe RPMs) into one of its interface files, it seems like it would be trivial to offer a download for 0install also after I've got that out of the way.
[22:41] *** MS- nods
[22:56] < MS-> j_baker: http://www.knoppix.net/forum/viewtopic.php?t=15701
[22:57] < MS-> ".cmg" files
[22:57] < MS-> http://klik.atekon.de/docs/index.php?page=Compressed%20Application%20Images
[22:58] < MS-> It's odd that they chose cramfs. IIRC .dmg files are actually .iso files
[22:58] < mhrd-home> anyone know if there' s anywhere in /proc where I can query system properties such as FSB speed?
[22:58] Reply: Hm?
[23:00] < MS-> mhrd-home: /sys may help
[23:02] < MS-> (that's /sys, not /proc/sys ...)
[23:02] < mhrd-home> ta, I'll poke around
[23:08] *** MS- sleeps
[23:08] < MS-> night
[23:08] *** MS- has parted #kamaelia
[23:15] < mhrd-home> good idea. night all
[23:15] *** mhrd-home has parted #kamaelia