Chat log from the meeting on 2026-05-12

From OpenSimulator

Jump to: navigation, search
[11:03 AM] Andrew Hellershanks: Hello, everyone.
[11:04 AM] Bianca.Blast @hg.holoneon.com: what book are you working on Jagga
[11:04 AM] Bianca.Blast @hg.holoneon.com: hi Andrew
[11:04 AM] Lyr.Lobo @cc.opensimulator.org:8002: Hello and welcome!
[11:05 AM] Jagga.Meridith @hg.zetaworlds.com: AuDHD Inside the Systemizing Mind
[11:05 AM] Jagga.Meridith @hg.zetaworlds.com: probably will top out around 210 pages
[11:05 AM] Ubit Umarov: ohh there are ppl here
[11:05 AM] Ubit Umarov: hi
[11:05 AM] Ubit Umarov: :)
[11:05 AM] Bianca.Blast @hg.holoneon.com: hi Ubit
[11:06 AM] Cuga.Rajal @rajal.org:9000: Hi
[11:06 AM] Bianca.Blast @hg.holoneon.com: oh nicontinic receptors going haywire i think Jagga
[11:07 AM] Ubit Umarov: well about last week bugs.. errr code changes
[11:08 AM] Andrew Hellershanks: I finished my work project this past Thursday.
[11:08 AM] Andrew Hellershanks: Came down to the wire but got it done.
[11:09 AM] Ubit Umarov: i did accept a PR at github from some holoneon, with a fix to the config section where AssetTransactionModule did read the value for min asset upload level
[11:09 AM] Ubit Umarov: then ofc i did change it :)
[11:09 AM] Bianca.Blast @hg.holoneon.com: yes it's minor i just noticed it
[11:10 AM] Ubit Umarov: then i did add GetFirstConfigVarFromSections<T>
[11:11 AM] Ubit Umarov: like old GetConfigVarFromSections<T> it looks for a config setting looking into several sections proviced in a manually order array
[11:12 AM] Ubit Umarov: but that older one did scan all the sections, returning the last value found
[11:12 AM] Ubit Umarov: ofc i dont like code doing useless scans, to the new thing just returns a value as soon it founds it
[11:12 AM] Ubit Umarov: it finds...
[11:13 AM] Ubit Umarov: that means the order of the array needs to be inverse... the most likely section first...
[11:14 AM] Bianca.Blast @hg.holoneon.com: well i got asset bombed the other day so i was looking at asset storing code. i can't decide if i want to add a rate limiter on the store() function - which would mean all the calls would need to send context - or handle it on the front end
[11:15 AM] Bianca.Blast @hg.holoneon.com: apparently if you can send one asset you can send 100,000 in ten second lol
[11:15 AM] Ubit Umarov: ( like m_levelUpload = Util.GetFirstConfigVarFromSections<int>(source,"LevelUpload",["Permissions", "Startup"], 0); )
[11:15 AM] Bianca.Blast @hg.holoneon.com: it's like a snake eating a pig
[11:15 AM] Bianca.Blast @hg.holoneon.com: giggles
[11:15 AM] Ubit Umarov: yeah all things should have rate control...
[11:16 AM] Ubit Umarov: but opensim trusts its users.. coff coff coff
[11:16 AM] Andrew Hellershanks: :D
[11:16 AM] Bianca.Blast @hg.holoneon.com: well they were tiny animations so i suspected coming from AO feature in firestorm but those just go to the scene i think and don't get stored. so .. somewhere they got shoved into the mix
[11:17 AM] Bianca.Blast @hg.holoneon.com: all type 20
[11:17 AM] Ubit Umarov: fs AO stay on fs only
[11:17 AM] Bianca.Blast @hg.holoneon.com: well that was a hunch the didn't turn up to be the cause
[11:17 AM] Bianca.Blast @hg.holoneon.com: :)
[11:17 AM] Ubit Umarov: it is viewer side thing i think
[11:18 AM] Bianca.Blast @hg.holoneon.com: probably but it seems i can other people's ao animations who use fs
[11:18 AM] Bianca.Blast @hg.holoneon.com: i think they get sent up to the scene memory but not sure
[11:18 AM] Ubit Umarov: also did more "cosmetic" changes mostly on groups module
[11:19 AM] Vincent.Sylvester @hg.zetaworlds.com: Code is now diabetic with all that sugar
[11:20 AM] Ubit Umarov: well some was not sugar
[11:20 AM] Vincent.Sylvester @hg.zetaworlds.com: It's really old code so yeah better options for things available now
[11:20 AM] Ubit Umarov: replace dic.Contains by trygetvalue does reduce sugar levels
[11:21 AM] Ubit Umarov: yeah think back in the dayr there was no tryget...
[11:21 AM] Vincent.Sylvester @hg.zetaworlds.com: When the code was written it did exist, but was new stuff
[11:21 AM] Ubit Umarov: and sure not collectionsmarshall.getvalueordefault
[11:22 AM] Ubit Umarov: all abotu reducing the need to rehash a key and do search on dics
[11:22 AM] Ubit Umarov: that some ppl thinks it is free ...
[11:23 AM] Vincent.Sylvester @hg.zetaworlds.com: I still think that just needs a whole rewrite to get performance back, especially in terms of db to code and regions to robust comms being slow, but certainly should help to claw some performance back that way
[11:24 AM] Ubit Umarov: well i was not fixing the module
[11:24 AM] Vincent.Sylvester @hg.zetaworlds.com: That's a headache for another day far in the future
[11:24 AM] Ubit Umarov: just to replace dic.contains everywhere.. slowly in time ..
[11:25 AM] Vincent.Sylvester @hg.zetaworlds.com: New FS beta is out, has some fixes for groups in there which does improve behavior so it doesn't feel as sluggish anymore either
[11:25 AM] Vincent.Sylvester @hg.zetaworlds.com: Mostly cosmetic
[11:25 AM] Ubit Umarov: well and we do have the other grousp module... the xmr.. one
[11:25 AM] Ubit Umarov: xml i mean
[11:25 AM] Bianca.Blast @hg.holoneon.com: oh sounds good i will check it out
[11:26 AM] Ubit Umarov: and got more ideas abotu the invisible prims with tj ?
[11:27 AM] Vincent.Sylvester @hg.zetaworlds.com: After doing a translate scene which sends terse the region has been fine for two days. Last time it took about a week and it went back to the invisible prims
[11:27 AM] Ubit Umarov: ( i will not send terseupdates for all .. that is silly )
[11:27 AM] Vincent.Sylvester @hg.zetaworlds.com: So in the meantime making changes to force update to better debug, thinking that terse then full updates doesn't work quite right either
[11:27 AM] Ubit Umarov: a terseupdate removes a object from the cache on the viewer
[11:28 AM] Ubit Umarov: that is.. silly
[11:28 AM] Vincent.Sylvester @hg.zetaworlds.com: I did find a minimal bandaid for sending them just to new connections, which actually reminds me
[11:28 AM] Vincent.Sylvester @hg.zetaworlds.com: Util.FireAndForget does that spawn independent from main thread? Meaning thread.sleep isn't going to halt everything?
[11:29 AM] Ubit Umarov: well and if we do need to move this is silly
[11:29 AM] Ubit Umarov: that places the job on the threadpool
[11:29 AM] Ubit Umarov: it will run on a thread from that pool as soon one is free
[11:30 AM] Vincent.Sylvester @hg.zetaworlds.com: Ah so it shouldn't halt, that's good, cause I had to delay the updates a little for the teleport to actually finish
[11:30 AM] Ubit Umarov: ( kinda like dotnet tasks that are a fancy broken way of doing similar )
[11:31 AM] Ubit Umarov: we do fireandforget to not delay current thread
[11:31 AM] Ubit Umarov: you can see it on heartbeat for example
[11:31 AM] Vincent.Sylvester @hg.zetaworlds.com: I added a force update terse just sending those update types rather than full, so that should allow for more precise testing, but yeah sending just terse seems to "fix" the problem, but we have yet to work out why that's the only way to fix it reliably
[11:31 AM] Ubit Umarov: well that is not the way
[11:31 AM] Ubit Umarov: lol
[11:32 AM] Vincent.Sylvester @hg.zetaworlds.com: No it isn't, bandaids aren't fixes
[11:32 AM] Ubit Umarov: (you are a bad Madalorian )
[11:32 AM] Vincent.Sylvester @hg.zetaworlds.com: Between lack of docs, tech debt and changes to fix weird behavior the protocol probably just doesn't communicate properly, doubt any side is specifically to blame
[11:33 AM] Ubit Umarov: they way ill do it is on our updates send
[11:33 AM] Ubit Umarov: when sending a cachedupdate, i would inject a terse to be sent also
[11:33 AM] Ubit Umarov: in fact terses are sent just after....
[11:34 AM] Ubit Umarov: but that is very silly
[11:34 AM] Ubit Umarov: in fact a simple terse with no real change may even be igniored by viewer
[11:34 AM] Vincent.Sylvester @hg.zetaworlds.com: I suspect some change in viewer just unearthed a protocol mismatch that has been there forever, but reading viewer code on that level isn't easy so finding what exactly it expects or if there is a logic error in there still is a task and thensome
[11:35 AM] Vincent.Sylvester @hg.zetaworlds.com: At the moment I'm waiting on the region to break again, then we'll dig more into it
[11:35 AM] Ubit Umarov: that object cache is pure crap
[11:35 AM] Ubit Umarov: to start it does cache lludp messages..
[11:35 AM] Ubit Umarov: not built objects
[11:35 AM] Vincent.Sylvester @hg.zetaworlds.com: After sending all terse it loaded everything on there from cache, so it's possible the cache gets poisoned
[11:35 AM] Ubit Umarov: ( or messages payload )
[11:36 AM] Vincent.Sylvester @hg.zetaworlds.com: Both the consistency and the inconsistency in how it behaves are just strange though
[11:36 AM] Ubit Umarov: viewers are just broken
[11:36 AM] Vincent.Sylvester @hg.zetaworlds.com: It's isolated to a region, but then happens there every time, that's just strange
[11:36 AM] Ubit Umarov: if ll did server side changes... that may jsut mean they have no contact with the viewer devs
[11:37 AM] Vincent.Sylvester @hg.zetaworlds.com: I'd put it past them to just bandaid this too, wouldn't be the first time
[11:37 AM] Ubit Umarov: (that cache was made by The product Engine company for ll i think )
[11:37 AM] Vincent.Sylvester @hg.zetaworlds.com: I'm looking for Joe maybe he knows a bit more about what that protocol looks like since he had to re-implement it
[11:38 AM] Ubit Umarov: fear things in Odessa are not the best to code,m this days.. but just guessing...
[11:38 AM] Vincent.Sylvester @hg.zetaworlds.com: I could also just bitch on the issue ticket on github about this that they really should document this properly now rather than later when everyone has forgotten how it works again
[11:39 AM] Ubit Umarov: well no ida
[11:39 AM] Vincent.Sylvester @hg.zetaworlds.com: At least I'm not alone seeing weird stuff like last time
[11:39 AM] Ubit Umarov: no even sure if ll fix was to send terses..
[11:39 AM] Ubit Umarov: i do remember that alrady a few years ago terses did hide the issue
[11:39 AM] Ubit Umarov: bc as i said, thay tell the viewer that the object is no longer cachable
[11:40 AM] Vincent.Sylvester @hg.zetaworlds.com: But yeah I developed a distrust in that cache, but we tried with lower bandwidth, low cache size, high cache size etc. trying to reduce variables, no real difference, certainly no resolution
[11:40 AM] Ubit Umarov: ( 5 minutes or so latter the viewer may put it back on its cache )
[11:40 AM] Ubit Umarov: well you can try to kill it
[11:40 AM] Vincent.Sylvester @hg.zetaworlds.com: Did notice that between kdu and openjpeg different stuff fails to load, so I think that's a clue as to what might be failing
[11:41 AM] Ubit Umarov: and replace it by our interest manager
[11:41 AM] Ubit Umarov: but that is still very crude.. i stooped looking to if bc ll moved that to vievers
[11:41 AM] Ubit Umarov: ( and ofc more load on the region )
[11:42 AM] Vincent.Sylvester @hg.zetaworlds.com: There is a lot of stuff from data to visual prim that it can go wrong on, finding that is not going to be easy or fast I'm afraid
[11:42 AM] Vincent.Sylvester @hg.zetaworlds.com: Once it reproduces again more testing and then we'll see
[11:42 AM] Ubit Umarov: fun is how rare that issue is...
[11:42 AM] Vincent.Sylvester @hg.zetaworlds.com: and then how consistent, two things in combination that are just odd
[11:43 AM] Vincent.Sylvester @hg.zetaworlds.com: Then again if you recall that timing issue with that lock that would drop scene updates was 2 regions of over 300
[11:43 AM] Ubit Umarov: what lock? dont remember
[11:44 AM] Vincent.Sylvester @hg.zetaworlds.com: That issue where when you were alone on a region after a couple minutes it would forget you were there and stop position updates to the viewer
[11:44 AM] Vincent.Sylvester @hg.zetaworlds.com: It got confused with checking due to some lock and that only happened in very specific timing conditions
[11:44 AM] Ubit Umarov: yeah dont remember that... but details :)
[11:45 AM] Ubit Umarov: well multithread issues are mostly timing issues
[11:45 AM] Ubit Umarov: all fien until 2 cores decide to mess on the same thing at same time
[11:45 AM] Vincent.Sylvester @hg.zetaworlds.com: c71181ff515b2d2e464dcf769f391cd5eccc4d0f I think the commit that fixed it
[11:46 AM] Ubit Umarov: 2021 ?
[11:46 AM] Ubit Umarov: you think i could remember that far?
[11:46 AM] Ubit Umarov: :)
[11:46 AM] Vincent.Sylvester @hg.zetaworlds.com: It was significant enough that I wrote it down hehe
[11:47 AM] Ubit Umarov: but ok jobengines are not threadsafe.. do need locks
[11:48 AM] Ubit Umarov: ( jobengines are like mini threadpools
[11:48 AM] Ubit Umarov: as we enques jobs they take threads from the main pool
[11:49 AM] Ubit Umarov: and keep them whiel they have work
[11:49 AM] Ubit Umarov: ( some just take 1... but keep a nice isolated list of jobs to do )
[11:49 AM] Vincent.Sylvester @hg.zetaworlds.com: In the case of the invisible prims I gravitate more towards some queue overloading or the viewer failing to process and skip the remainder or something, just based on how each login it is different prims missing. There always seem to be some that render all the time though, mostly the stuff containing mesh, but even that isn't consistent
[11:49 AM] Ubit Umarov: not that this is using the smartthreadpool
[11:50 AM] Vincent.Sylvester @hg.zetaworlds.com: The lack of consistency with the symptoms makes going back to the cause rather difficult
[11:50 AM] Ubit Umarov: that i stil think it is better than the ms one
[11:50 AM] Ubit Umarov: and its bs tasks
[11:51 AM] Ubit Umarov: ms main threadpool ( that tasks uses ((tasks +-+jobs ) refuses to ask for more than 6 threads from the os
[11:51 AM] Ubit Umarov: and takes sevral; seconds to decide to ask for another
[11:52 AM] Ubit Umarov: and still suffers from threads starvation on some edge cases, ms never did care to fix..
[11:52 AM] Ubit Umarov: well whatever
[11:52 AM] Ubit Umarov: soem say smartthread pool is obsolete and did remove it...
[11:53 AM] Ubit Umarov: well nm.. details
[11:53 AM] Vincent.Sylvester @hg.zetaworlds.com: Which reminds me on something else actually. For the region modules I needed a deconstruct of sorts, something that runs before the scene data becomes unavailable to parse. I did find it in the backup event, but that seems to be the only thing that runs on shutdown prior to scene unload. Subscribing to that isn't perfect though since it triggers on interval as well, so only shutdown is a bit difficult. Both RemoveRegion and Close have the SOG list unloaded already.
[11:54 AM] Vincent.Sylvester @hg.zetaworlds.com: I have to dig around there again see if there might be something else that can be used
[11:54 AM] Ubit Umarov: wel scene umload is basicly a fail
[11:54 AM] Ubit Umarov: you will jsut lose ram, never recoverd
[11:54 AM] Ubit Umarov: and that is not the worse that can happen
[11:54 AM] Vincent.Sylvester @hg.zetaworlds.com: Well I just wanted something that runs when you type shutdown, but while scene still knows all the objects in there
[11:55 AM] Vincent.Sylvester @hg.zetaworlds.com: The backup event does that, just also fires randomly at runtime
[11:55 AM] Ubit Umarov: well you need to look into the shutdown chani and inject yrs thing
[11:55 AM] Ubit Umarov: bet there is a event even
[11:55 AM] Ubit Umarov: (..chain..)
[11:56 AM] Vincent.Sylvester @hg.zetaworlds.com: Heh yeah I tried that, but somehow the scene was already gone. Haven't tried adding a full event for that though, that might work
[11:56 AM] Ubit Umarov: ( if thre is a even, you need to keep in mind that there is no exec oreder on the things attached to it )
[11:56 AM] Ubit Umarov: ( there is a event..)
[11:57 AM] Ubit Umarov: well that events schema has that issue
[11:57 AM] Vincent.Sylvester @hg.zetaworlds.com: In this case running it regularly isn't such a bad idea so the backup event is actually probably correctly used
[11:57 AM] Ubit Umarov: you may have something there that runs first and already deleted things
[11:58 AM] Ubit Umarov: i had to take something out of events recently
[11:58 AM] Ubit Umarov: hmm
[11:58 AM] Ubit Umarov: close a client i think
[11:58 AM] Vincent.Sylvester @hg.zetaworlds.com: Well backup has to run before shutdown to persist changes so the interception point there is what I need just maybe not the regular intervals it runs on otherwise
[11:58 AM] Ubit Umarov: a llupd client
[11:59 AM] Bianca.Blast @hg.holoneon.com: yes otherwise stuff moves and reverts :)
[11:59 AM] Ubit Umarov: to make sure it did run, and it is the last
[11:59 AM] Bianca.Blast @hg.holoneon.com: i need to figure out how to ban control C in the opensim console giggles
[11:59 AM] Ubit Umarov: think shutdown does wait for backup :)
[12:00 PM] Ubit Umarov: since i finally fixed cntr C i only use it
[12:00 PM] Ubit Umarov: lol
[12:00 PM] Vincent.Sylvester @hg.zetaworlds.com: I didn't want to add a full on PreShutdown event to it just yet, but that might be the cleanest route
[12:00 PM] Bianca.Blast @hg.holoneon.com: well i sometimes accidentally do that and poof it shuts down
[12:00 PM] Lyr.Lobo @cc.opensimulator.org:8002: /me smiles
[12:00 PM] Ubit Umarov: just be carefull dony let a console selected
[12:01 PM] Ubit Umarov: it will freeze the region
[12:01 PM] Bianca.Blast @hg.holoneon.com: oooh
[12:01 PM] Ubit Umarov: as soon the log buffer gets filled, it stops
[12:01 PM] Lyr.Lobo @cc.opensimulator.org:8002: Yes
[12:01 PM] Lyr.Lobo @cc.opensimulator.org:8002: Must dash, friends, see you next week
[12:01 PM] Bianca.Blast @hg.holoneon.com: well i need to run RL nice to see everyone and thanks for all the great work Ubit and Vincent
[12:02 PM] Bianca.Blast @hg.holoneon.com: and others
[12:02 PM] Ubit Umarov: mks sure you dont leave half editing a line or scrolling back
[12:02 PM] Bianca.Blast @hg.holoneon.com: yes.. i tend to control-c that and it shuts down the server lol
[12:02 PM] Ubit Umarov: ( anything that stops log from printing )
[12:03 PM] Jagga.Meridith @hg.zetaworlds.com: meh - pull the plug
[12:03 PM] Bianca.Blast @hg.holoneon.com: hope to see you next week bye for now
[12:03 PM] Ubit Umarov: well cntr-c is supposed to be like shutdown :)
[12:03 PM] Andrew Hellershanks: Bye, Bianca.
[12:03 PM] Vincent.Sylvester @hg.zetaworlds.com: Andrew, I did make quite a bit of progress on search this past week as well. Got some more data parsed and server side handling, but still testing
[12:04 PM] Vincent.Sylvester @hg.zetaworlds.com: string.join seems to add newlines somehow, need to figure out why the heck it does that
[12:04 PM] Cuga.Rajal @rajal.org:9000: janus has to be stopped with ctrl-C
[12:04 PM] Ubit Umarov: since the time i did type shutdown on a shell instead of a region console
[12:04 PM] Ubit Umarov: i prefer cntr-c
[12:04 PM] Ubit Umarov: :)
[12:04 PM] Cuga.Rajal @rajal.org:9000: Does a "clean shutdown" reduce risks of something corrupted, versus ctrl-C?
[12:05 PM] Ubit Umarov: ( anyway i kept typing shutdown in the wrong place, like on a machine 350km away )
[12:05 PM] Ubit Umarov: cnt-c calls shutodown
[12:05 PM] Ubit Umarov: and shutdown also
[12:05 PM] Cuga.Rajal @rajal.org:9000: I mean "quit" at the command line
[12:06 PM] Cuga.Rajal @rajal.org:9000: at the OS console
[12:06 PM] Ubit Umarov: think that does not do backup, but dont remember
[12:06 PM] Vincent.Sylvester @hg.zetaworlds.com: Typing shutdown should tho
[12:06 PM] Cuga.Rajal @rajal.org:9000: on an OS console?
[12:07 PM] Cuga.Rajal @rajal.org:9000: never tried that command
[12:07 PM] Ubit Umarov: shutdown does... even waits for it to end :P
[12:07 PM] Cuga.Rajal @rajal.org:9000: Well.... Linux
[12:07 PM] Jagga.Meridith @hg.zetaworlds.com: I've always done shutdown
[12:08 PM] Cuga.Rajal @rajal.org:9000: Are talking about stopping a simulator at the console?
[12:08 PM] Cuga.Rajal @rajal.org:9000: or shutting down server?
[12:08 PM] Ubit Umarov: http://opensimulator.org/wiki/Server_Commands
[12:08 PM] Ubit Umarov: it will answer in a hour or 2
[12:08 PM] Cuga.Rajal @rajal.org:9000: OK I will RTFM
[12:08 PM] Ubit Umarov: nm
[12:08 PM] Ubit Umarov: quit - shutdown the server.
[12:09 PM] Ubit Umarov: shutdown - synonym for quit
[12:09 PM] Ubit Umarov: pfff
[12:09 PM] Ubit Umarov: ;0
[12:09 PM] Cuga.Rajal @rajal.org:9000: well never bothered to learn that one =)
[12:10 PM] Cuga.Rajal @rajal.org:9000: This weel I converted my grid from ... standalone to grid
[12:10 PM] Cuga.Rajal @rajal.org:9000: I know that sounds weird
[12:10 PM] Cuga.Rajal @rajal.org:9000: This week*
[12:10 PM] Ubit Umarov: ohh had forgotten about this also
[12:10 PM] Ubit Umarov: m_startupCommandsFile = startupConfig.GetString("startup_console_commands_file", "startup_commands.txt"); m_shutdownCommandsFile = startupConfig.GetString("shutdown_console_commands_file", "shutdown_commands.txt");
[12:11 PM] Cuga.Rajal @rajal.org:9000: Vincent was ahuge help in making my conversion deom standalone to grid
[12:11 PM] Cuga.Rajal @rajal.org:9000: He is probably annoyed at me for asking 100 questions
[12:11 PM] Cuga.Rajal @rajal.org:9000: =)
[12:11 PM] Ubit Umarov: and yeap
[12:11 PM] Ubit Umarov: m_console.Commands.AddCommand( "General", false, "quit", "quit", "Quit the application", (mod, args) => Shutdown()); m_console.Commands.AddCommand( "General", false, "shutdown", "shutdown", "Quit the application", (mod, args) => Shutdown());
[12:12 PM] Vincent.Sylvester @hg.zetaworlds.com: I'm used to it, is what I do
[12:12 PM] Ubit Umarov: for now quit ++ shutdown
[12:12 PM] Ubit Umarov: ==
[12:12 PM] Ubit Umarov: ok
[12:12 PM] Ubit Umarov: rl calls
[12:12 PM] Ubit Umarov: any last issue?
[12:13 PM] Andrew Hellershanks: I was about to ask that. :)
[12:13 PM] Ubit Umarov: good :)
[12:13 PM] Cuga.Rajal @rajal.org:9000: I want to use "exit" to shutdown..... joke
[12:13 PM] Andrew Hellershanks: :)
[12:13 PM] Andrew Hellershanks: As there appears to be nothing further I will say my usual closing remark.
[12:13 PM] Ubit Umarov: add it after what i pasted :p
[12:14 PM] Andrew Hellershanks: Thank you all for coming. See you again next week.
[12:14 PM] Ubit Umarov: yeah see you all next week, if not before
[12:14 PM] Cuga.Rajal @rajal.org:9000: I am happy after the switch to grid mode. it seems more snappy.
[12:15 PM] Cuga.Rajal @rajal.org:9000: OK, I should go too
[12:15 PM] Cuga.Rajal @rajal.org:9000: Thanks again, Vincent
[12:15 PM] Cuga.Rajal @rajal.org:9000: Have a great week all
Personal tools
General
About This Wiki