OfficeHours:ProbablePrime:2023-02-14

From Neos Wiki
Jump to navigation Jump to search

<< Previous Next >>

Audio

Description

In this Office Hours, Probable Prime talks about:

No description available, sorry!

Transcription

(Please note that the transcriptions will not be 100% accurate)


Welcome to Office Hours, the weekly AMA where I ask your questions.

If you have any questions, please drop them in the Office Hours text chat.

There's a couple of channels above this one.

Office Hours, look for the thread, drop your questions in.

We'll answer them in the order that they appear.

I see a few people in the audience, so do get those questions coming in.

I'm going to go ahead and ping people again, just so they know that people are, you know,

where we're starting.

And we'll see what comes up.

Alright, looking at the questions list, we have one question from Lex, who says,

"Any in-progress MMC submissions you've enjoyed looking at?"

The MMC Analyzer, which appears to now be a yearly, you know, appears every single competition

project is always fascinating to see.

They publish it as quick as they can, and it sort of details sort of the entries that

have been submitted and lets you see them.

Now those are always good to see, and this year they're kind of themed around the MMC

poster, which is also good to see.

There are quite a lot of entries which have been submitted which are empty worlds, and

I love that.

Remember that you can submit an entry before it's finished, and it massively, massively

reduces your stress on the day.

You can edit an entry after it is submitted, you just need to save the world again.

You don't need to resubmit, you just save the world again.

So I highly recommend publishing your world as soon as possible.

If you leave publishing your world to the last minute, you may have issues that you

cannot resolve, and therefore you may be disqualified.

So publish early, and then you're fine.

Additionally in the last couple of days, please don't be rushing.

Like the last couple of days, just polish, right?

Think about audio, think about desktop users, think about testing and things like that.

There are no further questions currently, so we're going to sit here in absolute silence

till there are further questions.

Another question from Lexi which says "Do you think there will be an update to NIRS

to change the default world filter facet for MMC23 like there was last year for MMC2022?"

I don't know, I haven't spoken to Fruks about it, the MMC team certainly do not require

it, it's just a nice to have thing that sometimes occurs.

Amber asks "Will there be a revamp rework of the wiki, the NIRS wiki plugin generates

all of a default type of float and might be confusing, any possibility for interactive

cards etc."

I have huge plans for documentation and the wiki, which are all on hold, whilst I have

zero control over the wiki.

So yeah.

I am continually backing up the contents of the wiki as my main promise when it comes

to the wiki and internal documentation, and any documentation that people write is I will

preserve it to the best of my ability.

So even if I have to stay up till 4am copying and pasting your text from the odd wiki into

whatever new system might exist in the future, I will.

Your contributions are not lost.

Neutron Star asks "How are you?

Has life been good?

I am answering questions about NIRS, not myself."

Let's keep it to NIRS.

As we have no questions for the moment though, I just drank a ginormous amount of coffee.

I've got to do a couple of errands after the office hours segment here, but then I hope

to not leave the house for the rest of the evening which will be fantastic.

Who wants to go outside?

Outside's weird.

There's stuff out there.

Things.

People.

Hey, there are no other questions Lex, there's not much else to talk about.

Question from Amber who says "Is the renderer Geens was working on made any progress?

I believe you can take a look at the voidanchor discord or voidanchor patreon and voidanchor

twitter for that.

I will get links to those shortly."

Okay, I found their github.

Voidanchor is the group which are making the renderer.

It's a complicated story.

Sure they had a twitter, let me find it.

You know when you're like typing in the search of twitter and it's just like I'm gonna show

you exactly what you want but because you like stopped typing or continued typing I'm

gonna remove that from the search list?

It's like it's very confusing.

I typed in the word voi and it came up with that tweet, that twitter account I just linked

and then I typed D and it disappeared from the search results and I'm like what?

I literally continued the name of the account and it's like no I'll remove that from the

search results.

What the hell twitter?

Anyway Amber asks "Will Neos ever go open?

Copy left in codebase licensing?"

There is an issue on the Neos public issue list about open sourcing which you can go

ahead and read.

Open source.

There it is.

Shadow says "You're probably hearing this for the thousandth time and for that I'm sorry

but there's only sort of plan when we get updates again.

Do you have any idea whether it will be a gradual start or one massive update?

Please read the announcements channel for any more updates on that situation."

Blue says "With the dispute going on have the Neos team been allowed to work on the

code and just not send it to prod or are you guys not allowed to search the code?"

I am still touching the code, Frix is still touching the code, we're just not sending

it to prod and yeah.

