Alright, So welcome to office hours. Um, I'm a little bit late. Apologies for that.
I don't know what just happened there on my desk, but don't mind loud noises.
Uh, so let's get on with questions.
Uh, make sure to drop questions in the question thread if you have them.
If you don't know what question thread is, someone will link it to you.
Hopefully, cos I'm juggling, like four or five things due to my lateness.
Uh, so looking at the questions in the question thread, we have, uh,
a couple from J four.
So let's go through them. First up is how are you doing?
And the, uh, answer there is I'm very busy.
Uh, let's go ahead and let's let's lock last week's make sure people find
new,
uh, the new one. There we go. Locked.
Um,
yeah. So I woke up. I didn't sleep very well last night.
Um, just one of those nights, you know, nothing out untoward.
Just it sometimes happens.
Uh, and so I had to wake up for a 10 a.m. meeting, and then I had to go to the dentist at,
like, 130
I was running late, so I took a $5 uber ride. That's how short it was,
um,
down to down to the dentist and the dentist did like
a whole host of work and then basically said like,
Hey, can, uh, your insurance is kind of crappy, and it's like, Yeah,
my insurance is kind of crappy.
So,
uh, lots of stuff they want to do is gonna cost money.
But when it comes to teeth, I, uh I kind of just say OK,
the one thing I said no to, though Now why are we talking about teeth?
I don't know, but whatever,
um
uh is that
they were like, Hey, you know, we could We could fix, uh,
some of the like alignment issues with Invisalign.
And for those who don't know,
Invisalign is like the hip new way of doing teeth alignment.
And it basically is
wear hard plastic that slowly pulls your teeth into a, uh, correct place and I.
I just I
they're like It's so easy.
You just have to wear this lump of plastic inside your mouth
24 7 unless you're eating or brushing your teeth and it's just like, yeah, just just
just
that's what I say to the dentist, it's like,
I don't think I'm gonna be able to tolerate that,
Uh, and then,
like their dental tech comes in and says I'm wearing
them and I've been wearing them in 10 months,
you know, just to sort of give a sort of testimony, I guess.
Um,
but I was just like, uh it's just it's not gonna work. It's not gonna work.
Um, as for the cost, Yeah, um, insurance would have covered any of it.
They had, like, a a grand off of it as like a December, um,
like promotion.
But it was still, like, five grand or something.
So, uh, I don't I don't need perfectly straight teeth. I I've decided not.
Not for four K. And not for having lumps of plastic inside my face for 12 months.
I got a treat for you today.
Um, cos he decided to wake up and come over.
That is how the the second question is going.
Uh, so the se, uh, actually not the second question. The third question.
So the second question is from Jay
who says from the announcements in announcements,
Have you already gotten ideas of fun stuff? that you want to do.
Unfortunately for me, there isn't really any, like, fun.
New stuff, um, that I need to do.
There's just lots of stuff that I haven't been able
to do because I've been busy with other things.
So,
uh, it pretty much is gonna be status quo for me.
Um,
that is disappointing me, But I'll try and do some fun stuff.
The moment I tried to think of something fun
that I would do a bunch more work appeared,
uh, from, like, other places.
And II I just like it.
It's easier for me to focus on what I would have been
doing had I not been working on business work back in March.
Right?
Um,
if anything,
it would be like a complex issue that takes a while for everyone to look at.
So, like a day or so ago, I was thinking like, why don't I just for december fix?
I PV six, right?
It can't be that complicated. We've got a mod that does it.
I know that there needs to be some edits to the bridge and relay to allow that.
I think those are most from a sort of infrastructure point of view,
and we need to give them an I PV six, route,
Um, rather than technical.
But, you know, I was like, maybe I'll just fix that for December,
and then it's like, Hm, Well, maybe I'll just fix the asset variance worker. Right?
So for context that runs on windows
under, I think it runs.net eight now, but it could run under Linux under.net nine.
And it would be it would be very, very much more performant. Um
uh uh in that environment.
So maybe I should do that.
But, like, these are all things
that I would have done had I not been working on business stuff,
so it's a little bit like challenging.
Um, I know some of the things that
that others are gonna work on.
Um, but one of the things about it being fun is like,
we don't really want to talk about it too much, because
if we talk about the work too much, it becomes unfun like you. You'll see github
issues and stuff like that. But,
um,
you know, can you imagine if there was like, I don't know,
a feature that we're working on that we're trying to do for fun.
And it turned into, like, a huge, uh, deal Exactly like, uh, like photon
dust. It just it wouldn't be fun anymore.
That's the kind of sort of stuff, like still do work. But maybe
maybe something that's, like, more fun or or personally motivating
for me personally motivating is the Alerts channel never going off again.
Me? It went off today, didn't it? Fris
was working on some cloud stuff, but, uh, yeah, it went off today.
Uh, So the new alert that you're seeing there is for upload jobs and and, uh,
record preprocess jobs.
I'm still configuring that alert, cos it looks like it's still being wrong.
What I said was, hey, take an average and if the average is above 100 for five minutes,
let us know I might have to bump that up to 10 minutes.
I'll see the window that this all resolved in. Let's see, uh, 140.
0, that was the previous one. So yesterday, at 2. 10, So 210, it fired,
and then it looks like it fired again five minutes later.
Yeah, that's that five minute thing.
Uh,
and then it fired 10 minutes later,
and then it looks like it resolved itself in the same update.
It was like, Hi, I'm firing. But I'm also at the Hi, Fetter. Yep, yep. Hello.
Yes, I'm Mo. I know that my face tastes good. I've had lots of dental stuff done.
So it's it's dentistry up here. Yes. Hello? Fed. Hi. Hi. Hello.
Could you get down, please? Can we stop licking? Can we stop licking me?
Thank you.
Uh,
no.
Chill out, mate.
There we go. Uh, so that's the second question.
The third question is how the dog doing the dog is right here. Look at them.
This is feta. For those who don't know, this is my dog.
They have their own wiki page, you know, on their Internet wiki. I made them a page.
Let's move, forwards.
Uh, Rose says, uh, why do you have no mouth on your, uh, profile picture?
I will show you why,
um, go to pictures, Avatars.
We tried to add my mouth, my
mouth.
We tried to add mouth.
We tried to add, like, lip sync at one point, and it just ended up looking horrible.
And, yeah, I know that the mouth there is too high,
but we raised it that high for the lols
of this particular creation
happened at the same time as
I have to go to a different folder for this,
Uh, as all of these Pokemon,
uh,
a friend photoshopped my face onto a bunch of Pokemon
So that used to be my mixer offline image.
Each one that isn't a Pokemon or of me has a a reference that is,
is a story for another day.
Let's, uh, move on. So that's that question
I fed.
You got some eye
boogers
ends up in, in, in, in the audience here who's got a dog that gets eye
boogers and you're like, Ah, I have to deal with your eye boogers dog.
Where are we all questions? Nookie? Um, how do reflection probes work?
I can see what they do,
but I'm not quite sure what they're doing on the rendering level.
Are they playing some sort of per pixel?
Based on the normals of the running on the GP U, it's gonna be a gains question again.
What I do know is that they give extra data to, um,
the rendering pipeline to to render those, um to render those reflections.
That's that's all I know about them.
I also know that you you can't rotate them.
So, like a limitation that is like It's OK,
but it does sometimes mean that you have air
where reflection probes might overlap.
Let's say you had a a cramped, uh, building with several rooms next to each other.
You might end up in a space there where if you baked reflection,
probe per room where you could not have an appropriate reflection probe,
maybe like where those those rooms overlap.
But, um, this place
around
What are you doing? Feather.
So
this is feathers, but welcome to feather. But this is feather. But, Cam,
I think that's all the questions we've got. So you'd enjoy the B
Cam? Yeah.
This is FDA's tale.
Do we have any additional questions?
What are you doing?
Come back. Yeah. There you go.
That's it. Sit down. Sit down. There you go. What would you like to tell the audience?
Whether
he looks very confused.
What's up?
What do you want?
That's it. Chill out. Or was it the headphone cable? There you go.
He was sort of lying on the headphone cable which is one of those twisty cables,
so I can understand how that might be weird for him.
Dog to touch.
Ah, I love this question.
I also have the code open, so I can, like, talk you through it.
Uh, cos there is a technical answer, but it's also another one of those cases where,
like, you shouldn't really have to worry.
Uh, so the question comes from nookie, but it's via, uh, Timo.
But like
Timo's a cool person.
Let them know that I I said that they were called nookie, if you see them again.
Prime said you were cool.
There you go.
Uh, Anyway, um, the question is,
what is the difference between value copy and value Driver?
There is a difference, and one is technically more performant than the other.
I just need to remind myself which,
uh so for those un aware and I'll I'll,
I'll give you the the location of where they are.
Value driver is in relation to high F.
Don't stick your tongue down my throat. Oh,
so value drivers in relations but value copy
if I can spell copy. Uh,
copy is in transform drivers. And so they are like two different folders.
Oh, is your question OK? Still, tell Tim
and that that they're cool. Um, we tend to use value copy more.
And that's because we've got, um, extension. I'm just gonna go live.
Uh, let's just make sure I'm not gonna show anything
sensitive
Git Branch Am I on?
All right. I can't show git, but I can share everything else. Good.
Uh,
share. Screen for extension. Go. All right,
there we go. So let's make this large as well. So this is value. Copy.
Hi. Hi,
Fetter.
Yeah. Hi. Fed.
You're licking the keyboard hand. This isn't good.
Um, and value copy just does a a AAA value set hook, right? It just sets up that
and value driver
does it,
like,
just a a little differently.
Um, it uses field drive here rather than here where we use No,
we use field drive here as well.
Like so you can see, like the
they're almost identical.
There's just a a slight difference in the way that the hooking is set up. I.
I seem to remember that there's, like, a a material difference.
I just can't remember what it is right now.
Um, let me see what's going.
Oh, yeah, This is right back. So this is how right back works.
So what this basically says is like, Hey,
um uh, if we edit the the source field here,
um, and right back is enabled. So we've edited the value in the source field.
Right back's enabled,
and the source is not null.
And we we we
set up the value correctly, right? So we we do a copy backwards, and that's how right
works. Um, but you can see here in on changes. It's like the same code.
It's just like a bit of if soup I seem to remember one of them was more efficient.
I don't remember which one, if you don't need right back.
Arguably,
Value driver would be cos there's like there's less
like purely from a memory point of view,
there's one less sync.
Right? So there's one less sync object.
Uh, so So there you go. There's your answer. There's one less sync object.
Uh, here, we've got 12,
and here we've got 123.
there's also no, uh, value hook.
Uh, but that doesn't mean that right back doesn't work.
Now, the the extensions that I was talking about are down here.
And these are like, these are beautiful. Like they're really beautiful.
Like, say, I had, uh, another field on here
such as Let's do sync string
test and sync string test two.
What I can do is I can say like, hey, test two dot
Uh, no. What
is it drive from? Yeah,
test two dot drive from
test
like in code. This is all I need to do. I need to need to write that.
And when this runs, it will attach the value copy,
set it up for me, and then return it back to the code here.
So rather than writing all of this when I wanna set up a value copy in code,
I just need to write,
so it's really kind of cool.
We've got a bunch of those, um, you can see that by my confusion.
If I do test and then you've got, like, drive from Bol drive from value,
there's even,
uh
I don't remember what it's called.
Some
I'm a bit Is it on the value
There's an equality shortcut anyway, but, uh, there you go. All right. Um,
yeah. So, technically, value driver is cheaper. I cannot remember why.
There may be, um, information on that
in previous recordings. As I know, it's come up before,
um, and I. I just can't remember.
Like I'd have to look at the code a little
bit longer or maybe search value driver in the discord.
But it might be in one of the other discords I, I don't know, but we'll see.
They They're very, very similar, though.
Oh, nay,
I haven't seen nay
in a while.
Nay's asking for search for components When,
uh, do do keep in mind that when questions are difficult,
we are a small team and we're dealing with a lot of conflicting priorities.
You can see conflicting priorities here like I want to work, but I have a dog on my lap.
Luckily, those two things work together,
but you can see how if I was programming, this would get challenging.
So there we go.
Mr Feder here is my, um,
reminder to take a break as well,
like if they need to go out or they want a little cuddle or they wanna lick my face.
It's a reminder. Hey, maybe you should take a break.
But Yeah, we don't give out wins because of, uh, I just,
uh too many click conflicting priorities.
If we had, like, a development team the size of, like a larger company,
we would know much, much easier. Like what our resource capabilities were.
But, um,
we just don't
if we
if we gave you a time,
um, then it would be wrong,
and we don't want to do that because it adds pressure to us.
Like like, right now, for example, if I said to you, All right, um and
I'm not saying this Don't take this out quite out of context.
Um
uh,
rigid body collisions will be ready in March, right?
You will start putting that in your head and you'll share it with the the community.
Quite rightly, cos you know, it's interesting and exciting news.
And let's say now, between now and march,
uh, I don't know,
we lose half of our engineering force because one of
them comes down with covid or some other illness.
Right? Then we were at
with 50% engineering stuff.
As a
example.
If I was incapacitated and couldn't work for a bit,
Frooks would have to come off performance and go on to, um,
our business clients.
Otherwise, we would start lacking on some of our business timelines, et cetera.
So it's It's like a very fine balance. That means we we just we
literally just don't know Feder.
Do we need to bark at the door?
Do we need to?
Is that quite required?
Well, I get the harassment about it, right Cos like people expect,
um,
they expect people that are developing things that they pay for, you know?
So if you're a patron, even if you're not a patron, though, this is the same thing.
You expect us to know what's going on with our product
in some cases more than we actually do.
And that's not to say like we're we're being incompetent or anything.
It's just like we're in what's called survive mode right now. It sucks, right?
We just like work. We just work, and
I love doing it because the results are always good.
But
any number of things can completely upset our productivity for a week or day,
and and that's why we just can't give wins right now.
Ask us for wins when we double our engineering team, maybe, and we'll,
we'll start seeing what's going on there.
We do need to sort of work on our our planning, sort of, uh,
part of our brain and and make that better.
Um, that won't be in in cases of, like giving you dates,
but it might be in terms of when we do What Right.
Um, right now,
there's always a pause after we finish a project to
sort of see or what can we work on next?
Um, there's also sort of how many are we working on at once?
Um, how many more can we do?
Cos there's, like a capacity of the team,
and then there's a capacity of the individual.
So
Fuchs's capacity pretty much tapped out.
Prime's capacity pretty much tapped out.
Let's see an engineer in front of you
gins capacity tapped out.
CSIRO's tapped out
like everyone is is like working as as hard as they can on on any number of things.
I don't want you to think of, um, the priority list, like a sort of stack rank as well.
Cos that
that is bad.
There's actually the image from last week's office hours,
which is a more accurate representation of it
like there's stuff in a bucket
and the stuff in the bucket is stuff which I've like taken out of another list
and it's stuff I wanna do and it's in the bucket
and therefore I'm I'm talking about it because I'm I'm doing it,
you know it's in the bucket,
but but, like, it's not like because it's high priority or something like that.
It's like a mix of all the priority decisions, which you can find.
I'll get up all together.
They form the the bucket contents and then based on the bucket
contents I I pick something out of the bucket and do it,
Uh, veto
or exes and project management, uh, Project management.
The motto is under promise and over achieved.
Historically,
yes, but like it's also an unhealth. That's also an unhealthy thing.
Um,
you have better outcomes in software.
The
less you try and over engineer how long something takes.
Uh, so what happens a lot at, like larger software companies is
you'll have like, a meeting at the start of a project, and you'll say to the engineer,
How long is gonna take you to do this feature?
And the engineer does not know I. I can guarantee you 100% they do not know.
But because of the structure of corporations
and and the way that development happens at those, they're like, Well,
you have to give us, like, a guess, right?
And so the engineer gives the guess, But here's where the problem happens.
That engineer
is
motivated by a varying amount of degrees to give an estimate, which is untruthful,
completely untruthful.
But they're forced to give it anyway.
And then for the moment they give that estimate, whatever it is,
they are held to
it in some fashion.
And it might be wrong.
Let's say that they said, Oh, yeah, that'll take three weeks, right?
Um, because they're like, Oh, it's, you know, kind of hard.
And then they look into it and they realise, actually, this is gonna take, like,
three months.
They have to go back to their team and be like, I'm sorry.
This is gonna take three months,
and then the project managers in the room go like Ah,
but in in story point meeting blah, blah, blah and number three,
you said it was only gonna take three weeks, and it's like Yeah, but that was a guess.
And I told you it was a guess.
And then they start saying, Wow,
your performance is less than other engineers on the team.
It's ridiculous.
Uh, there's also the problem that if we start using story points,
uh, people disagree on what those mean story points are not time.
And, um,
anyone that says that they are time needs to go read the scrum methodology again,
uh, and stop pretending to do it cos you're harming the
the like You're harming the industry.
Um,
story points are intended to abstract complexity into a
numeric value that allows for interpretation and abstraction.
So instead of saying, hey,
this is gonna take three weeks because that's impossible to know.
You instead give a score, and some people do like 1 to 20. Some people do 1 to 10.
You can even get away with doing 1 to 5, right?
The idea of the story point number isn't to determine how long it's going to take.
The idea is to measure capacity and throughput
of the team without factoring in individual minutes.
So, uh, if you're doing 1 to 10 and you go,
Hey, fruits, I need this feature done. It's very important for our customers.
And Fru says,
Yeah, sorry. That's a 10 on the like 1 to 10 scale.
Then you, as a project manager, know like, Ah,
we don't have capacity for a 10 Right now
we've got three sixes on the go three threes and a bunch of twos.
We don't have the capacity for a 10,
and that's how it's meant to work.
Or how it actually works, though, is project managers say, Well,
story points are days.
How many days is it gonna take?
It's like, Oh,
it's gonna take two days And then on Day two they come down
with a stomach bug and then it's screwed up like it it.
Sorry, I didn't mean to rant. Let's go on with it.
I wouldn't say that like they're incompetent.
I would say that they're taught badly, Um,
and additionally,
um, they are incentivized to make up their own mind
in a way that makes them look good.
And that's one of the problems with managers. Um,
if the feedback that an engineering manager or a project manager
is getting from other teams is your projects are taking too long
that instead of like trying to figure out holistically what that problem is,
If story points are days, they'll just start looking at story points.
And they'll be like, Oh, this took, like,
double the amount of days that it was gonna take and I go to them.
Story points are not days.
The reason why that took longer was cos it was more complex.
Uh, so if if you guys have, like, alternative methodologies about coming up with,
uh, release dates
that can preserve the mental health of the team that W that you we're in,
please do let us know.
Um, but above all things when it comes to dates and ETA S and stuff like that,
number one priority is is preserving the mental health of our team.
And I don't currently see a way to
provide estimates for you.
That doesn't have some sort of like negative effect on the mental health of anyone
through a number of reasons that we've just discovered.
Let's move on to other questions.
Uh,
I'm gonna get through the questions, and if we still have time,
I'm gonna rant about Project Management again.
Bear with me,
Bear with me all right, Let's go ahead. Uh,
sorry. I got distracted by the flower. I just love that in my ry as well. I. I like that,
Uh, that's an example of an item which, like a lot of people might say,
is malicious or or problematic.
But I say it's just a creative use, right?
Maybe it needs, like, a disclaimer or something.
It's just a creative use of a bunch of components and shader. It's really good,
uh,
moving forward to Zen Ro's question beside the desktop IK updates have
been any other features that were developed as an obligation to a
client. Let's do some clarifying terminology. It was not an IK update.
IK has not been touched.
I mean,
it might have been tweaked a little bit
to be compatible with the new animation system,
but it hasn't been touched.
Uh, to the level that
IK update would would signify
we We did the, um, animation update.
Um, and the the distinction that's easy to to manipulate and think about.
There is, uh um,
most of the animation system is making targets that move in a sort of walking stance.
So if you imagine
if you imagine an early Boston Dynamics robot.
That's pretty much what it does, right? It's like
this rectangle represents the left foot
and the animation says, left foot up, forward, down, up, forward, Down, up,
forward Down.
And then, somewhere in the code,
we tell the IK move the left foot so that it's within this box at this point
and then follow it.
And so then the animation system's going like foot up.
Foot forward, foot down, foot up, foot forward, Foot down. And the IK is going.
I must put the foot in the box. I must put the foot in the box.
You combine both together and you get what looks like an IK animation. Feder
Feder,
please stop barking at the door.
I know that you don't understand English.
I might just pick him up and put him on my lap in a moment,
uh, moving forwards. Um
oh, actually, I didn't answer the question.
I just, like, ranted about the start of it.
Um, have you had any other features that are an obligation to business client? Yes.
Too many to look at, um, too many to comment on.
Um but I will be putting them up on uh, the universes page.
Or like a business page on, like the the website or the wiki in In In due course, Uh,
lots of them are actually beneficial to you as well.
So, uh, a good example is keyboard Look, that was entirely business driven.
Uh, that was high, Entirely funded by a business as well.
They paid for every hour I worked on it.
Um, they paid for every hour. I researched it every hour. I improved it.
And every hour I'm gonna improve it even more.
Cos I've got a tiny update I need to do to it.
Um, more on that one later.
Um, they also paid for joined by URL.
Um, so indirectly, that sort of fixed up go.resonate.com.
Um, that's gonna fix up Joined by UL once that gets merged.
Uh, no TBD no ETA on that one.
Um, and they also paid for the cursor update, which you'll see in Dev Lock as well.
They They they paid 100 percent like for that cursor update.
And most of, uh,
the business client that paid for cursor updates doesn't tend to use VR that much,
but they were OK with me Also charging the money to update the VR cursors.
So we got a full cursor overhaul for not free
for profit. Basically,
Um, yeah, there's taxes and stuff, but, you know, whatever.
I know that it's difficult.
And II I sometimes see people like I I've had a couple of comments
on some of my YouTube videos from Dev Los about business features or some
github issues where people are, like, perturbed by it.
And it's like we're doing this the best possible way
I'm doing them
fruit is working on all the stuff that you guys want.
Um, so we're trying to minimise that as much as possible.
Whenever we do a feature for the business,
we expand it beyond the scope of the simplistic business.
Ask into
how does it fit into the methodology of the fruits engine?
How does it, uh, work for users who maybe aren't this business client
and is there anything we can tack on
that is reasonable to tack on?
That would also benefit the business client,
and I'll use it so like we're doing it the best way possible.
And at the end of the day, like the money that they are paying
in some cases literally feeding that dog over there that's barking.
So, I, I don't complain about it.
Like I think someone commented on one of the keyboard look videos of, like,
just give them all controllers.
It's like, All right, OK, so you want us to like,
you want us to
buy, like I don't know, 20 K Xbox controllers and ship them out to, um,
white collar IT workers.
I It's not gonna work.
Uh, let's move on To
Nie's question on the subject of how driving components work,
how do dynamic variables work?
Uh, I'm only like glaze over this one. Fru
feel free to correct me.
I always feel bad because, like,
I know how things work approximately but not like detailed.
And that's because I haven't I haven't gone depth
into the code base in that particular area,
but I know enough about how they work to to
sort of tell you how they work approximately right.
So, um, dynamic variables are actually stored inside, Um, a like look up table.
And then most of the issue of dynamic variables
is trying to find the nearest look up table.
That's the dynamic variable space that you're in.
So, UM once it finds that look up table, it's quite efficient.
But if it struggles to find that table, it might be less efficient, a bit like, uh,
dynamic impulses and how they need to search for dynamic impulse receivers.
It's kind of the reverse problem, though,
UM, because dynamic variables usually go up the chain
and, uh, dynamic impulses usually go down the chain.
And there's different, like O of ends.
For those that you can work out,
like going up a tree should be a lower end number than going down the tree.
But it does depend on the scenario,
so you could just think of it like a library or a database that you put stuff into.
It's once, once the space has been established, it's very, very good.
I'm just reading through the code now.
I don't know what like they're
stored in, if that makes sense, values a slim list,
uh, freaks if you're still there.
Um,
there's a bunch of random collections in our in our
in our code base and I I wanna know the difference of all of them. So
not to add to your
paper.
I don't know what like the difference between like a slim list and a
bag is like because those are the two ones that I don't think are,
um
uh uh like standard.net. But there's, like, slim list,
uh, which is in elements.co.
And
it looks like it's a re implementation of the list.
Maybe be less chunky, which would imply by the the slim name.
And then there's bag.
Uh,
here it is. Bag editor.
I
sync bag. Go to implementation of I sync bag.
Slot bag.
Slot bag isn't used. Sig element bag
That has to be used, right?
Yeah, that's used.
OK, so bag looks like a data structure of collections which,
um is specifically designed to contain,
uh, sync members and word elements. So that makes sense.
Um,
there's complexities there with how they relate
to each other and how they interrupt.
That means that that does make sense to have unique behaviour.
So let
I'm not sure it looks like a more efficient, dynamic list or something like that.
I always get the problem of that as well.
With, um, collections in.net same thing with link as well.
I am forever hearing conflicting opinions about collections and link. Um I mean,
Linq, by the way, not LINK.
Um, Linq is like a a set of methods and a way of operating with data
that is very expressive.
Um, historically, Link has been much slower than, say, like a a regular for loop.
And so I continue to hear that all the way. Into.net nine.
But I don't know how much that is there.
And I also hear the same thing about collections.
Um, most of the time, if I'm writing brand new code,
I try to use innumerable cos then it means that the
collection implementation is agnostic and you can replace it quite easily.
Uh,
if any of those words didn't make sense, don't worry.
I was just speaking about programming for, like, five minutes. Let's move.
Uh,
let's take a look. Where are we at?
OK, so we got rid of dynamic variables. Let's go down to
Nay's question. If I may ask, can you talk about your business partners clients?
Uh, we're updating our case studies page on our website. Currently.
Actually, I was just missing a meeting because I was at the dentist.
I wasn't intentionally missing a meeting. I was.
I was down at the dentist having my face worked on,
um,
we were talking about a bit in the case studies on the topic
of like which clients we can talk about or can't talk about.
There is a little bit of an issue sometimes in the like.
It's not that I don't know or that I don't know that I can or I don't know that I can't.
It's just like I don't know, right?
So what I need to do is figure out with, um,
the people involved in each of those business relationships if
they're OK with the information being public at this particular time
and until I know that I can't share that. So the answer is, uh, and the answer in turn,
Can you talk about your business clients? Some of them, Who are they?
We can talk about Some of them,
Um, what do they use
reunite for? OK, that one I can do.
Um, so we've got a bunch of broadcasting,
uh, event stuff that's mostly with Wever,
which you can look up like all of their stuff's public.
So just go take a look at Weaver's website, et cetera.
Um, they do a lot of events broadcasting convention stuff, Um,
other projects. I don't know if they're public, so I'll I'll skip over those for now.
Um,
other clients are using it for meetings. So we've got, like, a a meeting thing.
Um, reminder covid happened. And during covid, a bunch of budgets got allocated to
solving remote work. And so we picked up some of that,
uh, training is another good example.
Uh, it's often difficult to make a training
scenario standardised.
Uh, so let's say there's a specific scenario. I don't know.
Let's do firefighting because I'm
sort of impromptu expert on it. Based on how much TV I watch about the subject,
let's say that there's a particular scenario that's really difficult to train.
I don't know some buildings on fire.
You would have to set up that building for every
single firefighter you want to put through that drill.
Or you could put a VR headset on them and hit like, reset on a button,
and it will reset the scenario and they can go through
that whole thing. Uh, training scenarios go from anything from.
We haven't actually had any fire. It's just like I'm familiar with it.
Quite a lot from from TV.
Um, but we have had, uh, industry, architecture, public transit.
Um,
I said architecture. Yeah, that'll do
that sort of stuff. Uh, is it confidential? I answered that one.
Do they
provide fat stacks of polymer notes?
Uh, it depends on the business.
Um, and it depends on the licence that they are established under
the the big one that,
uh, made the, uh, locomotion and animation update happen
and is is responsible. So for keyboard look joined by URL cursor overhaul.
All that stuff, uh, they pay us hourly. And, um, that means that
every hour I work to improve them
gets me a defined amount of money, which, of course,
I won't share into the company's kitty,
which keeps the company alive and keeps food on
everyone's table and allows fruits to continue focusing on delivering
everything that he wants to
to make resonate successful. So I think that's awesome.
If that speech hasn't sort of converted any of
you to being ok with this business client stuff,
uh, maybe direct message me privately,
Let let's talk about it some more and I'll I'll explain how business works.
Um,
Z
says if you can't name names. Can you name? How many?
Between five and 20
depending on the month
we
says wait because of univers
universities will be taking a go at Sunnydale.
No.
So universes are like a sort of marketing buzzword for, like, a bunch of switches.
I can flick right now,
And, uh, when we head towards Sunnyvale, uh, which was in Dev Lock quite a while ago,
that is, on the the tail end of Of of universes and and moving more towards sort of, uh
uh, AAA white label product. I don't like that term, though, but, um,
So unless you have, like, enterprise support, you, um you won't get a different go,
like go to reignite.com will still be Go to resonate.com with enterprise support.
We go as far as, like, completely replacing,
um, resonate wherever we can.
And that goes all the way down to the URL S as well. Um, so instead of res
rck, it'll be like
corpo
rec.
And yeah, I know that sounds a little bit dystopian,
but it's important for sort of separation of concerns and
ideas and disassociating the two products.
Um, I got the picture. I think, Yeah, here's a picture. Um, so
this is like the sort of, like complexity,
complexity and availability of customizations that exist in the engine for you.
Uh, so as a user, you get everything a user has as the group.
You get slightly more because you can kind of do
management of multiple people and how much space they have and things like that
universes. You get even more.
You start unlocking branding opportunities,
specific stuff that you need to tweak and stuff like that.
And then enterprise support is basically like you've got a big chequebook.
What do you need? Would you like a check, please?
So, like, it's it's cool. Uh, let's take a look. Um, next question,
Nicky says, Does this look up? Stuff happen? Every frame? No, um,
I it happens on on on on events. So it's all event based,
uh, again, this isn't exact. So please don't quote me,
but
let's say that you have, um Do I just open up a paint? I'm just gonna paint?
Where are we paint?
All right. So let's let's say you've already got one going.
So this is gonna be a dynamic variable space,
and then underneath it, we've got like a hierarchy of slots going all the way down.
And here's our value. And then here's our space. When this value is created,
it needs to go up this tree
until it finds a space that's compatible with its settings. And once it's found that
those two then,
um,
those two then just link cos it's bound right, they then just link together.
And that means that we can.
We can cut out the middle man or this like hierarchy,
and we can just operate over this link.
Now let's say you take the slot that this value is on and you re parent it.
So you take,
I don't know, maybe a couple of slots higher.
So let's say here you take that and instead you attach it somewhere else.
Um, so we'll just draw another space over here and link that up. Come on, it's paint.
What you expect
at this point you've broken this link right? This link no longer
occurs and it needs to be updated.
And the way that that gets signalled to be updated is there's
an event that comes through as part of that whole orchestration.
It is abstracted a little bit
that says, Hey, we've changed parents.
You're gonna need to then perform the operation again
and try and find a space to bind to,
and then it will search through and find it.
Uh, I hope that makes sense.
So that's the answer.
Uh,
electronic best would be to put them on the same slot as the space or a direct child.
Don, don't worry about it too much.
It's It's basically if if you're moving parents a lot, you might need to think about
it. That sounds like weird. That sounds like
for those, uh, with divorced parents. Apologies. It sounds like you know that.
Sort of like, Oh, whose house are you going to this weekend?
Your mother's or your fathers? What about Christmas?
Is Christmas Day gonna be at your mother's or your father's?
Don't switch parents a lot,
uh, for of a dwarfed family. You know how accurate that is.
And I'm sorry that you had to deal with that.
You'll be pleased to know that now that my, um,
father's side of the family live in the UK and my mother's side of the family.
Well, immediate mother's side of the family are in Spain
um if I head that way for any holiday period,
they both feel offended if I don't see either one of them.
So I always always have to go to both. So if I go across that ocean,
I have to go to the UK and I have to go to Spain.
Otherwise, one of them will grumble. It's like,
Yeah, you came across the ocean and you saw Mum, but you didn't seem dead.
It's just like, uh,
just
anyway,
Uh, yeah.
So if you if you're changing parents a lot like that, it will,
um it will require a lot more linking, um, between dynamic variable spaces.
Um, but if they're stationary,
uh, it doesn't It doesn't really matter. Right.
Um, if you're stationary, you can, like, work on on other concerns.
Hey, fella, you wanna come back on my lap?
Yeah,
OK. A
treat for you. The return of dog C I look at my mixer merch.
I've got mixer merch on limited edition. This is
I didn't realise
I made a big
uh Alright, So we've got a question from ozie. Big yawn, big yawn. What's up, Mr
Hey, can you ask a question to the camera. I got you. I'm sorry I got you.
Look at the camera.
You're not good. Who are you?
He's just looking at me and everyone.
Ozy asks.
I got a really silly question laying a concern
that I don't really know how to address.
Exactly.
I know some friends who are excited for hurt on dust,
but not excited for particles being used more and thus
hurting the performance in regards to GP U rendering.
I don't want to be one to dismiss their concern,
but how would you answer something like that?
Um,
this comes up a lot, and I really wish it didn't,
because there's nothing really that we can do about it,
so I can T I can tell you how optimised photon
dust is,
and I can tell you that it's gonna be much better than
the unity particle system because I know this for a fact.
Like I trust
I trust that fruits has done it while I've been reviewing the code
and it looks great, but fruits has done all the work that they can,
but what they can't do,
what they can influence but they can't do is ultimately control user behaviour.
so
well, Feta's off. I don't want camera on. It's weird. It's just like crotch cam. If
Feta's not on my lap and I don't want that, um
um, I didn't realise they'd go off.
What was I saying? Oh, yeah. So, like it is performing right?
But the thing that we can't change is how much people use it.
So if by
releasing an optimised well performance feature,
we suddenly have lots of people being interested in and using it
that, like it isn't our fault, like that should be a good thing.
So there is a res.
But there is a responsibility there as well,
and I feel like more of that responsibility should be
put on those users that are considering using it.
Right. So we've done everything in our power to make it performant
and responsible, Please.
Now users do everything in your power to make it responsible and perform it
because this problem has existed with the old particle system as well.
Like there's nothing stopping you from right now on the regular build,
going into a world and having,
um, particles that crash a session.
We actually had a couple of, um, people doing that back in the day,
I think what they were doing.
Sorry to tangent for just a moment, but they found a sparkler like a you know,
like a fireworks sparkler.
A item.
And they would just go into a world and duplicate it until the session crashed.
And that was because of the particle system.
And like the there's nothing we can do about that, right? The solution. There isn't
not. Do the particle system or
hyper focus on optimising the particle system.
So if you have 5000 sparklers in the world, it doesn't crash.
The the fix there is a a cultural one where it's like, Hey,
can we please try and maybe not over
use them
now, of course, uh, nookie brings up. You're quite right.
Nookie, and I was gonna touch on it.
But we could do more to support you in that endeavour.
Uh, so things that we can do there and features that do have github
issues are things like, um,
restrictions for a world performance restrictions or or qualities,
stuff like that.
Um,
you'll be familiar with VR chats where it can say, like, Hey,
this avatar's got five particle systems on it. Therefore, it's poor.
We wouldn't do it exactly like that. And that's a cloud idea.
Gonna refer you back to, um, the bucket
like I don't I don't like we don't know what that would look like.
We have to think about it. But we could have some system that does that.
We could also have, um,
performance profiling systems that enable you to sort of see Hey,
I am going overboard here.
I do have too many particles, but until we start looking at those features,
we don't know.
And so there is a level of responsibility that is on users there.
I guess that was what I was trying to explain.
Uh, OK, moving forwards to Nui's question, Uh,
keep that in mind and going back to it on slot changes.
Otherwise very optimised. Yeah, just like don't know variables.
They're beautiful.
Um, there are, like, caveats and and other things that you can do,
but those are highly specific and relate to, like, your exact setup.
Uh, so so do keep that in mind.
And again, like III,
I just can't like there's a number of things that I know that you shouldn't do.
But like I can't list them off the top of my head.
It's just If I was about to do them, I'd be like, No,
it's that when someone asks me where a component is, um, you know, it's like,
name around the component.
Where is it? I don't know.
But if we remove the like
linguistic element from it, I can find it
like it's like an intuition thing rather than remembering.
Oh, it's in transform drivers. What I remember is, like
the intuition how I felt when I opened up the attached component thing.
And then something just clicks and it goes in.
It'd be like, I don't know, tying your shoelaces or,
um,
your phone number stuff like that.
Eventually you stop remembering it as, like, a piece of data,
and you start sort of intuiting it.
Muscle memory. Yeah, that's a good time for it.
Uh, I think we're out of questions.
Um, I was gonna rant more about project management,
but I've forgotten what I was gonna rant about.
So I'm gonna scroll up and take a look. Oh, yeah, I remembered,
uh, So the other problem that happens with project management,
particularly when scrum is done bad is, uh,
because it starts to become a forcing function in a lot of conversations,
it also becomes a
sort of weird political thing.
So what happens there might be and and this can happen depending on the story.
Points are
days or or numbers or whatever. It doesn't really matter.
But you can start looking and comparing the performance across teams,
and then that starts becoming very political.
There are points at Mixer where it felt like
I was running a presidential race for my features,
and it was very uncomfortable,
and I'm only learning,
really sort of like years after that happened that that wasn't OK,
uh, and that that wasn't a good work environment.
Uh, cos it's ridiculous. It's things like,
Let's say one team is struggling to maintain velocity
in their area of focus for a project.
But all other teams are being OK with the area of velocity now
in isolation. That's fine.
And as a group,
that can be fine as well if you talk about it healthily and respectfully.
But what could happen is,
uh,
a higher up manager pulls a performance report and sees
Team A are doing 50 story points a sprint team.
B are doing 49
story points, Uh, a sprint. That's about the same.
But Team C they're only doing 12 story points per per sprint.
We should go badger them. We should go harass them in some way to make it them,
you know, work faster, and that's really unhealthy.
Sometimes the other thing happens, though,
which is someone inside that under performing team,
particularly if it's the manager of that team,
Um, starts trying to do, like,
funny stuff to make their performance numbers look better
so they might
block other features. Let's say Team A needs to rely on dependency. B
Um,
that team C owns Team B will just refuse
to answer the emails from Team A about that dependency
under the guise of being busy.
But
some part of their brain.
And I'm not talking like, you know,
maybe they're not even really consciously evaluating it.
Maybe they're too busy or they're too stressed, et cetera. By their actual work,
they are accidentally blocking
the productivity of that original team and
lowering the productivity of the entire team
just because they don't want to look bad on a piece of paper about story points,
and it's just like it's just mind blowing.
It happened all the time, particularly towards the end, because,
like for the entirety time of Mixer, I was
a knowledgeable person about the entire stack,
like I could have worked on any team and any code base on that team.
Uh, and so sometimes I knew how to fix something,
and I would I would find a bug that I was passionate about, and I would offer to fix it
and occasionally, like the manager team would be like, Nah, you can't fix that one.
You're gonna have to sit with my engineer and explain it to them.
And again, that was sort of politics, right? It's like
you've got prime who isn't on this team
coming into this team's environment to fix a bug
that makes that team look quote bad. If you've got the wrong work environment set up
going back to actual relevant topics for a moment, Um uh,
Shifty's got a quote about the particle system.
Um,
from, um,
I think it's belief it's from the resonance or or
some other thing for the benefit of the recording.
I'm gonna read it anyway.
Uh,
looks like this is fruits. Yeah, this is fruits.
Um, what's also big about the system is that it's multi threaded.
Uh, but also asynchronous.
What that means is that there are comp when there are competitions that are heavy.
Uh, like there's a lot of particles of heavy computations.
And when there's complex colliders, too.
Uh, it doesn't lock the frame rate to the rate of the simulation,
but the game can keep rendering faster than the particle system does.
So there there's more there, but that's that's the like the gist of it.
Um,
we we we worked on, we're working on performance for that one from the start.
Uh, so that's that's really cool to see.
But do you remember the the social and cultural obligations as well, right.
If you put 5000 sparklers in the world, it's gonna crash
with that and my rant about project management,
Um, over a few more. I'm interested in discussing that.
Do let me know, by the way, cos it I find it fascinating that,
like sometimes the reason why large companies aren't productive is
because people are experiencing political troubles inside their teams.
It's like it's mind blowing to me.
But there we go.
Uh, I think I'm gonna leave off here,
and, uh, I will get back to you next week.
I I'm doing a new thing, though, which is where I stopped the recording.
I'm gonna instantly do the first part of processing it.
And that way I won't forget to process it
like I'll do it processing whilst we're here.
And you guys can nag me
like you guys can nag me.
Uh, where am I?
All right. So I'm gonna go ahead and stop recording and then get the upload going.