UmbralRaptor changed the topic of #kspacademia to: https://gist.github.com/pdn4kd/164b9b85435d87afbec0c3a7e69d3e6d | Dogs are cats. Spiders are cat interferometers. | Космизм сегодня! | Document well, for tomorrow you may get mauled by a ネコバス. | <UmbralRaptor> egg|nomz|egg: generally if your eyes are dewing over, that's not the weather. | <ferram4> I shall beat my problems to death with an engineer. | We can haz pdf
<egg|z|egg>
!wpn UmbralRaptop
* galois
gives UmbralRaptop a hypothetical compact minion
<galois>
title: whitequark on Twitter: "TIL chocolate production is basically metallurgy(images from https://t.co/7L4Dz1HFr3)… "
<Iskierka>
hii though unless you changed it I do have your discord
<Iskierka>
also different personal pronouns took a moment to work out
<_whitenotifier-31f>
[Principia] eggrobin opened pull request #2372: Much ado about nothing’s sign bit - https://git.io/Jer0r
<egg|zzz|egg>
also cc mofh (materials science, chocolate, casting chocolate bands)
<eigenellies>
yeah but also you and we never seem to actually talk on discord, hah. mostly due to our apprehension with appearing out of nowhere in people's DMs.
<eigenellies>
also, discord is bad for keeping up with friends because it never notifies us when we have a message. thank's google cloud push or whatever
<eigenellies>
AND re: pronoun, yes, about a year ago we discovered that we are composed of five identities instead of one. which made a lot of things make Rather a lot more sense...
<egg|zzz|egg>
!wpn eigenellies
* galois
gives eigenellies an experimental octohedron
egg|zzz|egg has quit [Remote host closed the connection]
e_14159_ has joined #kspacademia
egg|zzz|egg has joined #kspacademia
e_14159 has quit [Ping timeout: 378 seconds]
<egg|zzz|egg>
!wpn
* galois
gives egg|zzz|egg a cadmium variable quark with a star attachment
<egg|zzz|egg>
UmbralRaptop: are variable stars made of variable quarks
<UmbralRaptop>
egg|zzz|egg: if a pulsar is a kind of variable star?
* UmbralRaptop
ponders cataclysmic variables
* egg|zzz|egg
meows at UmbralRaptop
* UmbralRaptop
falls over coughing, and tries not to die
<UmbralRaptop>
getting sick during a business trip is… annoying
egg|z|egg has quit [Read error: Connection reset by peer]
<galois>
title: NEID on Twitter: "NEID got its first stellar (non solar) spectra last night on the star 51 Pegasi, around which now Nobel Laureate @DidierQueloz and Michel Mayor found an exoplanet in 1992 - the first exoplanet around a Sun like star. First spectra below showing the Ca IR triplet and Na doublet.… https://t.co/J2IU2m9y5y"
<galois>
title: Natee ~A drift of dust~ on Twitter: "'Tea, Rex?' I decided, probably unwisely, to ink this one in. It's going to a new home shortly. I may, just as unwisely, do a hopefully better version one day.… https://t.co/heHxE5Yxac"
egg|zzz|egg has quit [Remote host closed the connection]
<SilverFox>
have I ever expressed how much I love ternaries here?
<SilverFox>
I know that it's just fancy syntactic sugar for an ifelse statement, but goddamn
<Iskierka>
ternaries must be used carefully as they can be hard to read with other operators interspersed
<SilverFox>
git gud
<Iskierka>
now what's good is null accumulation
<SilverFox>
oh yeah how null transfers and infects null?
<SilverFox>
so then we all succumb to null void
<Iskierka>
Not with null accumulating operators! ex: Services.Input?.DeviceIsReady() ?? false will return false even if the input service is not initialised to properly report the ready operation
<SilverFox>
how do you differentiate between truly false and just a false return, unless I'm not understanding this properly
<Iskierka>
If you need to distinguish, then you need tiered ifs anyway. Its use is for when you need to execute something only when the whole stack leading to it is ready, without having to test each part for null individually
<SilverFox>
interesting
<SilverFox>
oh yeah
<SilverFox>
ternaries on nullables, that's the good stuff
<Iskierka>
there have been many cases of this in my recent code thanks to unity flow and not guaranteeing everything is loaded at the moment you need it
<SilverFox>
unity can suck like that, if you're talking about the engine unity
<SilverFox>
having to map out when things come into action and under what function can be a pain sometimes
<Iskierka>
I am, and being able to go if (A.B.GetComponent<>()?.C()?.D ?? false) is so much nicer than null testing each of those
<Iskierka>
probably more efficient too
<whitequark>
ternaries are actually not quite like sugar for if/else
<SilverFox>
yeah I know
<whitequark>
ternaries and short-circuiting boolean operations are more like their own category because they conditionally carry around a value without ever giving it a name
<SilverFox>
you can't just run a void function
<SilverFox>
there has to be a return value
<whitequark>
i mean, this is just a compiler writer's view, from the programmer's view they're basically that
<SilverFox>
you can code entirely with ternaries though
<SilverFox>
in C# anyways
<SilverFox>
I figured out how to use them to call anonymous functions
<SilverFox>
its dirty but so beautiful
<whitequark>
yeah, they're more powerful than if/else
<SilverFox>
they can definitely compact your code yeah
<SilverFox>
which is why I loved them for KWS code
<SilverFox>
because there was so much just conditional math
<SilverFox>
and having an if statement with a return value in either case was just life-saving
<SilverFox>
probably shrunk the mega-code by like, 50%
<SilverFox>
then 40% formatted whitespace and 10% actual code
<SilverFox>
I kind of miss working on KWS, but goddamn was it so draining, programming and debugging really tests you as a person for trying to deal with unknown mundane shit
<SilverFox>
you code in int a = 1+1; and when debugging you somehow get 'a' as -12.4
<SilverFox>
because that's cool right, not like I wanted to actually be productive in my time
<whitequark>
kws?
<SilverFox>
kerbal weather system
<SilverFox>
sorry im used to using the acronym
<whitequark>
ohh
<SilverFox>
it was an attempt, semi-successful, at proving that you can estimate weather using formulas and speculative stuff
<SilverFox>
it performed REALLY well for what it was
<SilverFox>
but there was always something that was just a bit off and not quite right
<SilverFox>
and I wasn't a meteorologist so I was treading unknown waters, which didnt help things
<SilverFox>
and of course there's ever-looming reality which is that you can't simulate global weather easily, there's a reason why we have supercomputers for it
<Iskierka>
cheap solution: guesstimate what RL locations might have similar weather and download real METAR data to roll with that
<SilverFox>
what about Jool?
<SilverFox>
the whole point was to be basic fundamental laws and go from there
<Iskierka>
"You get a hurricane, and you get a hurricane! Everyone gets a hurricane!"
<SilverFox>
so that any planet could have at least plausible weather to it
<SilverFox>
*with atmosphere
<SilverFox>
I only used proper physics constants that I know wouldn't change
<SilverFox>
which added to the total amount of calculations, but gave more flexibility
<SilverFox>
so you could adapt for things like realism overhaul or just manually editing kerbins orbit where its now 5% closer to the sun
<Iskierka>
Probably would've been a better (real) option to ignore this "ground truth" and instead just go with meaningless tweakable parameters, and ask meteorologists what they would expect and tweak until you get that
<SilverFox>
I also tried getting in touch with meteorologists, but I was dumber then than I am now
<Iskierka>
then you're not dealing with trying to get into the nitty gritty of "what would reality do" and can spend more time creating systems that develop complexity
<SilverFox>
tbh if I were to redo it I'd develop a side project of using weather style like breath of the wild does
<SilverFox>
that would be infinitely more performant and use less ram
<SilverFox>
because simulating whether is cellular automata at heart, things scale really quickly with resolution and layer count
<SilverFox>
but fun fact, based on how efficient my system was, to have a resolution of only a cubic centimeter, for the entire planet, assuming spherical and flat, it would take about..I think it was something like a quarter of the lifetime of the known universe
<Iskierka>
whether that's better depends if you just want something to make the air more interesting or specifically to develop a *system* that operates itself rather than having to be guided
<SilverFox>
I could calculate the entire globe within I think it was 6-15ms
<SilverFox>
I wanted a system realistic enough that a meteorologist could sit down, make proper predictions with the data available, and more likely it'd happen that way
<SilverFox>
not just random or chaos, but something at least somewhat predictable based on how conditions are
<Iskierka>
That probably was ambitious for a single person
<SilverFox>
oh definitely
<SilverFox>
infinitily so
<SilverFox>
didnt help that I burn out real quick when facing walls of problems over and over
<SilverFox>
so I was losing drive everytime something stupid would come up, like I could never figure out why one cell in specific, on a coastal sort of alcove island thing, would always generate hurricane conditions
<SilverFox>
it would just go out of control
<Iskierka>
and that's why I'm getting way more code done with an actual job because I'm not having to build one giant wall myself, there's lots of bits to build and I only have to last long enough for each section before moving on
<SilverFox>
yup
<SilverFox>
but it is what it is
<Iskierka>
tbh that sound hilarious and from a gameplay perspective would be great fun to have "hurricane cove"
<SilverFox>
oh yeah the winds went to like, int32.max
<SilverFox>
so like, literally bermuda triangle for kerbin
<SilverFox>
thats probably what it was
<SilverFox>
the temperatures also follow the same trajectory too, which was probably driving up pressure and causing the immense winds
<Iskierka>
did it happen to be on any datums like x/y = 0 and possibly causing a division scale error?
<SilverFox>
no idea
<Iskierka>
yeah probably too long but that's what I'd be suggesting if it were the problem now
<SilverFox>
the entirety of kws can probably be written in a single formula
<SilverFox>
a very very very big formula
<SilverFox>
with that fancy newton squiggle for calculus
<SilverFox>
Iskierka, I think I still have the codebase on github, I'll show you monstrosity that is CellUpdate.cs
<SilverFox>
its like trying to debug The Algorithm
<SilverFox>
it just does and you're like "oh okay"
<Iskierka>
hard to judge much of this though, some names feel like they could be improved but it might be that they're perfectly self-explanatory alongside the maths behind it.
<SilverFox>
name one
<Iskierka>
... oh wait no I skipped in and thought the 170 lines of variable declaration was for the class. Those are function locals
<Iskierka>
jesus
<Iskierka>
*gets the spray bottle*
<SilverFox>
lmao
<SilverFox>
Like I said, its not the best, might be able to split it up for sake of reading, but everything is linear, can't really parallelize the update process other than run multiple cells at once
<Iskierka>
splitting linear stuff for readability is always a good idea because by 100 lines into a function you've forgotten what the function was and its context
<SilverFox>
lmao yeah
<SilverFox>
although I had uhhhhhhhhhhhhhh those things you can do to make sections in visual studio
<Iskierka>
so even if it's an unnecessary call, splitting it into a function you can name and that name gives it context for what that bit actually *does* is useful
<Iskierka>
regions, but those are normally for grouping related functions. Not for collapsing sections of a function
<SilverFox>
however, you see all those variables?
<SilverFox>
those'd have to be passed no?
<Iskierka>
struct containing them
<SilverFox>
fair enough
<Iskierka>
if everything's going to use them in the same way
<SilverFox>
the update process isnt going to change, but what each section requires changes drastically
<SilverFox>
as you can see
<SilverFox>
I agree there is a lot that can be done better when you really sit down and nitpick it
<Iskierka>
re:names earlier though, stuff like where you've just got "lambda" "Bn" "Cv" "sigma_ext"; they're probably meaningful in the original papers and if you're familiar with them it makes more sense, but it's very hard to follow without being familiar with these usages
<Iskierka>
even though you have commented what they are, you have to refer back to declaration to remind yourself when reading through
<SilverFox>
yeah no clue what those are fam
<SilverFox>
oh lol im looking at the line for lambda
<Iskierka>
what I'd probably do if I was following what I've got used to at work is names like lambda_meanWavelength, Bn_spectralDependence, Cv_dropletConcentration. And then it becomes much more obvious what's happening when they're used
<SilverFox>
well you can drop the acronyms there then
<SilverFox>
if you're using the full form of said acronyms
<Iskierka>
If basing it on a paper I'd keep both because you'll also want to refer back to how they're used in equations
<Iskierka>
and it doesn't add much length
<SilverFox>
understandable, but devils advocate a piece of paper isnt really that thick, but a ream of paper will knock you out upside the head
<SilverFox>
Iskierka, those 170 lines of declarations dont even include pre-section declarations either
<SilverFox>
for ease of debugging I had certain variables come into play later on rather than at the declaration step
<Iskierka>
Scrolling more isn't a big issue and it's *much* faster to read long names you understand than parse short names you vaguely might remember the meaning of
<SilverFox>
yeah everything was kept in regions anyways
<Iskierka>
anyway I need to shower and then probably sleep
<Iskierka>
this was entertaining
<SilverFox>
how can you sleep knowing this monstrosity exists
<SilverFox>
if you ever feel like hating yourself I can send you a dev copy and you can try and debug it yourself
<Iskierka>
by knowing that before we got to it the game I'm currently on did all lobby management in a single monobehaviour on the "start game" button
<SilverFox>
lobby like multiplayer?
<Iskierka>
yes
<SilverFox>
DISGUST.JPG
<Iskierka>
all of it was managed by one button
<Iskierka>
that got disabled when you went into any options menu within the lobby, so it had to find a way to persist its management across multiple initialisations
<SilverFox>
so the start game button triggered the lobby, the matchmaking, the actual game start?
<SilverFox>
and all of those scripts were just attached to it?
<Iskierka>
all of it. It was operating when not being interacted with
<Iskierka>
Not scripts. Script.
<SilverFox>
BRUH
<SilverFox>
vomit
<SilverFox>
was the game client-authoritative or server-authoritative?
<SilverFox>
Iskierka, if you want fun, try and make a map of some sorts showing the connections of the variables for KWS for this single function
<SilverFox>
how each variable affects others, and whats connected
<SilverFox>
dont yall also love the comment on line 374
<SilverFox>
whitequark, that line of checking nan and infinity is rampant in this code
<SilverFox>
because the littlest change to the wrong thing suddenly propagated mass errors, or even subtle errors that would go unnoticed for many cycles
<Iskierka>
Neither. https://www.photonengine.com/pun has all clients self-authoritative (yes I know don't bother mentioning the exploitability)
<galois>
title: Photon Unity 3D Networking Framework SDKs and Game Backend | Photon Engine
<SilverFox>
I get a little dictator-like with how I run my server-stuffs
<SilverFox>
client sends an update to have been moved about 400m in a single second? server says fuck you and get kicked
<Iskierka>
there's a "master client" that is presumed to be authoritative for game management and flow (you don't have to listen to what photon declares to be the master it's entirely arbitrary because all are running the same code) but everyone manages their own objects internally and just tells everyone else what they're doing
<SilverFox>
server authoritative is basically just that but with requests rather than declarations
<Iskierka>
requests add latency and code flow complexity versus just "this object is mine? I declare it does this"
<Iskierka>
though also a lot of security
<Iskierka>
not that you can get much security when it's C#
<SilverFox>
a lot a lot of security
<SilverFox>
computers are really fast nowadays
<SilverFox>
but yeah requests do definitely add latency, that is unavoidable
<Iskierka>
networks are still .6c + relay delays
<SilverFox>
electrons flow at 0.6c?
<Iskierka>
In copper, approximately, yes
<SilverFox>
neat
<Iskierka>
or rather the electric field does
<Iskierka>
electrons flow at a few mm/hr
<SilverFox>
interesting
<SilverFox>
does the electric field propogate like neurons do?
<Iskierka>
from such an open question I don't know what aspect of neurons you're thinking of comparing
<SilverFox>
well the propagations of action potentials
<SilverFox>
one section acts on the next in like, jumps
<SilverFox>
but instead of chemicals you have electromagnetic fields