Please read the announcements channel for more information.

For those who are about ready to type but there are no updates in announcements, yeah

like the most recent update is in announcements.

That's all I got to tell.

For those who are then about to tell are from that, well that's frustrating.

Yeah I know.

Quit my job for this stuff, it's really frustrating.

Amber says "Any new components?"

None which I can talk about.

The remote connection point driver was added ages ago, I think you can search it in the

update logs to find it.

It was back when Frix was working on the circuit simulator stuff which is an educational product

to teach children circuit boards and stuff like that using circuit board stuff.

Sorry, it's been a while since that project existed.

We had hoped eventually we would be able to release that to the whole like crew, like

to everyone on Neos.

It would allow you to like, using Neos interaction that you're aware of, drag and drop capacitors

onto a circuit board and then have electricity go through them.

Of course simulate it, but like it would almost be like an additional language available to

you built using the languages available in Neos so it was quite cool.

I mentioned for medical, yeah for, so for the medical project that's actually a third

party thing.

I work for myself slash a sort of company that we haven't incorporated yet doing medical

research with another user, but then with SHFR here on the Neos Discord we do medical

projects.

I need updates to the tube wire mesh to make it less twisty and seeing as I can read the

source code, there is a humongous block of code in the tube wire mesh that's combated

out that says this reduces twisting but I don't know how to fix it or something to that

effect and that was made by Shrix.

So at some point when I am able to I'm going to be looking at that code and trying to reduce

the twist there.

It's a complicated matter but it's nothing to do with actual Neos team stuff.

Jackal says if there were one thing in the world of building that you would recommend

a newbie go after first, what is it?

Keep your ideas small.

I've heard a lot of people who struggle to learn logics, I've said this a few times,

I apologize if you've heard this rant before, who want to learn logics and their mechanism

for learning logics is different than their mechanism for learning sort of everything

else that they have in their life, which is very common and understandable.

So their motivation for learning logics is probably like let's build a gun or maybe a

game map or something really, really complicated like that.

And so when they ask for help in learning logics, they want to jump ahead and they want

to build a gun or they want to build something really, really complicated.

It's important to remember to learn the basics before you learn the advanced stuff.

So if you're struggling to learn logics, try adding two numbers together.

And if you don't know how to do that, learn how to do that in logics.

And then the moment that you can spawn those nodes which add two numbers together, you

are not allowed to say that you don't know logics anymore because you know how to add

two numbers together.

You can say that you're not proficient or that you're a beginner in logics, but you

actually know how to spawn those nodes.

That's another part of learning is make sure that you are giving yourself credit where

it's due.

Yeah, okay, you don't know everything.

You're not like a prime or a ukulele of the world who can do basically anything with a

moment's notice, but you know how to add two numbers together.

What do you want to do next?

Let's try subtracting two numbers.

And then you've learned two nodes, right?

And then just keep building it from there.

Good point of view on learning logics is to avoid any node which has an impulse, which

is the white data type.

Any impulse receiving or using node is a little bit more complicated.

So try to stick to nodes that don't have impulses.

Just start just whilst you're learning and you'll have a better time learning because

the impulse nodes are more complicated.

And then introduce a few impulse nodes later once you've learned those.

Outside the world of logics, also consider learning just basic planning and sort of management

of projects.

We have this every single year with the MMC, and it's not reared its head yet, but I guarantee

it will on what I call submission week, which is the week leading up to the first of March.

People have no idea how to publish, they have no idea how to save a world, they have no

idea how to edit the tags.

It's like, go learn that right now.

Contrary to popular opinion, I don't care, and the team don't care if you publish junk.

So if you want to make a red grassy world and call it, sorry to pick on you but you

are asking the question, jackal girls, red grass world, and you want to publish that

as a world, go for it.

It's great, thank you for making a world and publishing it to Neos.

And in doing that, you'll learn how to publish and save worlds and edit tags and things like

that before the submission deadline.

And that leads to, again, just generic learning.

On the topic of planning, the reason why that one's coming up a lot is, again, you know

how many days there are till the end of the month, till the end of the MMC, yet we still

have people that get to the end of it and their entry is not finished, or their entry

is rushed.

Those things can sort of do that.

There's an article on learning things faster.

I haven't validated every single part of this article, but I like the abbreviation, which

keeps getting more letters.

It used to be faster, now it's faster.

So take a look at that one.

So I'll summarize, but first of all, it's forget.

So forget comes up a lot when it comes to logics, because people, they try to compare

it to other programming languages.

