User:Enus Linden/Office Hours/2009 March 27
Jump to navigation
Jump to search
- [9:29] Morgaine Dinova: So, nothing to talk about today I guess ..... ;-)
- [9:29] Enus Linden: nada at all
- http://slurl.com/secondlife/Longfellow/93/115/25 (Starts now)
- [9:30] Morgaine Dinova: Hiya bots!
- [9:30] Saijanai Kuhn: oh no its all the lindens I spammed
- [9:30] Enus Linden: they will just sit and listen for today
- [9:30] Morgaine Dinova: Hehe
- [9:30] Morgaine Dinova: Right, tell us how that works :-)
- [9:31] Enus Linden: how which works? multiple bots?
- [9:31] Morgaine Dinova: Yeah
- [9:31] Enus Linden: okies
- [9:31] Morgaine Dinova: Unless it's simply N copies of pyogp of course :P
- [9:31] Enus Linden: let me get code
- [9:32] Enus Linden: clients = [['first', 'last, 'pword'], [first1', 'last1', 'pword1',
- [9:32] Enus Linden: # Now let's log them in
- for params in clients:
- #First, initialize the agent
- client = Agent(settings)
- api.spawn(client.login, options.loginuri, params[0], params[1], params[2], start_location = options.region, connect_region = True)]
- [9:33] Enus Linden: poof, many bots from one script
- [9:33] Enus Linden: it's not a pyogp bot manager yet
- [9:33] Enus Linden: but that would be trivial to add i suppose
- [9:33] Morgaine Dinova: Right, so the single piece of Python is doing N full connects, right?
- [9:33] Saijanai Kuhn: just refer to the client in a dictionary indexed by name
- [9:33] Enus Linden: correct morgaine
- [9:34] Enus Linden: was just a 'let's see what happens' kind of thing
- [9:34] Enus Linden: each client instance has it's own event queue and udp process
- [9:34] Morgaine Dinova: Super. Sai was trying to get his head around how to keep those separate login states separate in the wx client.
- [9:34] Saijanai Kuhn: and for added goodness, have an option to add the name on to the end of the logger name: pyogp.base.example.bots.first.last
- http://slurl.com/secondlife/Longfellow/93/115/25 (Started 5 minutes ago)
- [9:35] Morgaine Dinova: UDP "process"? An O/S process?
- [9:35] Enus Linden: sai, that's a good idea, some sort of key for the logging.
- [9:35] Saijanai Kuhn: right, the real issue is keeping track of the output and messaging, and logger will do that automatically for the debug info
- [9:35] Enus Linden: while, eventlet coroutine
- [9:35] Enus Linden: well*
- [9:35] Morgaine Dinova: Aha, internal coroutine, cool
- [9:35] Enus Linden: i also poked at connecting to child regions yesterday...
- [9:36] Saijanai Kuhn: can possibly reuse the logger to store the packet data
- [9:36] Morgaine Dinova: So, the single pyogp lib instance is clearly reentrant :-)))) Good start!!
- [9:36] Enus Linden: it 'works', but for some reason the event queue ceases when a client connects to a child region
- [9:36] Enus Linden: i will figure that out shortly
- [9:36] Saijanai Kuhn: I wasn't worried about the instance being reentrant, but about keeping track of the data on reentrancy (?), morgaine
- [9:36] Enus Linden: what is reentrant?
- [9:37] Saijanai Kuhn: doesn't blow up when you create multiple copies
- [9:37] Enus Linden: right...
- [9:37] Morgaine Dinova: The lib
- [9:38] Enus Linden: the very insteresting thing imo, and the reason i tried this yesterday, is that cpu usage remains the same on average when running 20 bots vs 1
- [9:38] Morgaine Dinova: When you do that iterated spawn, where's the top level index or whatever it is, that Sai can grab as a primary index?
- [9:38] Saijanai Kuhn: wowser
- [9:38] Enus Linden: thats eventlet for you apparently
- [9:38] Enus Linden: morgina, i didn't sort that out yet
- [9:38] Saijanai Kuhn: morgaine I don't think he's iterating. he just does client = blah over and over again
- [9:39] dinha Nayar: oi
- [9:39] dinha's translator: hi
- [9:39] Enus Linden: i think adding an agentmanager to pyogp would deal with all this best
- [9:39] Saijanai Kuhn: all we need is agent_list["clientname"
- [9:39] Morgaine Dinova: for params in clients: :-) That iterates
- [9:39] Saijanai Kuhn: I think
- [9:40] Morgaine Dinova: The problem is that api.spawn is not returning an index.
- [9:40] Saijanai Kuhn: you don't need one. I think. CLient is the object that contains references to all spawned processes
- [9:40] Saijanai Kuhn: or it could
- [9:40] Enus Linden: and that's weird sai
- [9:41] Enus Linden: i didnt think it would work that way
- [9:41] Enus Linden: i'll just make a new class
- [9:41] Enus Linden: make it easy
- [9:41] Saijanai Kuhn: well, I'm not sure you have connections to all the eventlets directly but that could get plunked in I think
- [9:41] Morgaine Dinova: Sure, it can be done by side effect on the global "client", but that's a bit icky.
- [9:41] Saijanai Kuhn: is it? Works the same for one or many
- [9:42] Morgaine Dinova: Side effects are always icky :P
- [9:42] dinha Nayar: oi
- [9:42] dinha's translator: hi
- [9:42] Enus Linden: so we will formalize things properly
- [9:42] Enus Linden: so when i ran these yesterday, i was in a full on funk, and didnt explore why the sim decided to kick the bots after 30ish minutes. i dont think it was a disconnect due to inactivity, nor did i notice the sim thinking the clients were slow
- [9:42] Saijanai Kuhn: well is it a side effect if you refer to client.blah or to agent_list[name].blah?
- [9:42] Enus Linden: it may have been inactivity
- [9:43] dinha Nayar: oi
- [9:43] dinha's translator: hi
- [9:43] Enus Linden: which makes sense, all they were doing was idling
- [9:43] Saijanai Kuhn: like I said, maybe we're missing a undocumented ack
- [9:43] Enus Linden: and sims kick for that
- [9:43] Enus Linden: nope
- [9:43] Enus Linden: 1 client can persist forever
- [9:43] Saijanai Kuhn: ah no activity at all. RIght
- [9:43] Enus Linden: or until it falls apart
- [9:43] Enus Linden: just sending CompletePingCheck responses and packet acks and agent updates
- [9:44] Enus Linden: but, i was pleased to see it just work with no effort :)
- [9:44] Saijanai Kuhn: periodically send a "I'm here" completeagentmovement message?
- [9:44] Morgaine Dinova: Do you have the means to alter character tests Enus, to make it stop logging you out?
- [9:44] Enus Linden: some keepalive mechanism would be nice :)
- [9:45] Enus Linden: morgaine, just sending some random packet should do so fine
- [9:45] Morgaine Dinova: Advanced->Character->Character Tests->Go Away/AFK Ehen Idle
- [9:45] Enus Linden: oh
- [9:45] Morgaine Dinova: Just negate that and you're fine
- [9:45] Enus Linden: i can look into it
- [9:45] Jonit Ivory: Hello
- [9:45] Jonit Ivory: thanks Sai
- [9:45] Morgaine Dinova: Hiya Jonit
- [9:45] Enus Linden: not sure how that works, but we could make it so :)
- [9:46] Saijanai Kuhn: what's the name of your friend for the invite, Jonit?
- [9:46] ~Azora*~ Meter: 1.5.3: Jonit Ivory has removed their combat meter.
- [9:46] Jonit Ivory: a very austere name
- [9:46] Jonit Ivory: Reverend Upshaw
- [9:46] Enus Linden: omg!
- [9:46] Morgaine Dinova: There's also the IdleAFKTimeOut in Debug Settings
- [9:46] Enus Linden: :)
- [9:46] Jonit Ivory: Hello Enus
- [9:46] Enus Linden: hi jonit
- [9:47] Morgaine Dinova: Sai, did you check the wx code into SVN yet?
- [9:47] Enus Linden: how are ya today?
- [9:47] Saijanai Kuhn: did not
- [9:47] Jonit Ivory: not too bad at all
- [9:47] Enus Linden: i didnt create that branch yet morgaine
- [9:47] Morgaine Dinova: Aha
- [9:47] Saijanai Kuhn: see?
- [9:47] Enus Linden: i did not clean up groiup chat b/c of headaches and multibots
- [9:47] Enus Linden: i will clean up this morning and checkin and cut a branch
- [9:47] Morgaine Dinova: Woot! :-)
- [9:48] Saijanai Kuhn: yay
- [9:48] Enus Linden: for that matter, after today all dev work should be happening in side branches
- [9:48] Saijanai Kuhn: but, that means I gotta tidy up MY code too :-/
- [9:48] Jonit Ivory: Enus, are those your bots?
- [9:49] Enus Linden: that they are jonit
- [9:49] Morgaine Dinova: OK, so we're theorizing that the data of every connection spawned can be accessed through client.blah, does that seem right?
- [9:49] Jonit Ivory: hmm, ok
- [9:49] Enus Linden: morgaine, let's make that clientmanager.blah once i add it
- [9:50] Enus Linden: in this example, none of the data is accessible save the last one spawned
- [9:50] Saijanai Kuhn: as long as we have a central place for the GUI/command parser to look
- [9:51] Saijanai Kuhn: enus, at this point even the client list would work for most stuff. Not sure if there's a way to get to the individual spawned eventlets though
- [9:52] Morgaine Dinova: Cool, so 1 client, N agents. Now how is the AD angle looking, or LL's "pseudo-AD" anyway. That needs to be any of the ADs that are coming.
- [9:53] Morgaine Dinova: Sai: you shouldn't need to talk to the coroutines directly, but only manage the data that the processes running in those coroutines use or create.
- [9:54] Enus Linden: dunno about ADs lately
- [9:54] Saijanai Kuhn: hmmm... to quit them I think you would need to have some channel open
- [9:54] Enus Linden: AD work is quiet
- [9:54] Morgaine Dinova: Uh oh
- [9:54] Enus Linden: uh oh?
- [9:54] Morgaine Dinova: Let's not forget that this is PyOGP, not PySL :-)))
- [9:54] Saijanai Kuhn: Zha's work with OpenSim is the only AD work I know that is going on right now
- [9:55] Enus Linden: well, pyogp still works against an AD
- [9:55] Jonit Ivory: Morgaine, you remind us well ((hehe))
- [9:55] Enus Linden: works just fine in fact
- [9:55] Enus Linden: the only diff was login -> rez
- [9:55] Enus Linden: that is retained in pyogp
- [9:56] Jonit Ivory: Sai, Enus, all meet Reverend
- [9:56] Saijanai Kuhn: he Rev
- [9:56] Jonit Ivory: a pesky coder
- [9:56] Enus Linden: and anytime ogp work picks up, pyogp will be one step ahead with accomodating the protocol changes and being able to test implementations
- [9:56] Morgaine Dinova: I wish Zha's lawyers would finish their deliberations, blast. It's taking ages, to no purpose if it's going to be BSD code.
- [9:56] Enus Linden: hello reverend :)
- [9:56] ~Azora*~ Meter: 1.5: Reverend Upshaw has removed their combat meter.
- [9:56] Morgaine Dinova: Hi Rev
- [9:56] Gellan Glenelg: eek! HOW many bots?
- [9:56] Saijanai Kuhn: we're just admiring Enus's bots on parade
- [9:57] Reverend Upshaw: hello folks
- [9:57] Enus Linden: i think 20 gellan :)
- [9:57] Morgaine Dinova: 1 client, N agents, PyOGP is progressing nicely :-)
- [9:57] Enus Linden: nice to see ya here....
- [9:57] Morgaine Dinova: The bots do need avs though :-)
- [9:58] Enus Linden: help me figure out appearance and baking and i'd be glad to morgaine :P
- [9:58] Jonit Ivory: Yes all teh bots should be blue cats
- [9:58] Morgaine Dinova: Haha
- [9:58] Enus Linden: i have a stub appearance class lol
- [9:58] Enus Linden: all my libsl bots are either totoro or the cardboard box bots or little tux wearing daft punk bots
- [9:59] Morgaine Dinova: Avoid the problem by just attaching a sphere or something
- [9:59] Enus Linden: i do so want appearance for pyogp soon, but its not a priority
- [9:59] Morgaine Dinova: Ah, how to make the cloud go away .... invis?
- [9:59] Enus Linden: as soon as they are wearing stuff the cloud goes away
- [10:00] Morgaine Dinova: (Short of doign avs properly I mean)
- [10:00] Enus Linden: 30 minute disconnect :)
- [10:00] Morgaine Dinova: Bye bye bots :-)
- [10:00] Jonit Ivory: they were intimidating, gathered there
- [10:00] Enus Linden: ha jonit
- [10:01] Saijanai Kuhn: if they just said hello every 30 minutes, that would have been enough, I think
- [10:01] Enus Linden: i've done 200 libsl on a modified sim, now that's scary, 200 totoros staring at you.....
- [10:01] Saijanai Kuhn: my eyes my eyes
- [10:01] Jonit Ivory: hehe
- [10:01] Saijanai Kuhn: well should be able to put 20 bots in 2+ sims each just by chaning the login parameters
- [10:01] Jonit Ivory: well not one of them managed a group invite, so I am happy
- [10:02] Morgaine Dinova: Enus, could the agentManager be next in line for writing, so that Sai can grab the data?
- [10:02] Enus Linden: morgaine: sure, unless whump needs help with objects. that takes priority for me, we are working out objects and inventory to be able to regression test permissions
- [10:02] Saijanai Kuhn: shhhh
- [10:03] Enus Linden: we have an object permissions test plan that takes 3+ days for one person to run.
- [10:03] Enus Linden: would be nice to automate that away
- [10:03] Morgaine Dinova: Aye
- [10:03] Enus Linden: and be able to run it against every branch
- [10:03] Saijanai Kuhn: could 20 bots do it 20x as fast?
- [10:03] Enus Linden: we run it infrequently atm
- [10:03] Black Cat: Doll: ~^.^~ Meow!!! ~^o^~
- [10:03] Enus Linden: i'd say 100x faster at least
- [10:04] Enus Linden: no clicks and whatnot
- [10:04] Saijanai Kuhn: ah, so parallelism and UI speedup too
- [10:04] Saijanai Kuhn: so much for the Mythical ManMonth
- [10:04] Morgaine Dinova: Bah, just 100X speedup? ;-)))
- [10:05] Enus Linden: any other topics?
- [10:05] Morgaine Dinova: Well this is all very nice, but ..... Sai can't get at the spawned agents, and the rest of us can't get at Sai's wx code.
- [10:06] Enus Linden: i'll get agent manager done quite soon
- [10:06] Enus Linden: that one is simple
- [10:06] Enus Linden: all it is is storage of and accessibility to metadata and instances
- [10:06] Saijanai Kuhn: morgaine, a simple list will be all I need. That and something to tell output where to stick packet info
- [10:06] Enus Linden: i'll take a stab at it and sai can tell me what else he needs
- [10:07] Enus Linden: should that go in before a branch is cut?
- [10:07] Morgaine Dinova: Sai: yep. That's all I expected actually, not a manager class but a simple array in client.agents[]
- [10:07] Enus Linden: i'm still gonna classify it :P even if it's jsut an array it stores, or a dict
- [10:08] Saijanai Kuhn: right. The big deal will be the ability to reference the data by avaie name
- [10:08] Enus Linden: so what do you want to key off of sai?
- [10:09] Enus Linden: first + ' ' + last?
- [10:09] Morgaine Dinova: Does the manager singleton add value to agent classes?
- [10:09] Saijanai Kuhn: yeah, that should do. Maybe have a second index eventually for agent domain if we want to get fancy
- [10:09] Enus Linden: in time it can.
- [10:09] Enus Linden: it can keep track of who is logged in when
- [10:09] Morgaine Dinova: Sounds good
- [10:09] Enus Linden: and can relog members if they disconnect
- [10:09] Enus Linden: things like that
- [10:10] Morgaine Dinova: Cool
- [10:10] Enus Linden: ok, i'm tuckered, and should run...
- [10:10] Saijanai Kuhn: hey is a great stride Enus. Grats
- [10:10] Enus Linden: will catch y'all in irc and the pyogp group
- [10:11] Enus Linden: anyone care for a group invite btw?
- [10:11] Saijanai Kuhn: should ask if anyone wants invites. NM
- [10:11] Enus Linden: hehe
- [10:11] Morgaine Dinova: Avie name is not a good index, In PyOGP there will be a distinction between visibile names and portable names
- [10:11] Enus Linden: should be a uuid then....
- [10:11] Enus Linden: :)
- [10:11] Enus Linden: we love UUIDs
- [10:11] Saijanai Kuhn: human readable ftw
- [10:12] Morgaine Dinova: Ie. Enus.Linden@OSgrid.org or whatever
- [10:12] Morgaine Dinova: Yep, UUIDs are best internally
- [10:12] Saijanai Kuhn: ye olde primary key
- [10:12] Enus Linden: i'll do uuid, and people can map that however they want
- [10:12] Saijanai Kuhn: as long as we can reference anything needed with the same key, it shouldn't matter
- [10:12] Enus Linden: and we will prolly change it anyway
- [10:13] Enus Linden: k, thanks gang!
- [10:13] Saijanai Kuhn: could even use it in the logger namespace
- [10:13] Jonit Ivory: Enus thanks, I wil have bot nightmares tonight
- [10:13] Morgaine Dinova: Cheers Enus! And don't forget wx branch for Sai! :-)
- [10:13] Saijanai Kuhn: that's right morgaine, make wor for ME
- [10:13] Saijanai Kuhn: work*
- [10:13] Enus Linden: happy to give you nightmares joinit :)
- [10:13] Morgaine Dinova: Trying to allow *US* to do work :-)
- [10:14] Enus Linden: ok morgaine, will do
- [10:14] Enus Linden: see yas :)
- [10:14] Saijanai Kuhn: laters enus
- [10:14] Morgaine Dinova: waves at Enus
- [10:14] Jonit Ivory: ciao
- [10:15] Morgaine Dinova: Enus didn't bring his ant ... I wonder if it got eaten by his bots :P