User:Enus Linden/Office Hours/2008 March 27

From Second Life Wiki
Jump to: navigation, 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