They're like, but I know Python, and it's like, okay, well, let's assume you didn't

know Python.

Would it make it easier to learn logics if you didn't think about Python all the time?

And in some cases, yes, because it means that you wouldn't be comparing it back.

So if we get people all the time that do this, they come in, and they're like, where are

variables, where are ifs, where are functions, where are classes in logics?

And those things, while they do exist, they exist in different ways.

So if you forget what you know about the existing programming languages, but take the technical

intuition, the technical logic, and apply that to logics, you might have a better time

learning it.

Active is a very important one as well.

I've seen a lot of people who are unfortunately just lazy when it comes to learning.

If you remember learning your ABCs, I mean, I can't speak for everyone, of course, but

I had to write the word "a" on a piece of paper like 400 times.

Like, it was an exercise sheet at school, and it just had like "a" and a line, and

I had to just continually write "a," and I continually wrote "a" to learn how

to write.

And then I continually wrote "b," and it was boring.

It was boring as hell.

But I did that.

I don't remember why.

I was too young to remember it, but I do remember writing it.

And now I can write the letter "a," and I don't even think about it.

You need to be active in it.

If you look at it, you're like, "Yeah, okay, learning is... you need active learning."

State, that's a good one as well.

I see a lot of people who try and learn in occupied worlds or try and learn whilst they're

watching videos or try and learn whilst they're playing games.

You need to focus on it a little bit.

Teach is very good.

You can see that through my stuff.

If you learn something, great.

If you then teach someone else what you've learned, you'll remember it better.

It sort of activates different areas of your brain and makes the information easier.

And we'll stop there, because that's the original abbreviation, which is FAST.

There are two more letters in the new one.

Amber asks, "Will there be updates for critical issues on the client side, such as memory

leaker for WebM videos of a negative changing scale?"

That's still a problem right now.

"We will update if there are major breaking issues."

That one comes into the sort of category of "Dr. Doctor, it hurts when I do this, so don't

do this."

The recent update -- well, I say recent, it's last year -- that we did was actually sort

of like a remote code execution thing with Blender.

So we patched that one, because that was like a high security issue.

Whereas this one is like, maybe don't spawn WebM videos of negative changing scale.

Critical is like an overused word when it comes to issues, when it comes to security,

when it comes to urgency.

If everything is critical, nothing is critical.

So we evaluate stuff when we see it, and if we do evaluate it as critical, we will usually

do a patch for it.

That is evaluated on a case-by-case basis.

"Which reminds me, if you have a security issue like the Blender one, which we patched,

see the changelog for information, please submit a security report following our security

reporting policy."

Lex says, "When publishing will already get set to public and submit it to the record

to the G-NEO's group, would there be any way to even submit publish to another group?"

There is actually a way to do that, but I don't know what it does.

If you look at the world publishing platform, that's the thing you put the orb in and

then it flies up, you can inspect that and then find the component which is responsible

for publishing.

I don't know what it's called.

On there, there's a field which just says G-NEO's, and you can change that to whatever

you want.

But I don't know what the effect of that is.

It's likely that that has no effect.

There is like a more complicated sort of cataloging system for records, which are what worlds

and items are, that may enable some functionality of that in the future, but is not enabling

it right now.

So I don't know what it does when you do that, but hey, maybe in the future.

Brix talks a lot about the sort of system of subreddits occasionally, likening that

to how that could be applied to, you know, maybe there are different lists for different

things and you can publish it to, I don't know, let's just say there's a furry world

list and then a regular world list and stuff like that.

Skin on my fingers is flaking.

I'm going to sort of touch something weird.

Sometimes this happens when you do too much laundry or dishes.

Laundry detergent is horrible, by the way.

Use less of it.

Look it up.

You don't need to use as much as it says that you need to use.

Anyway.

Shadow says, is there documentation on previous exploits or do you prefer to keep that secret

for safety reasons?

NeoRc via Blender sounds interesting.

I believe it's logged how it was done in the updates.

Maybe we try and sort of talk about it a little bit in the updates.

I don't think we'd ever be publishing reports on it.

I hope that we would do in the future.

Let me see.

Yeah, you can see it.

It's 2022, 128, 1335, emergency security fix, added URL input sanitation to end YouTube

DL to prevent remote code execution with malicious video URLs.

That was the issue there.

Something to do with Blender.

I think it was the when you open Blender on the way to end YouTube, there was another

one with Blender.

I might be confusing two of them because we had basically the same thing, one on end YouTube

and one on Blender.

The Blender one was there's a command line flag you can open Blender with where it will

