Chat log from the meeting on 2024-05-28

From OpenSimulator

Jump to: navigation, search
[11:03 AM PT]  Andrew Hellershanks: Hello, everyone.
[11:03 AM PT]  Ubit Umarov: hi
[11:03 AM PT]  Lyr Lobo: Hi Andrew!   Hello everyone *smiles*
[11:04 AM PT]  Lyr Lobo: Heya Orbert!
[11:04 AM PT]  Ubit Umarov: well details of last week code changes are simple to describe..  there where none! you  are stuck with the bugs of previous week!
[11:05 AM PT]  Andrew Hellershanks: :)
[11:05 AM PT]  orbert tatham: Hello all
[11:07 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Changes. Well I can report that work on migrations continues slowly as I try to make sense of Postgres more and more
[11:07 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: It's been fun and frustrating. Love learning, but not sure what I am learning heh
[11:07 AM PT]  Ubit Umarov: you mean on you fork ?
[11:07 AM PT]  Ubit Umarov: ;)
[11:07 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: ;P Don't you worry, you'll have to review it all soon enough
[11:07 AM PT]  Ubit Umarov: :)
[11:08 AM PT]  orbert tatham: My experience with Postgres is it is just enough different from everything else to be frustrating
[11:08 AM PT]  Andrew Hellershanks: hehe
[11:08 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: There is a quasi hidden structure in older postgres that is now in everything. Previous versions you could disable it, not anymore
[11:08 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: So we have migrations that disable it, suppose for speed since its not needed
[11:09 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: From what I can tell that part is just ignored now so it will create that anyways
[11:09 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: But it does mean checking table schema is a bit more difficult if I wanted to check for that also
[11:10 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: So I probably just leave that part out since its not relevant for newer postgres, which people should be using anyways
[11:10 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Don't stick to old postgres versions no longer supported, the CVE's are not fun on that
[11:11 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Other than that I managed to go through my github notifications and saw that bepuphysics has moved to dotnet6 so it is catching up. If anyone, for some reason, doesn't like ubode they could now more easily implement that instead
[11:12 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Not sure why someone would dislike ubode though
[11:12 AM PT]  Cuga.Rajal @rajal.org:9000: raises hand
[11:12 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: lol
[11:12 AM PT]  Ubit Umarov: ne did move to dotnet 8 some time agor
[11:12 AM PT]  Lyr Lobo grins
[11:12 AM PT]  Ubit Umarov: not possible moving to 9
[11:12 AM PT]  Ubit Umarov: now..
[11:13 AM PT]  Cuga.Rajal @rajal.org:9000: well both have pros and cons, and I did a lot of work looking at that this weekend
[11:13 AM PT]  Cuga.Rajal @rajal.org:9000: so a 3rd physics option maybe coming?
[11:13 AM PT]  Cuga.Rajal @rajal.org:9000: cool
[11:13 AM PT]  Ubit Umarov: 8 does have some internal speedups useful for low level
[11:14 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: No clue how difficult it would be to implement, but it being C# means it might be slightly easier than others written in C or C  
[11:14 AM PT]  Ubit Umarov: but like we, they are stuck on their own math entities like Vetor3
[11:14 AM PT]  Cuga.Rajal @rajal.org:9000: Im sure its easier than writing a Bullet connector from scratch
[11:14 AM PT]  Ubit Umarov: made before System.numerics
[11:15 AM PT]  Ubit Umarov: well and in same case still having better code than system.numerics
[11:15 AM PT]  Ubit Umarov: but getting nothing from migration to sse dotnet is doing
[11:15 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: I follow a couple projects relevant to some things we have internally. Also looked at how some projects handle the loss of appdomains, but so far nothing that would work for XEngine, not that I am particularly keen on resurrecting that, just taking interest in the whys and hows really
[11:16 AM PT]  Ubit Umarov: (also not that bad... some code just does not migrate well into SSE instruction set )
[11:16 AM PT]  Ubit Umarov: we only needed them on XEngine
[11:17 AM PT]  Ubit Umarov: and that just to release memory when a script was deleted
[11:17 AM PT]  Ubit Umarov: but the performance cost was insane bad
[11:18 AM PT]  Ubit Umarov: like some old mantis around list performance illustrate
[11:18 AM PT]  Ubit Umarov: ( a 1ns operation took close to ms time scale.. )
[11:19 AM PT]  Ubit Umarov: but old things.. appdomains are not needed by us ( now )
[11:19 AM PT]  Ubit Umarov: ( in fact i late Xengine code i did reduce their use )
[11:19 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: One solution seems to be threading every instance, which worked for them as they had one per window, but with thousands of scripts full threading like that blow the process up
[11:20 AM PT]  Ubit Umarov: well threading has no relation to appdomains..
[11:20 AM PT]  Ubit Umarov: a appdomain was like a entire application inside the main one
[11:21 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: How we used them no that's true, it was just one solution that I saw
[11:21 AM PT]  Ubit Umarov: so that ms now tells,  that if you need that, just make another aplication and do interProcess Communication
[11:21 AM PT]  Ubit Umarov: that appdomains where doing really, just inside a global app
[11:22 AM PT]  Ubit Umarov: for exampe all arguments where copied and SERIALISED...  per clal
[11:22 AM PT]  Ubit Umarov: per each appdomain crossing
[11:23 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Much lighter than spawning 1000  threads for sure
[11:23 AM PT]  Ubit Umarov: well that is other issue..
[11:23 AM PT]  Ubit Umarov: related to llsleep and similar things under Xeng
[11:24 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: If you only need a handful, sync is easy, with thousands... yeah frames per minute more like
[11:24 AM PT]  Ubit Umarov: but later xengine had a smaller threadpool
[11:24 AM PT]  Ubit Umarov: number os Xengine threads is a config option..
[11:25 AM PT]  Ubit Umarov: oops
[11:25 AM PT]  Ubit Umarov: i meant Yengine..  nbuit ofc same was true on X
[11:26 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: The other projects that suffered from appdomain removal have also just removed the features that depended on it
[11:26 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Annoyingly so I might add
[11:26 AM PT]  Ubit Umarov: well don't see the point on looking for appdomain replacements.. we do not use them...
[11:27 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: I'm just curious, but it has been long since they were removed and so far no workable solution either, so I don't have high hopes
[11:27 AM PT]  Ubit Umarov: and form the 2 main reasons fo X engine to use them, it only did one..   memory free... Did nothing abotu code isolation
[11:28 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Might be for the best, Y being more compatible and to spec is making scripting more fun
[11:28 AM PT]  Ubit Umarov: teleport with Xengine could alow some to format your disk
[11:28 AM PT]  Ubit Umarov: oh humbletim
[11:28 AM PT]  Andrew Hellershanks: Hello, On.
[11:28 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: Not exactly much safety anyways, but yeah that too
[11:29 AM PT]  Cuga.Rajal @rajal.org:9000: Question: If you have multiple copies of the same script in different objects, does it use pointers to a single script to save memory? Is that the same with X and Y?
[11:29 AM PT]  Ubit Umarov: firestorm got a patch to allow it to work under z == 0
[11:29 AM PT]  Lyr Lobo: Hello HumbleTim
[11:30 AM PT]  Ubit Umarov: that patch was signed under author name Humbletim
[11:30 AM PT]  Ubit Umarov: :)
[11:30 AM PT]  Ubit Umarov: it is included on fs 7.1.8 limited Beta
[11:31 AM PT]  Ubit Umarov: script sources are shared within reason
[11:31 AM PT]  Ubit Umarov: intermiate object code is also optionaly shared
[11:32 AM PT]  Ubit Umarov: if Yengine seens intermediate code for identical ( ie same) source, it reuses it instead of doinga full compile
[11:33 AM PT]  Cuga.Rajal @rajal.org:9000: ah so in Y and not X. thanks
[11:33 AM PT]  Ubit Umarov: (seens?? sees )
[11:33 AM PT]  Ubit Umarov: well don0t remember X..  but think that did compile always
[11:34 AM PT]  Ubit Umarov: i mean on a source change..
[11:34 AM PT]  Cuga.Rajal @rajal.org:9000: never going back to X lol
[11:34 AM PT]  Ubit Umarov: well i deleted it :p
[11:35 AM PT]  Andrew Hellershanks: That makes it hard to go back. :)
[11:35 AM PT]  Lyr Lobo smiles
[11:35 AM PT]  orbert tatham: There is always source code control - anything can be resurrected...
[11:36 AM PT]  Ubit Umarov: so humbletim  any comment on that patch for fs?
[11:37 AM PT]  humbletim metaverse: Hey everyone, as follow-up on the Z < 0 thing -- I pushed a PR that got merged, which means the camera constraint for negative Z values (thanks for the heads-up, SL!) will now work with older opensim underwater builds. We didn't hardcode a minimum of -100 though. The OpenSim community can decide if OpenSimExtras.MinSimHeight=-100 still makes sense and should be advertised. It's possible to just go back to MinSimHeight=0 later and align with the new SL constraint, but there might be different opinions on that.
[11:38 AM PT]  Vincent.Sylvester @hg.zetaworlds.com: I wish we could fix the shader too
[11:38 AM PT]  Cuga.Rajal @rajal.org:9000: So this would be for regions that are all underwater and nothing above land?
[11:39 AM PT]  Ubit Umarov: well tech is not always a matter of "oppinion"
[11:39 AM PT]  Ubit Umarov: or "opinion"
[11:39 AM PT]  Cuga.Rajal @rajal.org:9000: the -100 limit option has more flexibility bc you can still set it to 0
[11:40 AM PT]  Cuga.Rajal @rajal.org:9000: as long as it doesn;'t break things
[11:40 AM PT]  Ubit Umarov: wel or never let ground go below 0 :)
[11:40 AM PT]  Lyr Lobo: Thank you, Humbletim
[11:41 AM PT]  Ubit Umarov: hope gavin sees it for dayturn
[11:43 AM PT]  Ubit Umarov: not sure if the region that was on center of discussin when i tried to set z>= still exists :)
[11:44 AM PT]  Cuga.Rajal @rajal.org:9000: I had a weird ubODE crash this morning that was reproducible, took down OS every time. Want to hear about it?
[11:45 AM PT]  Ubit Umarov: low stack limit may do it
[11:45 AM PT]  Cuga.Rajal @rajal.org:9000: macoS has higher stack than Linux
[11:45 AM PT]  Ubit Umarov: believe it ot not.. all biue screens i had on win7 where from ubode :)
[11:46 AM PT]  Cuga.Rajal @rajal.org:9000: it happened when *sitting * on a mesh object that I just uploaded
[11:46 AM PT]  Ubit Umarov: blue also..
[11:46 AM PT]  Cuga.Rajal @rajal.org:9000: uploaded it all properly
[11:46 AM PT]  Cuga.Rajal @rajal.org:9000: ODE INTERNAL ERROR 1: assertion "bNormalizationResult" failed in _dNormalize4() [./odemath.h:43]
./opensim.sh: line 3:   648 Abort trap: 6           dotnet OpenSim.dll
[11:47 AM PT]  Ubit Umarov: ohh i had idea i had made those errors soft
[11:47 AM PT]  Cuga.Rajal @rajal.org:9000: Is that something a) someone cares about , show me details, or b) its crappy mesh, forget about it, or c) a procedural mistake caused it
[11:47 AM PT]  Ubit Umarov: that mb a triangle with a very small dimension
[11:47 AM PT]  Ubit Umarov: etc
[11:48 AM PT]  Ubit Umarov: b) ofc
[11:48 AM PT]  Ubit Umarov: lol
[11:48 AM PT]  Cuga.Rajal @rajal.org:9000: I used Lowest physics model and anaslyzed. It os a very small simple model
[11:48 AM PT]  Ubit Umarov: who made that model?
[11:48 AM PT]  Cuga.Rajal @rajal.org:9000: https://sketchfab.com/3d-models/wooden-bathtub-game-ready-asset-137881949bb14f78a0ac1fb4d6f3d2f1
[11:48 AM PT]  Ubit Umarov: lowest mayh be very bad
[11:49 AM PT]  Cuga.Rajal @rajal.org:9000: converted fbx to dae in Blender
[11:49 AM PT]  Cuga.Rajal @rajal.org:9000: no ,ods needed
[11:49 AM PT]  Cuga.Rajal @rajal.org:9000: mods*
[11:49 AM PT]  Ubit Umarov: well that thingk could almost be jsut a box
[11:49 AM PT]  Ubit Umarov: viewer lod have no relation with physcs most time
[11:50 AM PT]  Ubit Umarov: ans lowest can be very bad..
[11:50 AM PT]  Cuga.Rajal @rajal.org:9000: the crash didn;t happen until I added a sit offset and tried to sit on it. Sitting is what caused the crash
[11:50 AM PT]  Ubit Umarov: well a sit offset does not use physcis
[11:50 AM PT]  Cuga.Rajal @rajal.org:9000: right
[11:51 AM PT]  Cuga.Rajal @rajal.org:9000: so why does the sim crash only when I sit on it?
[11:51 AM PT]  Cuga.Rajal @rajal.org:9000: when somebody sits on it
[11:51 AM PT]  Cuga.Rajal @rajal.org:9000: weird
[11:51 AM PT]  Cuga.Rajal @rajal.org:9000: its a somple model, you can upload and try yourself
[11:52 AM PT]  Ubit Umarov: no idea
[11:52 AM PT]  Cuga.Rajal @rajal.org:9000: ok no wooden bathtub then
[11:52 AM PT]  Cuga.Rajal @rajal.org:9000: lol
[11:52 AM PT]  Ubit Umarov: a physics sit does some search on the mesh..
[11:52 AM PT]  Cuga.Rajal @rajal.org:9000: ground sit on top of it had no problem
[11:53 AM PT]  Ubit Umarov: that could just have a box (paralellipiped) collidier
[11:53 AM PT]  Cuga.Rajal @rajal.org:9000: So linking in a regular prim, making that root, and making mesh type None seemed a workaround
[11:53 AM PT]  Ubit Umarov: you can try to see the LOD you selected on fs
[11:54 AM PT]  Ubit Umarov: or change and use full resolution if hte mesh is small
[11:54 AM PT]  Cuga.Rajal @rajal.org:9000: its very small
[11:54 AM PT]  Ubit Umarov: well several options..   i can only guess :)
[11:54 AM PT]  Cuga.Rajal @rajal.org:9000: so LOD might fix problem
[11:54 AM PT]  Cuga.Rajal @rajal.org:9000: chasnging LOD
[11:55 AM PT]  Cuga.Rajal @rajal.org:9000: I was just surprised that it took down the whole server
[11:55 AM PT]  Ubit Umarov: i wash my avatar on rivers lakes and ocean.. no need for bath tubes
[11:55 AM PT]  Cuga.Rajal @rajal.org:9000: pirate ship's gotta have one
[11:55 AM PT]  Ubit Umarov: wlel it took doen my all windows on ocasions  :P
[11:55 AM PT]  orbert tatham: Aye, matey
[11:56 AM PT]  Cuga.Rajal @rajal.org:9000: that was all I had today, the mystery bathtub crash
[11:56 AM PT]  Cuga.Rajal @rajal.org:9000: Hi Blue!
[11:57 AM PT]  Ubit Umarov: yeah as i said sounds like a almost degenerated triangle
[11:57 AM PT]  Andrew Hellershanks: Hello, Misterblue.
[11:57 AM PT]  Cuga.Rajal @rajal.org:9000: the FS uploader did not complain
[11:57 AM PT]  Misterblue Waves: hello all.... late but thought I'd stop by
[11:57 AM PT]  Ubit Umarov: that blows up computing the normal
[11:57 AM PT]  Ubit Umarov: ( that as i said i had idea i had turned into a soft error )
[11:58 AM PT]  Lyr Lobo welcomes Misterblue
[11:59 AM PT]  Andrew Hellershanks: We are almost at the top of the hour.
[11:59 AM PT]  Andrew Hellershanks: Misterblue, do you have any news before we wrap up todays gathering?
[12:01 PM PT]  Misterblue Waves: no... seeing what's happening
[12:01 PM PT]  Andrew Hellershanks: bbiab... phone.
[12:02 PM PT]  Lyr Lobo: Many thanks for the meeting *smiles*
[12:02 PM PT]  Andrew Hellershanks: misterblue: ok, np.
[12:04 PM PT]  humbletim metaverse: also just to mention I have another work-in-progress PR and discussion emerged regarding how Region Name lookups take place over the overloaded ManNameRequest messaging. it affects precise Region name lookups in general though affects HOP URLs in particular. Would be great to have more eyes on the tentative viewer-side workaround strategy: https://github.com/FirestormViewer/phoenix-firestorm/pull/25
[12:06 PM PT]  Cuga.Rajal @rajal.org:9000: Could that be related to the region listing when using World Map Search?
[12:06 PM PT]  Cuga.Rajal @rajal.org:9000: the region listing issue we talked about in recent weeks
[12:10 PM PT]  humbletim metaverse: is there a mantis or jira for the World Map Issue? (could take a glance and see if related)
[12:11 PM PT]  Cuga.Rajal @rajal.org:9000: Good question, we discussed it here briefly as an observation but I dont know if anything was filed
[12:12 PM PT]  Ubit Umarov: wel my memory is bad..
[12:12 PM PT]  Ubit Umarov: but a issue is how viewer expects a result similar to the query
[12:12 PM PT]  Ubit Umarov: at least start 3 letters or so
[12:12 PM PT]  Cuga.Rajal @rajal.org:9000: I think we were talking about how results were sorted non-intuitively
[12:13 PM PT]  Vincent.Sylvester @hg.zetaworlds.com: Oh that
[12:13 PM PT]  Cuga.Rajal @rajal.org:9000: not a big problem
[12:13 PM PT]  Ubit Umarov: then the searchs it does on its own cache, that may lead to wrong results
[12:13 PM PT]  Cuga.Rajal @rajal.org:9000: may be different issue
[12:13 PM PT]  Vincent.Sylvester @hg.zetaworlds.com: Yeah searching for "Sand" and getting "A Sand Castle" as first result rather than "Sandbox"
[12:13 PM PT]  Ubit Umarov: and he has no idea what http://  hop://  hg:// means most the time
[12:13 PM PT]  Ubit Umarov: so includes those on searchs
[12:13 PM PT]  Vincent.Sylvester @hg.zetaworlds.com: It's a bit odd in how it matches words
[12:14 PM PT]  orbert tatham: That's ugly
[12:14 PM PT]  Vincent.Sylvester @hg.zetaworlds.com: To me at least, opinions may differ on what should appear first
[12:14 PM PT]  Ubit Umarov: think we have some hack code to make them work a bi better
[12:14 PM PT]  Ubit Umarov: well order depends on a lost of things
[12:15 PM PT]  Ubit Umarov: ll string order is diferent from the main we do use
[12:15 PM PT]  Ubit Umarov: ( we mostly uses c# ordinal order
[12:15 PM PT]  Ubit Umarov: use..)
[12:15 PM PT]  Vincent.Sylvester @hg.zetaworlds.com: What is intuitive to me is first results being starts with and then contains not contains first and starts with later just because it sorts alphanumeric overall
[12:16 PM PT]  Cuga.Rajal @rajal.org:9000: would be nice to have a sorting option drop-down box
[12:17 PM PT]  Cuga.Rajal @rajal.org:9000: but yeah I agree
[12:20 PM PT]  Vincent.Sylvester @hg.zetaworlds.com: I haven't looked at OpenSim end of this yet to see if there is any changes that could be done to sort orders of that or if the viewer does the sorting
[12:21 PM PT]  Cuga.Rajal @rajal.org:9000: would humbletim's changes affect this?
[12:22 PM PT]  Cuga.Rajal @rajal.org:9000: thats why I brought it up
[12:22 PM PT]  Ubit Umarov: not even sure we do bother to sort
[12:22 PM PT]  humbletim metaverse: MapNameRequest block records seem to be returned as an ordered block set (with an input-named null-region sentinel record terminating the list). Whether or not that order is used as-is on viewer side I can't recall. But no in general my PR speaks to explicit name lookups -- and by design does not affect search/wildcard usages.
[12:22 PM PT]  Ubit Umarov: since that is a viewer job
[12:23 PM PT]  Ubit Umarov: but dont' remember
[12:23 PM PT]  Ubit Umarov: just that we are forced to mess the retunr names so viewers do accept them
[12:24 PM PT]  Ubit Umarov: ( actaull thing viewers use the start of answer to find what was the request???  well guessing now )
[12:25 PM PT]  Ubit Umarov: ( so if we did a full sort, the viewer would jsut ignore the answer )
[12:25 PM PT]  Ubit Umarov: things do get a lot ugly using HG  urls
[12:25 PM PT]  Cuga.Rajal @rajal.org:9000: do you know that for fact?
[12:26 PM PT]  Ubit Umarov: well i did work on that 3 ?? years ago or more :P
[12:26 PM PT]  Cuga.Rajal @rajal.org:9000: So doing sort at server does not fix display result order? Then is viewer feature
[12:27 PM PT]  Ubit Umarov: sort should be a viewer side thing
[12:27 PM PT]  humbletim metaverse: speaking of ugly URLs -- here is a link to the code region that I believe is responsible for MapNameRequest handling -- http://opensimulator.org/viewgit/?a=viewblob
[12:28 PM PT]  Ubit Umarov: if (needOriginalName 
[12:29 PM PT]  Ubit Umarov: int indx = mapName.IndexOfAny(new char[] {'.', '!',' ','|',':','%'});
                bool needOriginalName = indx >= 0;
[12:29 PM PT]  Ubit Umarov: part of code to mk sure viewer does not ignore what we send back
[12:30 PM PT]  Cuga.Rajal @rajal.org:9000: Sorry, RL calls, I must go
[12:31 PM PT]  Cuga.Rajal @rajal.org:9000: see you all later
[12:31 PM PT]  humbletim metaverse: ... yup -- that's the workaround and effect that in part the PR alternates around, at least for explicit exact Region name lookups. previously, sending a flags == 2 request meant false positives coming back -- lookups and links for `/UE North/1/2/3` essentially directing to `/Vue North/1/2/3`
[12:33 PM PT]  Andrew Hellershanks: This phone call is going to take a while. Ubit, can you take over the meeting. I don't know how long I'll be.
[12:33 PM PT]  Ubit Umarov: wel i also need run into rl
[12:33 PM PT]  Ubit Umarov: guess we are also mostly done no?
[12:33 PM PT]  Andrew Hellershanks: and my call just got disconnected while I was on hold as the other person had another call to take. :P
[12:33 PM PT]  Lyr Lobo: Many thanks for the feedback and points to consider
[12:33 PM PT]  Ubit Umarov: this names thing will not be fixed today :)
[12:34 PM PT]  Lyr Lobo: See you next week
[12:34 PM PT]  Andrew Hellershanks: I like humbletim's avatar. Didn't get a chance to see it up close until now.
[12:34 PM PT]  Ubit Umarov: cya lyr :)
[12:34 PM PT]  Andrew Hellershanks: ok, Lyr. Thanks for dropping by. See you again next week.
[12:34 PM PT]  Lyr Lobo: distinctive *grins*
[12:35 PM PT]  Andrew Hellershanks: If there is nothing further for today I will call this meeting to a close.
[12:36 PM PT]  Ubit Umarov: cya ppl
[12:36 PM PT]  Andrew Hellershanks: ok, Ubit.
[12:36 PM PT]  humbletim metaverse: oh, thanks Andrew. i actually chose/created the avatar thinking it would neutrally blend into the background crowd... but it has not once worked that.
[12:37 PM PT]  Andrew Hellershanks: Thank you all for coming. See you again next week.
[12:37 PM PT]  humbletim metaverse: it is from the outworldz tutorial: https://www.outworldz.com/secondlife/posts/Avatars/Gerrymander/
Personal tools
General
About This Wiki