User:Andrew Linden/Office Hours/2008 03 11

From Second Life Wiki
< User:Andrew Linden‎ | Office Hours
Revision as of 21:45, 11 March 2008 by Nock Forager (talk | contribs) (User:Andrew Linden/Office Hours/2008 02 11 moved to User:Andrew Linden/Office Hours/2008 03 11: Fixing typo.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Transcript of Andrew Linden's office hours:

[11:03] Arawn Spitteler: I want to script one of these, that doesn't move you around as much, and only uses one prim.
[11:03] Arawn Spitteler: Hi, Andrew
[11:03] Rex Cronon: hi
[11:03] Andrew Linden: Hello everyone.
[11:03] Rex Cronon: how is h4 doing?
[11:04] Gaius Goodliffe: Good morning :)
[11:04] Andrew Linden: I no longer have trouble remembering that I have office hours these days.
[11:04] Andrew Linden: In the past I used to almost forget to show up.
[11:05] Andrew Linden: Havok4... is moving along. We think we're going to push it out everywhere on the 25th
[11:05] Andrew Linden: that is the date we're shooting for
[11:05] Arawn Spitteler: Fortnight
[11:05] Rex Cronon: on the same date on all sims?
[11:05] Gaius Goodliffe: Then the real screaming begins. ;)
[11:05] Andrew Linden: yes, I think that is the plan
[11:06] Andrew Linden: I can't remember if there were some transition there.
[11:06] Enrico Genosse waves.
[11:06] Andrew Linden: Sidewinder knows. I just know that I have to fix every "blocker" bug a week or so before that
[11:06] Rex Cronon: hi
[11:07] Andrew Linden: ok, I might as well give a little summary of where the Havok4 project is...
[11:07] Andrew Linden: We're going to try to have a new update in QA on Thurday
[11:08] Andrew Linden: so that would mean... maybe on Friday evening or afternoon we could update the Preview
[11:08] Andrew Linden: and maybe some of the Havok4 regions on the main grid... not sure.
[11:08] Andrew Linden: Kinda depends on when QA declares it ok.
[11:09] Andrew Linden: Lessee... that would be... around the 15th
[11:09] Gaius Goodliffe: Will that include the fixes you mentioned in the comments here: https://jira.secondlife.com/browse/SVC-1567 ?
[11:09] Andrew Linden: er... 14th
[11:09] Andrew Linden: so it should actually be pushed out everywhere around the 17th or 18th at the latest
[11:09] Andrew Linden: er... on all of the early adopters, I mean
[11:10] Andrew Linden: then we would have another two or three days to fix any last minute bugs
[11:11] Andrew Linden: before the code would freeze and we would be in QA for the final update (everywhere) which should happen on the 25th... or 26th (Wed)
[11:11] Andrew Linden: I'm a little vague on the final details. I'm just working hard until they tell me I can't check in anything else.
[11:12] Andrew Linden: As we've mentioned before, some known bugs will be in the final version, and we'll be fixing those for another few weeks
[11:12] Andrew Linden: that is, we'll keep the Havok4 dev team intact for a few weeks or couple of months
[11:13] Andrew Linden: but eventually the Havok4 team will break up and join other projects. I'll probably join our bugfixing team for a while
[11:13] Andrew Linden: and maybe work on a few easy post-havok4 features
[11:13] Shirley Marquez: and Sidewinder will find something new to keep track of I guess :)
[11:14] Andrew Linden: Yes, sidewinder will also move on to another project, or two.
[11:14] Andrew Linden: He is actually working on a few other internal projects, I think.
[11:14] Andrew Linden: But Havok4 is his main thing.
[11:14] Andrew Linden: Lessee... what other news.
[11:15] Andrew Linden: I've fixed the VEHICLE_NO_MOTOR_UP bug
[11:16] Andrew Linden: but some vehicles still hit prim seams badly. I was struggling with that one, and decided to move on to things I could actually make progress on.
[11:16] Andrew Linden: I've got some ideas on what to do there, but they may require most of a day writing new code, meanwhile little easy things were piling up.
[11:17] Rex Cronon: whoever likes to drives cars might not like it
[11:17] Andrew Linden: The bug I'm currently working on is SVC-1760.
[11:17] Andrew Linden: It appears that some very complex prims (lots of triangles) will be replaced with a big box right now.
[11:18] Arawn Spitteler would expect Prim Seams to be easier on Sliding Objects, with H4: If objects can more easily seperate, they should more easily collide.
[11:18] Andrew Linden: The problem is that the simulator is trying to add too much detail, and the triangle limit is hit and it fails to buidl triangles.
[11:18] Rex Cronon: torus?
[11:18] Andrew Linden: Yes, so a hollow torus with extra spirals may get boxified atm.
[11:19] Kooky Jetaime: Andrew, this may not be totally H4 related, and I honestly don't know what version our sim is running (Albulata), but when I was on a 4 wheeler the other day, if I was traveling along at a good clip towards a sim border, sometimes I'd freeze, and find myself on the other side of it (and on the other sim). This would be 50m+ away from the line it would happen. Hear of anything similar happening anywhere?
[11:19] Rex Cronon: wow. so i can no longer drop a ball in hollow torus:(
[11:20] Enrico Genosse: hmm, could this problem with complex shapes affect the cpu time on physics? My dogs use a lot of torii.
[11:20] Arawn Spitteler wonders what that's going to do for Water-Slides.
[11:20] Andrew Linden: kooky, I think I've seen that problem a few times myself. I don't know what is causing it yet. The simulator continues, and the client continues to render, but network updates are failing for a few seconds.
[11:20] Andrew Linden: ah the dogs...
[11:20] Kooky Jetaime: I'm using 1.19.1(RC)..
[11:20] Rex Cronon: would a torus that is not hollow be left alone?
[11:21] Andrew Linden: Enrico, our current plan is to punt the dog performance problem until after Havok4 is "done".
[11:21] Andrew Linden: Our logic on that is... there aren't very many dog owners that have a very large number of dogs
[11:21] Arawn Spitteler: Would a Tube have similar trouble? I was getting some odd behaviour, in my last class.
[11:21] Kooky Jetaime: I'm not sure if I was on it when it happened or the last WL canditate, but I think I was on 1.19.1(rc)... At first I thought that you guys (ll) had improved sim crossing anticipation to start the handoff earlier when heading for a crossing on a vehicle, so when you hit the border, you would be already on the new sim, and it would eliminate the falling through problems..
[11:22] Andrew Linden: and the bug has a workaround in the sense that you can try to keep the dogs in smaller piles than 5 at a time
[11:22] Andrew Linden: That is, we don't think that blocks deploying Havok4 for the vast majority of the grid.
[11:22] Andrew Linden: And we do plan on trying to fix it.
[11:22] Enrico Genosse: aw. I understand. I've got some experimental test results that might help isolate the problem... when you're ready.
[11:23] Andrew Linden: Hrm... I don't have much other news.
[11:23] Andrew Linden: The table is now open to all topics. First one is Enrico's dog performance data.
[11:24] Andrew Linden: Go ahead Enrico
[11:24] Enrico Genosse: well, I've tried some variations on the dogs ...
[11:24] Enrico Genosse: to see the effect on performance....
[11:24] Enrico Genosse: noticed a couple things...
[11:24] Andrew Linden: have you made box dogs yet?
[11:24] Enrico Genosse: box dogs? I don't understand.
[11:25] Andrew Linden: Have you tried using boxes for your dog geometry, to isolate the effect of the prim complexity contribution to performance problems.
[11:25] Enrico Genosse: nope. but I will. You mean change all the child prims to simple boxes, eh? Good idea.
[11:25] Andrew Linden: Yes, that would also be a good test
[11:26] Andrew Linden: Actually, boxes and true sphere (uniform in scale) are the cheapest shapes to simulate
[11:26] Enrico Genosse nods.
[11:26] Andrew Linden: anyway, what was your data?
[11:27] Enrico Genosse: well, I turned of the 'walking' animation in the dogs (non-phys movement of child prims)....
[11:27] Enrico Genosse: and performance came up a notch....
[11:27] Andrew Linden: oh... the dogs constantly change their shape (child prim positons animate)
[11:27] Enrico Genosse: right.
[11:27] Andrew Linden: I haven't actually seen the dogs yet.
[11:27] Andrew Linden: Go on.
[11:28] Enrico Genosse: anytime, I'd love to show you... anyway...
[11:28] Enrico Genosse: the dogs have a feature called 'nudge'....
[11:28] Enrico Genosse: tells other dogs to move away if they are too close...
[11:28] Enrico Genosse: help protect against H1 crashes...
[11:28] Enrico Genosse: I turned it off today to see....
[11:28] Enrico Genosse: and performance actually took LONGER to recover...
[11:29] Enrico Genosse: makes me wonder about the physics settling algorthym
[11:29] Andrew Linden: that isn't too suprising. The things that kill a Havok1 engine also load a Havok4 engine.
[11:29] Enrico Genosse nods.
[11:29] Enrico Genosse: one more interesting thing...
[11:29] Enrico Genosse: normally, the dogs stop moving and go non-phys....
[11:30] Enrico Genosse: when time dilation drops below .6...
[11:30] Enrico Genosse: I took that out expecting worse performance...
[11:30] Enrico Genosse: but had no effect on performance!
[11:30] Enrico Genosse: (except dogs got to their target sooner of course).
[11:30] Enrico Genosse: that's it for now, I'll add it to the jira comments.
[11:31] Gaius Goodliffe: Did TD drop below .6 during that test?
[11:31] Andrew Linden: Well, as you can see, the dogs could be optimized a bit to spare the physics engine
[11:31] Enrico Genosse: oh, yes. It hangs between .5 and .6 while several dogs move at once.
[11:31] Andrew Linden: but there are probably places where the physics engine could also be optimized to reduce the problem
[11:31] Andrew Linden: that's the stuff we'll be working on after Havok4 is declared complete
[11:31] Enrico Genosse: I'm happy to make any optimizations within the dogs that I can.
[11:32] Enrico Genosse: I just need some guidance on what to do there.
[11:32] Andrew Linden: And finally... there are some features we'd like to add that would help content creator's provide "hints" to the physics engine for optimizing stuff like dogs
[11:32] Enrico Genosse: !
[11:33] Andrew Linden: These are ideas that come up again and again, internally and suggested by residents too
[11:33] Gaius Goodliffe: Like not having to recompute the collision shape on every leg movement?
[11:33] Andrew Linden: but we're not working on those until after Havo4 is done (and stable)
[11:33] Andrew Linden: such as:
[11:33] Kooky Jetaime: that would definately be an optimization Gaius
[11:33] Enrico Genosse: that leads to one more question if I may...
[11:33] Andrew Linden: (1) hint to replace the collision shape of a prim collection with a single convex hull shape
[11:33] Enrico Genosse: I have a 'protective bubble' around the dogs that envelopes child prims...
[11:33] Enrico Genosse: that helped with sim crashes in H1...
[11:34] Andrew Linden: (2) hint to NOT really move the child prims collision shape (viewer side animation only)
[11:34] Enrico Genosse: does that help still? Or should I take away the bubble now?
[11:34] Andrew Linden: (3) hint to boxify the individual parts of a complex linked shape
[11:34] Andrew Linden: and a few others
[11:34] Enrico Genosse nods.
[11:34] Enrico Genosse: I see.
[11:34] Shirley Marquez: a thought.... what if you made the legs sculpties and changed the sculpt texture instead -- that doesn't change the shape so far as physics are concerned, right? (or is that changing too?)
[11:34] Andrew Linden: the bubble kinda helps, but the object is still complex inside
[11:34] Enrico Genosse: I was JUST going to ask that!
[11:35] Andrew Linden: which causes load even when the internal parts are not colliding
[11:35] Enrico Genosse nods.
[11:35] Kooky Jetaime: Andrew, will H4 handle objects with both physical and phantom prims, or is it still 1 setting fits all?
[11:35] Andrew Linden: Unfortunately, the simulator can't detect automagically when these simplification steps could be taken
[11:35] Enrico Genosse nods.
[11:35] Andrew Linden: so we would have to provide them as hints that content creators could use
[11:35] Enrico Genosse: I see.
[11:36] Gaius Goodliffe: If we could mix physical and non-phys prims, we could just make a physical box around the item and make the stuff inside non-phys for a complex look with simple collisions.
[11:36] Andrew Linden: Kooky, per-prim collision properties is something that we'd like to add
[11:36] Enrico Genosse: that wold be perfect for me, Gaius.
[11:36] Kooky Jetaime: Why do I see a physics tab being added to the build tools.. heh
[11:36] Andrew Linden: it is kinda difficult to do very fancy per-prim collision properties in Havok4, however just making some prims non-collidable would be doable
[11:37] Gaius Goodliffe: (and by non-phys I mean phantom)
[11:37] Andrew Linden: so yeah, consider that item (4). There are a few others
[11:37] Enrico Genosse: and what about switching sculpt textures to achieve animation? how would that help?
[11:37] Andrew Linden: well... item (1) was to replace the collection with a convex hull
[11:37] Shirley Marquez: so Enrico could just put a transparent physical bubble around the dog and make everything else phantom
[11:38] Shirley Marquez: if the CHANGING shapes are what is confusing the physics engine, giving the appearance of change with sculpties would be better
[11:38] Andrew Linden: which would be simpler than allowing the content creator to specify the shell shape
[11:38] Rex Cronon: what if u step on its tail?
[11:38] Kooky Jetaime: Andrew, I'll admit, I've fallen very out of step with H4's development, is there a wiki page with a list of the changes in place?
[11:38] Enrico Genosse: hehehehe, he won't bite.
[11:38] LuckyJade Alter giggles
[11:38] Andrew Linden: A variation of (1) would be to be able to specify sub-sets of prims that could be convexified
[11:39] Andrew Linden: so, perhaps you could break a complex object up into 2 or more groups, each of which is replaced with the convex hull of the group
[11:39] Arawn Spitteler thinks it sounds like the dogs could be animated sculpty.
[11:39] Andrew Linden: when I say "convex hull" I mean the convex envelope of all the shapes inside.
[11:39] Enrico Genosse nods.
[11:40] Rex Cronon: a "collision skin"
[11:40] Andrew Linden: Anybody else have some pressing issues?
[11:40] Rex Cronon: so, will a torus that is not hollow be left alone?
[11:40] Andrew Linden: No Rex, a non-hollow torus is still concave
[11:40] Gaius Goodliffe: I have an example object where llSetPos fails from a child prim in H4 (but works fine in H1).
[11:41] Arawn Spitteler also had some odd hollow tube behaviour, that might be related.
[11:41] Andrew Linden: the convex hull of a torus would have its hole filled in flat
[11:41] Andrew Linden: What was the problem with the hollow tubes Arawn
[11:41] Shirley Marquez: Honestly, I don't think you have to worry TOO much about the complaints of broken content -- people will be too busy dealing with the content broken by WindLight :)
[11:42] Andrew Linden: Gaius, I think maybe Kelly Linden is working on your llSetPos() bug.
[11:42] Arawn Spitteler: I have a sit position set script, where the owner touches to reset.
[11:42] Gaius Goodliffe: kk -- I came up with a very simple example demo object, I'll fire him a copy of it...
[11:42] Andrew Linden: Shirley, those with broken content will complain loudly
[11:42] Arawn Spitteler: Hollow Tubes make the best spiral stairs, and this script makes it a teleporter.
[11:42] Andrew Linden: and those complaints will be funneled to the Havok4 team.
[11:43] Shirley Marquez: I know really... just putting it in perspective
[11:43] Rex Cronon: there r some defences that use toruses. these will be broken:(
[11:43] Arawn Spitteler: But, I discovered that the sim had gone H4, when I stood at the top of the stiars, set the tp location, and using the tp sent me bouncing
[11:43] Andrew Linden: oh, he bouncing avatar problem. I've already fixed that, I think.
[11:43] Arawn Spitteler: Somehow, my standing position became a colliding position
[11:43] Andrew Linden: Just yesterday.
[11:44] Arawn Spitteler: Was that a change of position, on my part, or a confusion of hollowness.
[11:44] Andrew Linden: Arawn, when you say "sent me bouncing" do you mean it pushed you out very fast?
[11:44] Arawn Spitteler: If the tube wasn't properly hollow, I shouldn't have been able to set to a collission
[11:45] Andrew Linden: Or do you man that your avatar was bouncing after it tp'd?
[11:45] Arawn Spitteler: When I stood, since I didn't have unsit on auto, I went flying, in a non-flying state.
[11:45] Andrew Linden: hrm...
[11:46] Andrew Linden: Arawn, are the stairs a megaprim? > 10m on a side?
[11:46] Andrew Linden: There were some changes recently where megaprims can get extra "detail"
[11:47] Andrew Linden: and can cause them to overshoot the triangle limit --> they get boxified
[11:47] Andrew Linden: I don't think that is your problem, actually.
[11:48] Andrew Linden: Arawn, if you give me a copy I may be able to look at it
[11:48] Andrew Linden: ok, so that spiral is colliding properly right now
[11:50] Arawn Spitteler: Seems to be colliding properly, now
[11:50] Andrew Linden: there is a little bit of slop when the seat position is calculated
[11:50] Arawn Spitteler: Has it been restarted since Friday?
[11:50] Andrew Linden: it isn't necessarily always the same place, if a sit-hint has not been set
[11:50] Shirley Marquez: that whole thing is just one prim, cute
[11:50] Kooky Jetaime looks up.. I think Arawn just wanted to be on a high pedistal.. *Chuckles...
[11:50] Arawn Spitteler: Shouldn't it calculate from Agent Target?
[11:50] Andrew Linden: and the stand up position is influenced by the sit position
[11:51] Arawn Spitteler: This is a highly efficient stairway, Two Prims can take you up or down, walking or sitting.
[11:51] Arawn Spitteler: Most will help the lag toss you off.
[11:52] Andrew Linden: Well, sounds like it is intermittent. When you've got a reliable repro file it in jira.
[11:52] Andrew Linden ... must ... focus
[11:52] Enrico Genosse: hehehe
[11:52] Enrico Genosse: like a laser beam, andrew.
[11:52] Gaius Goodliffe: I find focus before lunch is impossible...
[11:52] Andrew Linden: Anybody else have some issues or questions?
[11:53] Andrew Linden: Er... anybody have other issues or questions?
[11:53] Enrico Genosse shrugs
[11:53] BugTest Dumpling: LOL
[11:53] Shirley Marquez: no, just happy to hear that things are progressing well
[11:53] Enrico Genosse nods.
[11:53] Kooky Jetaime: Andrew
[11:53] Andrew Linden: Yeah, we think we're close.
[11:53] Aybabtu Aabye: theres a transcript of this session?
[11:54] Kooky Jetaime: Any chance of the physics getting a little tighter? *Points to my demo over on the blue square
[11:54] Andrew Linden: Yes Aybabtu, I'll try to post it right after the meeting.
[11:54] Kooky Jetaime: thigns are a little..spacey arn't they?
[11:54] Rex Cronon: where can we find a list wiht the shape used for each type of prim by the physics engine?
[11:54] Aybabtu Aabye: thanks
[11:54] Shirley Marquez: us CSI folks are a LITTLE concerned about the timing; the 26th will be a big day for us, that's when CBS is rebroadcasting the CSI in SL episode
[11:54] Andrew Linden: http://wiki.secondlife.com/wiki/User:Andrew_Linden
[11:54] Andrew Linden: the transcripts can be found there
[11:55] Andrew Linden: Hrm... Shirly I think an update is scheduled for either the 25th, or the 26th
[11:55] Shirley Marquez: yes, you mentioned that earlier
[11:55] Andrew Linden: don't we always do our updates on Wednesdays still?
[11:56] Andrew Linden: Or has that changed?
[11:56] BugTest Dumpling: No
[11:56] Shirley Marquez: we hope the update goes well -- and that it doesn't roll over us between 8 and 9pm SLT on Wednesday!
[11:56] BugTest Dumpling: I'm sure it isnt like that anymore : )
[11:56] Shirley Marquez: oops, make that 7 to 8 SLT
[11:56] BugTest Dumpling: lol
[11:56] Arawn Spitteler thinks: We'll want our catastrophic roll-back before the CSI feature
[11:57] Sidewinder Linden: /heh... i'm trying to get the csi folks to test before the show... :)
[11:57] Kooky Jetaime: Hi Sidewinder
[11:57] Sidewinder Linden: hi kooky
[11:57] Andrew Linden: Well, the people in charge of deploying may want to wait if a huge influx of curious newbies were to be loging in
[11:57] Shirley Marquez: if it's deployed as a rolling update, it might take a while to roll out to the entire grid
[11:57] Rex Cronon: hi sidewinder
[11:57] Andrew Linden: I'll make sure to mention it Shirley
[11:57] Sidewinder Linden: what are we talking about?
[11:57] Sidewinder Linden: hi guys
[11:57] Shirley Marquez: hello, Sidewinder!
[11:57] BugTest Dumpling: Hey Sidewinder
[11:57] Enrico Genosse waves to Sidewinder too.
[11:57] Shirley Marquez: wreaking Havok on the grid
[11:58] Sidewinder Linden: heh
[11:58] Enrico Genosse: har!
[11:58] Andrew Linden: Sidewinder, apparently CBS may be re-airing the CSI:NY SL episode on Wed the 25th
[11:58] Andrew Linden: er... 26th
[11:58] Shirley Marquez: 26th
[11:58] Sidewinder Linden: yes...
[11:58] Andrew Linden: The deploy around then... is it happening on the 25th or the 26th?
[11:59] Arawn Spitteler imagines an episode of CSI-SL: What if G-Team were to catch a german conspiracy to smuggle Nazi Kid Porn on the grid?
[12:00] Sidewinder Linden: well the final release schedule is up to the release team, and coordination
[12:00] Sidewinder Linden: with several other projects...
[12:00] Sidewinder Linden: they're quite aware of the csi show schedule, for what it's worth
[12:00] Sidewinder Linden: also - it will depend on not acquiring any huge blocker problems
[12:00] Kooky Jetaime: Andrew, or sidewinder, is the physics going to be tightened up at all, or are we gonna be stuck with wide gaps like that *Points at the blue square with boxes on it...
[12:01] Sidewinder Linden: i thought most of the gap problems were resolved...
[12:01] Sidewinder Linden: there was a prim-docker bug that i *think* was in the last deploy
[12:01] Sidewinder Linden: maybe i'm not understanding what you're after..
[12:01] Kooky Jetaime: theres .1m of space between prims
[12:02] Andrew Linden: I think Kooky is talking about the collision tolerance for dynamic objects.
[12:02] Andrew Linden: Kooky, it will ship with that collision tolerance, yet.
[12:02] Sidewinder Linden: ahh ok different issue
[12:02] Andrew Linden: yes.
[12:02] Kooky Jetaime: any chance of that getting better in the future or?
[12:02] Creem Pye: the collision tolerance is the same with avatars, right?
[12:02] Creem Pye: so the bottom of my bounding box is in the middle of my shins
[12:03] Andrew Linden: Perhaps Kooky. It is a "misfeature" of Havok4. Perhaps someday we'll be able to eliminate it.
[12:03] Kooky Jetaime: oh.
[12:03] BugTest Dumpling: What's the AR Catagory for Bots?
[12:03] Kooky Jetaime: I was gonna say, H1 IIRC was significantly better
[12:03] Andrew Linden: Don't know much about ARs.
[12:03] BugTest Dumpling: >>.<<
[12:04] Sidewinder Linden: /bugtest... "harassment"? depends on what they're doing :)
[12:04] Andrew Linden: Kooky, as far as I know H1 also has a collision tolerance of 0.1 m
[12:04] BugTest Dumpling: Is a CopyBot, is a shady area anyway, but Assault will do
[12:05] Rex Cronon: shouldn't be 0.01?
[12:05] Kooky Jetaime: Copybot would be Other
[12:05] Kooky Jetaime: Yea, I thought it was .01, since that was the smallest you could make a prim
[12:05] BugTest Dumpling: Forgot about other *slaps self*
[12:05] Kooky Jetaime needs to find an h1 sim
[12:06] Aybabtu Aabye: wth
[12:06] BugTest Dumpling: Right gotta tp be well : )
[12:06] Rex Cronon: if is 0.1 is no wonder why is so "easy" over prims
[12:06] Rex Cronon: to drive over*
[12:07] Kooky Jetaime: ya
[12:07] Andrew Linden: Okay everyone, I've got to go. Thanks for coming.
[12:07] Kooky Jetaime: that would definatly explain prim crossing problems
[12:07] Creem Pye: have a good day
[12:07] Enrico Genosse: thank you, andrew. bye y'all!
[12:07] Rex Cronon: bye andrew
[12:07] Kooky Jetaime: Rex - you know a H1 sim?
[12:07] Gaius Goodliffe: Thank you!
[12:07] Rex Cronon: yes
[12:07] Rex Cronon: rausch:)