run a Python script.

And so there would be a way to put a Python script somewhere in a Blender file and then

run it via importing a file in Neos or something.

So we just disabled the dash whatever it is in the Blender XE.

There's an RC you can load with a postfix harmony patch of the world spawner.

That sounds like a model plugin issue which doesn't have the same issues.

There is not a list of open security issues for the reason that like they're security

issues.

So if you think it's serious, then please open a security report and we'll get back

to you.

Check the security reporting policy for more information on what we consider a security

thing as well.

We had a very nice report a while back that was unfortunately invalid because they had

not read the security reporting policy.

Morph says this is a UX question but I'm new to it and still looking through the videos

you've made but is there a way to make a background of a mask 100% invisible while not using any

text images on it?

I can only seem to get it 99% before any text child disappears.

Not quite sure what you're talking about there because when you add a mask, it by default

will turn invisible until you check that like show mask graphic checkbox and then it'll

like appear visible again.

So I'm not quite sure.

Either you're using a mask incorrectly or maybe you're misunderstanding what a mask

does.

I'm not sure.

Yeah, anyone that should be able to help you out.

Amber says any plans for ermai compliance?

I don't know what ermai is.

Is that open metaverse institute?

There's a group of people that call themselves the metaverse standards group or something

and they have documents, github issues, meetings, all sorts of stuff but I've yet to understand

what they're producing and how they're producing it.

It seems like there's a lot of conversation and information but not many actual specifications.

I went through that entire website and I'm like can I find like an RFC or something and

it was very confusing.

I don't mean to insult them.

I'm sure they're trying to get stuff together.

It felt like there was a lot of bureaucracy going on there.

Ozi has a question.

Speaking of UX, a friend was using a UX text component and disabling the slot for visual

effect.

Even disabling the text component itself caused this too and disabling there is sometimes

a frame or two of the entire alphabet of the font being displayed before fully going away.

Do you know what happened?

What's the cause of this?

We couldn't nail it down.

There is another one like identical to that which is when you'd like to disable an image

slot sometimes you'll get like a flash of either the color of the image or a flash of

pink.

And I think that's got an issue so it might be the same thing.

Yes I believe it's this issue here.

So it might be the same thing as that one.

UX sprite providers flash on image sprite changes.

And there's another one, I think there's another one for like this one too.

It all appears to be the same thing, which is like when you disable or enable stuff,

weird stuff happen.

Alright, let's head down to questions.

Tiki says "Is there a goob way to reduce emissive on a Fresno material?"

I haven't seen much use of the Fresno Imperial.

Usually I don't have emissive on it, so unfortunately I don't know.

Someone else may know the answer to that one.

Amber says "What is the experimental write to file node?

I can't find an edox on it."

That's because it's experimental, so not many people use it.

It's also difficult to find because it's hidden behind the show experimental checkbox in the

logics tip.

That one is best found in the update logs.

I get that that's a really bad answer to that question, but we live in a society.

The write to file node will write to a file, but only if your session is set to an unsafe

mode.

The unsafe mode is a checkbox when starting a session.

When you set unsafe mode to true, you will be restricted to LAN-only sessions.

That node was added for scientific research purposes, and is not designed to be used outside

of unsafe mode sessions outside of not unsafe mode sessions.

It's not designed to be used and cannot be used outside of sessions that do not have

unsafe mode set.

There we go, that's a mouthful.

This is a big one.

Threw things across the room accidentally.

Let me read it.

Raid says "Might not be able to explain this best, but there are cases when using dynamic

variables for global values is better for performance.

An example comes to mind that we'll be using user from username many times across multiple

different systems in an avatar, but to be able to replace that with a dynamic variable

of active user, your user is referred to a single global check for your user is not insignificant

enough to be worth it outside of the workflow."

If you are using user from username on an avatar, you're doing it wrong.

You should use get active user or get active user self.

But as an example, it's good.

I understand what you're saying.

This comes up a lot in various things I'm doing and I've kind of found a way to do it.

Which is I always make a dynamic variable for it.

So if like for example, I've got a bunch of panels, it's hard, like I've got a ton of panels.

Like I've got like a graphing panel, like an avatar, impairment panel, a file writing

panel, eye movement simulator panel, all sorts of medical stuff.

And on all of those cases, I have a dynamic variable on that panel, which is just like

panel stroke user.

And it usually means like either the user we're targeting, the user who's in charge

of updating the panel in the cases of like fire on true and stuff like that.

I will always use that dynamic variable.

There are more reasons to do that beyond performance.

It's really good for sort of like updates and stuff like that.

For example, if you suddenly realize, hey, the user that should be updating the system

isn't the one I thought it would be, you don't have to then go unpack a bunch of logics and

pull it apart and find something.

You have a single place where you manage the value of that user dynamic variable and then

you use that throughout there.

And it sets up a sort of like, for those who know traditional programming, I apologize

because I know it's not this, but it sets up separation of concerns such that the logic

over here on the right doesn't care about the user at all.

It just listens to the dynamic variable and the logics on the left is the only thing that

deals with the user and it just saves it to a single dynamic variable and you don't have

to use for it.

So I do recommend that approach.

When it comes to performance, it depends what nodes you use and it's really hard to measure

that on like a generic area.

User from username does have a single like update thing that occurs when the inputted

username values change.

The user from username node will have to run its code to then find that user.

Additionally, when any user leaves or joins a world, it might have to run again to double

check that the user from username that it returned a user for didn't disappear.

So there is a cost to that.

But I wouldn't be able to tell you like five, seven, like two.

I don't know.

I don't know like how, what percentage of that or what like part of that would be measurable.

So purely from a functional point of view, I do recommend using a global user thing.

If it is something that's on avatar or a tool, though, and you know it's always going to

be, and I said you know it's always going to be, you have to think about the design

of your system.

If you know that it's always going to be the user that is holding, equipping, parenting

to, wearing, using active user would be absolutely fine as well.

Get active user self as a node is quite performance.

So don't worry about using that.

I myself would always use the dynamic variable because there's been like hundreds of times

where I'm like, yeah, it's always the person that's wearing the avatar until it suddenly

isn't.

Like as an example, I had a scientificy thing where there was a experiment patient, I guess

like patient would be a better word.

I don't know.

And so they were wearing an avatar and I was using get active user.

But the experimenter or the researcher, which is the person conducting the experiment was

the person who actually needed to like get values and do stuff with that thing that they

were wearing or using or holding.

And so it made more sense for it to be the experimenter user and not the user that was

wearing the avatar.

And so I had to swap that all over to dynamic variables and now I just do it as a variable.

It's much easier.

Lex has again a good idea there, which is using it for slots.

I do that a lot.

I've actually started writing a lot of logic, which is like self-contained because of that

process.

So it will do a bunch of operations and then it will just set the result of those operations

to either a value field, which is on the slot which I pack the logics into, or on a dynamic

variable that it assumes is there and if it's not there, it will create it.

And that way I can basically sort of, as much as you sort of reparent a cube or something,

you can reparent bits of logics around and it just works.

There is a horrific piece of logic in the virtual surgery world that we have that is

doing exactly that for detecting which bone segment this particular object is nearest

to, which won't make any sense unless you know what I'm doing.

If you don't know what I'm talking about when I talk about virtual surgery, then you can

head over to my channel and watch a three minute presentation about virtual surgical

planning inside of Neos, which I'll go get for you.

Right.

Amber asks, "Does Neos policy say not to harass users in or out of game, which is to specify

in game?"

Please always report stuff that you have concerns with, but we are less able to, and in some

cases, not able to police out of game contact or content.

Example here might be, let's say a Neos user that you know has a Neos account is harassing

you on Roblox or VRChat.

Contact Roblox or VRChat support.

We can't help you.

Do always make a ticket though, just in case.

We'd love to take a look at the situation and can advise you officially there.

There's just less we can do if it's off platform.

And then the final question, because we are actually eight minutes over time from Lex,

is "What's the least amount of users you've seen online in Neos?"

Seeing as I was around back in 2019, where like next to no one played it, I want to say

less than 20, back in those days, I remember the first time I played it, I was looking

around in Business Lawyers Avatar Tool World, and Nexolun came in, and they looked at, like

there was a table in that world, some sort of like, you know, like storage table thing,

and he looked at it, and he just, he made it bigger with the developer tip, and I'm

like, "What?"

And then I just kept playing the game, and here I am.

You can also look back at the videos on Frick's YouTube channel, scroll all the way to the

bottom, and you'll see times where there are two users on Neos, and to illustrate that

there are more than two users for presentational matters, they would spawn headsets in the

world, and they would put Wigglers on them.

The whole reason the Wiggler component exists, and also the Wiggler tip exists, is to pretend

that there are additional users in a world.

And with that, we will leave off there.

If you have any additional questions, please go ahead and drop them in the questions and

help channel, direct message me, or, I don't know, send a carrier pigeon my way, it'll

know where to go, and I will speak to you again next week.