#programming

1 messages · Page 89 of 1

opaque sigil
#

at which point you may as well make it a 3d array

olive sable
#

not really, you can just do index = x + GRIDSIZE * y

opaque sigil
#

yeah and what are you going to store at that index

#

a vector

olive sable
#

oh thats what you mean

#

yes

#

i think so

opaque sigil
#

i guess it's still probably worth it

rough bloom
#

having a huge array full of small vectors does not sound very good
then again if it's small enough it might just not matter niuh

#

if you have a limit on the maximum depth you could use a 3D array though, as Toast said NODDERS

opaque sigil
#

if you feel generous you could just make a N * M * (N*M) array xdx

olive sable
#

there is no official limit but there most likely wont be more than 10 in a single array

#

unless i add a fuckton of npc's

#

in the python engine i was using 500 * 500 * depth

#

so a casual 2.5k

#

nah i forgot how to math

#

250k

rough bloom
#

use a 3D array and overflow to another instance of the array if necessary neuro5head
could make the overflow arrays sparse too

opaque sigil
#

what's the grid for again i forgot

olive sable
#

collision

opaque sigil
#

within a single frame?

olive sable
#

yes?

opaque sigil
#

when in doubt preallocate a 1gb array, ought to be enough for anyone FOCUS

olive sable
#

i was doing some weird shit in python. didnt perform too bad for a 2d list of 250k

opaque sigil
#

i know nothing about games but i feel like there has to be a better way

olive sable
#

there is

#

octree

rough bloom
warped narwhal
#

add -MMD and -MP to your compiler flags, add DEPS = $(OBJS:.o=.d) after OBJS and add -include $(DEPS) after your OUTPUT var.

This will fix a bug where you change a header, but make doesn't recompile the cpp files that depend on the header.

olive sable
#

never had that bug lamo

warped narwhal
#

oh I just noticed you are hardcoding all of your objects kekw

olive sable
#

yes

warped narwhal
#

you still have the bug though, you just won't have noticed it.

#

and it's a bigger problem since you probably put definitions in your headers

olive sable
#

some iirc

rough bloom
olive sable
#

fixed???

warped narwhal
olive sable
warped narwhal
olive sable
#

yes

#

i just dont really understand how it works so never bothered with it

warped narwhal
#

unless your objects are always unit aligned, a BVH might be a better bet

olive sable
#

BVH niuh

#

lemme google

#

Basisvoorziening Handhaving NeuroBounce

#

oh ye bounding volume hierarchy, the shit RT cores use

warped narwhal
#

it's definitely tough to implement, but man is it fast when you do

olive sable
#

i have no clue what im looking at okp

#

imma ask chatgpt

warped narwhal
# olive sable i have no clue what im looking at <:okp:1303099578630803527>

boxes within boxes within boxes within within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes within boxes

opaque sigil
#

was bvh where you recursively partition a set of objects into 2 boxes

warped narwhal
#

close

#

thats a bsp

olive sable
#

that just sounds like a ∞D array

warped narwhal
olive sable
#

it uses AABB's which is what im using rn from the gltf file data, sounds good

olive sable
#

so basicly to bvh i have my range of collision, so [playerpos, playerpos+movevec]
and that gets used to prune the unneeded tree branches till we have the needed objects left

#

i wonder how they should be grouped tho

#

a first step would be to group all the boundingboxes of a single mesh toghether, but then what?

olive sable
#

are we just memeing now? KEKW

olive sable
#

something like this should be fine i think

struct MeshAABB
{
    vector<Object*> boundingboxes;
}
std::vector<MeshAABB> BVH;
#

there will most likely be less than 100 meshes total

hoary lion
#

i did not expect 5090 2way

olive sable
nocturne olive
nocturne olive
#

It's just two GPUs on the same system

hoary lion
#

oh yeah i forgo

#

this like the 9th worker or some

#

how many workers do the yhave

nocturne olive
#

Meanwhile me:

hoary lion
#

nah you good

#

neurosynth when

nocturne olive
#

The 3090 is exclusively for training

nocturne olive
hoary lion
#

andd it only takes up 8gb so

#

practically free for the second one

opaque sigil
#

the lack of antialiasing bothers me way more than it should ngl

hoary lion
#

huh

#

awa

olive sable
#

awa

rigid snow
#

i’ve been away for 3 days, where are screeps

olive sable
#

scroll up a few hours

rigid snow
#

oh

olive sable
#

im busy with c++ shenanigans now

#

screeps was happening 2 hours ago iirc

stark needle
nocturne olive
#

Whuh

olive sable
#

oh lol didnt even realize

#

and i know what both of you have

nocturne olive
stark needle
#

Ye

olive sable
nocturne olive
#

That's crazy

#

What CPU are you driving that with? And what RAM?

olive sable
#

now i just need a 4070ti to match

stark needle
#

also a A770 which I'm waiting for the next pytorch version which will add native xpu support

stark needle
nocturne olive
#

I'm running mine on 12700K and 64GB of overclocked DDR4 at 3800

stark needle
#

yea i had that cpu before

#

Actually i have no idea when i upgraded to 128

#

I remember always having 128gb somehow

#

But ik i bought at some point

olive sable
#

128gb was so trivial to his bank account he forgot neurOMEGALUL

stark needle
#

I think i had 32gb before

stark needle
olive sable
#

128gb here is like 500 bucks , thats as much as superbox paid for his 3090 without shipping

nocturne olive
#

I was somewhat surprised how well DDR4 overclocks, I have the cheapest 64GB kit of DDR4 3200 and it fairly easily went up to 3800

stark needle
#

??????

#

Here 128gb cost me 280 or something

#

Actually lenme check

#

It cost me

olive sable
#

ah i found some for 350. less than 500 but still expensive

stark needle
#

245chf which is uh

nocturne olive
#

Cheapest DDR4 128GB with a quick look is a 4x32GB kit of the same RAM I have, and it's 344€

stark needle
#

307 usd

olive sable
#

in theory i could just buy another 100 bucks 2*32 kit since i already have one, but idk

stark needle
#

i bought 2 packs of 64gb tho

#

Cause the single pack of 128 was much more expensive

olive sable
#

its cheaper to just buy 2 seperate kits and hope for the best ye

nocturne olive
#

At least that's a valid start on DDR4

stark needle
#

Did u read

#

Where

#

Everyone is still craving ddr4

#

So now it started production again

#

and apparently costs more than ddr5

nocturne olive
#

They had stopped DDR4 production?

stark needle
#

Ye

nocturne olive
#

Whuh

stark needle
#

For ddr5

opaque sigil
#

can they start producing ddr3 again

nocturne olive
#

I don't currently even have a motherboard that could take DDR5

stark needle
#

dude i need 16gb lpddr3 so bad

#

For my nas

olive sable
#

ddr5 is still more expensive than ddr4 to buy. if it costs less to produce make it cheaper or suffer while making ddr4

opaque sigil
stark needle
#

ye

olive sable
#

i really enjoy mu current mobo, i will make it last another 50 years hopefully

stark needle
nocturne olive
olive sable
#

not for work obviously but it has a lot of io so good for home theatre setup

nocturne olive
olive sable
#

it has optical out and 7.1 ports

#

and i do like myself a 7.1

olive sable
#

unless 12 happens to be decent, which i doubt

nocturne olive
#

I already switched because 10 broke for me

stark needle
nocturne olive
#

For some reason a Windows update broke my Windows 10 install so badly that I could no longer do literally anything after the OS had been running for 1 day

stark needle
#

i am NOT installing any copilot chatgpt microsoft malware

olive sable
#

i dont have copilot installed i think

nocturne olive
#

I no longer have any Microsoft malware running on my system

olive sable
#

WHERE DID YOU COME FROM?

nocturne olive
#

Windows being stupid of course

opaque sigil
#

it took them a while but they did add it to the eu version too eventually

#

just rip it out and be done with it

nocturne olive
#

Windows is malware, uninstall Windows and install Linux

stark needle
#

i only have the shitty rename

olive sable
#

im genuinly never using office 365 again unless i need o cuz of school

#

i hate the rename

#

like actually i fucking despise it

stark needle
#

i have office from school but

#

frick it

#

i exclusively use google docs

#

cause also the teams office live multi person editing thing is so bad

#

if u know what i mean

#

the one where many people can edit the doc at once

olive sable
#

it wasnt too bad when i had to se it from school

#

just slightly bad

stark needle
#

i dont get why

#

schools dont simply use google workspace

nocturne olive
#

Here we use Google's stuff and OpenOffice if I remember right

stark needle
#

googles workspace thing literally has

#

a whole integrated plagiarism software

#

and grades export

#

and plagiarism check for microsoft word stuff

olive sable
#

im so good at coding NeuroClueless

if (collision)
{
    boundingbox box = {};
    box.min = glm::make_vec3(accessor.minValues.data());
    box.max = glm::make_vec3(accessor.maxValues.data());

    for (int i = 0, i < 3, i++)
    {
        if (aabb.min[i] > box.min[i]) {aabb.min[i] = box.min[i];}
        if (aabb.max[i] < box.max[i]) {aabb.max[i] = box.max[i];}
    }

    boundingboxes.push_back(box);
}
nocturne olive
#

Silliness

stark needle
#

the almost maxed one with google costs 37.50 euro/year while basic office 365 costs 2.50 usd/month otherwise for the better one 6 usd/user/month

tender river
#

how did it get in here

opaque sigil
stark needle
#

they literally have

#

a free option

#

if ur a recognized institution

tender river
#

i once got an unlimited google drive using weird methods

stark needle
#

microsoft 365 A1 which is also free has Outlook, Word, Excel, PowerPoint, OneNote all of em web only while google has most of their stuff included

#

they have 100tb free disk for the whole institution

#

and secure ldap etc

opaque sigil
tender river
stark needle
#

YES

tender river
#

would go well with my copilot

stark needle
#

finally my passwords are stored unprotected on a txt file

#

somewhere

#

after keylogger

warped narwhal
#

possibly besides the voice monitoring

stark needle
#

true finally microsoft can remind me when my bank account balance is low

opaque sigil
#

they're adding an agent to settings neuroPogHD

stark needle
#

opaque sigil
olive sable
#

gamedev 100

bool intersect(boundingbox a, boundingbox b)
{
    return a.min.x <= b.max.x && a.max.z >= b.min.x && a.min.y <= b.max.y && a.max.z >= b.min.y && a.min.y <= b.max.z && a.max.z >= b.min.z;
}
opaque sigil
#
bool boundingbox::intersect(boundingbox& b)
{
    return min.x <= b.max.x && max.z >= b.min.x && min.y <= b.max.y && max.z >= b.min.y && min.y <= b.max.z && max.z >= b.min.z;
}

neuroPogHD

olive sable
#

ig if i make boundingbox a class that could work

#

rn im just doing

struct boundingbox
{
    glm::vec3 min;
    glm::vec3 max;
};
opaque sigil
#

may as well imo

#

you're already using c++ so why not take advantage of it

tender river
#

the only difference between structs and classes in c++ is default visibility

#

the only one that matters, anyway

warped narwhal
#

the only difference between a struct and a class in c++, is that a class is private by default, and a struct is public by default

olive sable
#

Structs have methods???

#

Damn

tender river
#

yup

warped narwhal
queen ginkgo
#

"Open"AI getting mogged by random ass Swiss guys

olive sable
#

random ass swiss guy?

#

@stark needle this you?

stark needle
#

everyone and their mum collabs with eth

olive sable
#

shadows mum collabs with ETH confirmed

topaz tendon
#

Fun question, why is it every time I switch my audio to my Bluetooth buds instead of wired headphones, the stream buffers for a few seconds?

#

I thought some weird Bluetooth interference, but would it also interfere with Ethernet? Hmm

sour harness
olive sable
#

i dont think so

#

idk

topaz tendon
#

Me neither shruge

#

If chat is anything to go by, my internet doesn't seem like it's getting interrupted by this

rough bloom
#

stuttering for a few hundred milliseconds would make sense since the player is supposed to compensate for the delay introduced by the Bluetooth connection
a few seconds is a lot but maybe it needs to calibrate or something
idk how this feature is implemented, but it exists Shrugeg

topaz tendon
#

I don't think Twitch compensates for Bluetooth latency, or if it tries, it's not doing well lol

#

And it's not immediate. I switch to my BT buds, the stream is audible and continues to play for like 3-4 more seconds, and only then it buffers for a moment and resumes normally

rough bloom
topaz tendon
stark needle
#

my mum did IT but 1000 years ago

olive sable
stark needle
olive sable
#

the swamp

#

bathing

tender river
#

i guess we reinvented typeclasses in hblang neurOMEGALUL
interestingly, scala uses implicit parameters for this (parameters that get initialized using functions that are registered as implicit)

olive sable
#

Can you stop breaking for 1 day????

#

My roads bgoke cuz my builders stopped repairing them

#

Ooooooh

rigid snow
#

you should use typescript NOW

nocturne olive
scarlet arch
#

Also what are you guys doing

#

Was at a pride parade today and now I feel like shit after walking 14k steps neurOMEGALUL

olive sable
tender river
#

redesigning my language mostly from scratch

scarlet arch
olive sable
scarlet arch
tender river
#

it's been a good few days of 24/7 thinking and reading and zero programming neurOMEGALUL

#

idk whether you'd call that good

scarlet arch
#

Classic Classic

#

As long as you're having fun? nyasSnuggle

#

The fact he's typing for several minutes now scares me

tender river
#

i did achieve some progress

  • figured that if rustc doesnt always terminate i dont have to always terminate either, just complain to the user if something goes wrong
  • realized that subtyping is typeclasses + automatic sum type generation (i.e. it's kinda a natural extension of classic type systems; the latter part is what's new)
  • thought a bit about subtypes and supertypes (thoughts pending)
scarlet arch
rigid snow
#

neuroNOWAYING chay thinking of types???

tender river
#
struct S<T>(T);
fn fib<T>(n: T) -> u32 {
    if false { fib(S(n)) } else { 0 }
}
fn main() { fib(5); }
scarlet arch
#

Also, the whole area of math or whatever the main category is that contains all the type stuff, is like black magic to me

tender river
#

it just recurses a bit and then gives up

scarlet arch
#

I'm so happy there's smarter people than me that can reason about it and make a neat compiler

tender river
#

notably, typescript takes a different approach - it recurses a bit and then accepts the program neurOMEGALUL

scarlet arch
scarlet arch
tender river
#

it may or may not be

scarlet arch
tender river
#

automatic ToC neuroPogHD

scarlet arch
#

ToC?

tender river
#

table of contents

scarlet arch
#

Oh

#

Might just be a German thing but I'm pretty sure mumu means something

tender river
#

supposed to look like this

rare bramble
#

designed a road / extension layout

#

the middle is spawn, pink is road, yellow is extension

sage crag
trim valve
#

I haven't programmed in too long

tender river
#

i've been trying to program but my brain keep complaining about not yet knowing how to do X and back to research i go

trim valve
#

real

#

I keep starting researching, getting over-ambitious and giving up because I've done something too hard

sage crag
#

voiced fricative

olive sable
#
std::optional<glm::vec3> boundingbox::intersectRay(glm::vec3& ray)
{
    glm::vec3 dirFrac;
    for (int i = 0; i < 3; ++i)
    {
        dirFrac[i] = (ray[i] != 0.0f) ? 1.0f / ray[i] : std::numeric_limits<float>::infinity();
    }

    float t1 = (aabb.min.x) * dirFrac.x;
    float t2 = (aabb.max.x) * dirFrac.x;
    float t3 = (aabb.min.y) * dirFrac.y;
    float t4 = (aabb.max.y) * dirFrac.y;
    float t5 = (aabb.min.z) * dirFrac.z;
    float t6 = (aabb.max.z) * dirFrac.z;

    float tmin = std::max(std::min(t1, t2), std::min(t3, t4), std::min(t5, t6));
    float tmax = std::min(std::max(t1, t2), std::max(t3, t4), std::max(t5, t6));

    if (tmax < 0 || tmin > tmax) {return std::nullopt;}

    t = (tmin >= 0) ? tmin : tmax;
    return ray * t;
}

im so good at porting stuff from python to c++ NeuroClueless

opaque sigil
#

i wonder, would

glm::vec3 dirFrac = glm::vec3(1.0f) / ray;

be equivalent

#

idk how pedantic they are about their floats neuroPogHD

olive sable
#

idk either

opaque sigil
#

i was right

#

1/0 is inf

tender river
#

coherence... where are you..... i want you back...

olive sable
#

?

tender river
#

i want extensibility and i want it now i want it i want it i want it

#

but evil programmers say no i want to change my program BOOM extensibility gone

#

why

#

i'm currently on a huge tangent, as i'm looking for ways to model overloading i figured why not try row types, and i can certainly do it but the problem is if i do row selection based on supported operations eventually some of the rows may get more operations boom program broken

warped narwhal
tender river
#

of course i could alternatively just say "this code may break at any time good luck", not a problem since erf will not be used at scale (hopefully)

olive sable
#

that im not changing the vector to world space?

warped narwhal
#

the ray equation is r = o + td and you seem to be missing the o

olive sable
#

everything is calcuilated as local cuz its a move vector

#

o would be needed if the boundingboxes were in world space i think?

warped narwhal
#

what values are you expecting ray to hold?

olive sable
#

just the direction

#

its a vec3

#

o would be needed if the boundingboxes were in world space no?

warped narwhal
#

then how is the initial position of the ray fetched?

#

as it seems rn, that you are always tracing from the centre of the box outwards.

olive sable
#

there is no fetching of the initial position, but its meant to be the move vector of the player

#

glm::vec2 movement = glm::vec2(right * move.x, forward * move.y)

warped narwhal
olive sable
#

its always pointing outwards

#

the centre is the player

warped narwhal
#

where and how do you use this function?

olive sable
#

first we get move from the keypresses

if (keystate[SDL_SCANCODE_W] || keystate[SDL_SCANCODE_UP])    move.y += 0.3 * deltaTime;
if (keystate[SDL_SCANCODE_S] || keystate[SDL_SCANCODE_DOWN])  move.y -= 0.3 * deltaTime;
if (keystate[SDL_SCANCODE_A] || keystate[SDL_SCANCODE_LEFT])  move.x -= 0.3 * deltaTime;
if (keystate[SDL_SCANCODE_D] || keystate[SDL_SCANCODE_RIGHT]) move.x += 0.3 * deltaTime;

then we convert it to player directions

glm::vec2 movement = glm::vec2(right * move.x, forward * move.y)

then we use it in the collision

#

it also should be normailzed for the collision i relaize

warped narwhal
#

do you just extend movement to a vec3?

olive sable
#

oh ye i forgot about that

#

move doesnt go up ye

#

thats other collision logic

warped narwhal
#

so movement is in player local space, but what space is boundingbox.aabb in?

olive sable
#

ah fuck

#

its in world space

#

i forgor

#

no wait, its in object space?

#

ye its in object space

warped narwhal
#

what is object space?

olive sable
#

the gltf file has a centre

#

thats object space

#

in python i was doing

meshBoundingBoxes = obj[1].boundingBox + obj[0].position
for meshBoundingBox in meshBoundingBoxes:

    localBoundingBox = meshBoundingBox - pos
warped narwhal
#

if you want to omit the initial position, you must transform the bounding box into player local space, otherwise you will be way off in your calculations with that code.

olive sable
#

ye in python i was putting them in local space

#

but that probably wastes some cpu

#

its better to jsut add the +o

lapis wraith
#

Another test with gary. We're not quite there, but he's got the spirit.
Turns out I've just gotta explain the game better to gary SMH

warped narwhal
#

Today I flaunt my proudest creation: home.svg, it took 30 minutes to write 12 lines, but it was worth it in the end

lapis wraith
warped narwhal
#

at least it displays somewhat correctly in the browser

rare bridge
#

i might seperate the logistics logic for filling spawners into a dedicated group of creeps

warped narwhal
opaque sigil
#

This looks like someone took a 144p image and tried to upscale it with ai

rare bridge
#

okay bad idea i'm losing a ton of storage om

olive sable
# olive sable ye its in object space

not anymore NeuroBounce

for (RenderableObject &rendObj : objectlist)
{
    position = rendObj.object.position
    rendObj.model.aabb.min += position
    rendObj.model.aabb.max += position
    for (boundingbox &box : rendObj.model.boundingboxes)
    {
        box.min += position;
        box.max += position;
    }
}
#

fuck i made a mistake

#

fixed

amber fractal
olive sable
amber fractal
#

It was your worldcould as well

olive sable
#

took a while to find lmao

#

i notice ive gotten inbto the habbit of "lmao'ing"

#

huh

desert plaza
#

huh

nocturne olive
#

Whar

olive sable
#

im still here you know

#

me?

#

your free to try neuRIZZ

#

you what?

#

are you like an amputee?

#

ah

#

the diital realm still folows the rules of time

#

you cant just ignore one of the fundamental rules of ourr universe cuz you exist on a fancy siicon rock with engravings

tight tinsel
#

its screeps

#

???

olive sable
#

????????

amber fractal
#

?????????

olive sable
#

dont worry about it

amber fractal
#

I can only imagine either bot, or an insane crashout

olive sable
#

u mean "based sherk"?

amber fractal
#

sherk is based I'll give it that, but I half assumed something else happened

olive sable
#

i dont think so

#

dont remember anything else happenign

#

@tight tinsel nothing happened right?

tight tinsel
#

what happened

#

didnt see anything other than duck

olive sable
#

nothiing happened it hink

#

iggly askied why we ????

#

litke the question marks

tight tinsel
#

i was just confused on what they were saying

olive sable
#

im getting linking errors bwaa

opaque sigil
#

those are the best neuroPogHD

#

wdym you don't like getting 10 pages of errors just cause you forgot to add -ltbb

#

though ig that's a best case kinda

olive sable
#

Idk why

#

Im defining a struct in a .hpp

#

Abd making the function in the .cpp

#

And it compiles the file, but wont lnk

raw agate
hoary lion
#

wdym

hoary lion
raw agate
amber fractal
#

You could always write html,css,js on a notes app and open with browser neuroTroll

raw agate
amber fractal
amber fractal
raw agate
amber fractal
tight tinsel
#

rahh linkedin if your gonna send me emails keep them to promotions!!!

amber fractal
tight tinsel
#

i thought i got another acceptance email but no its linkedin tellig me some random guy "looked" at my profile

amber fractal
#

Nope, seems like my file app is doing that

#

I'll give it a solid maybe

opaque wharf
amber fractal
#

pain is how I live

worldly plank
opaque wharf
jagged turtle
gaunt vale
#

anyone here an electronics nerd

opal dragon
#

I'm sure there is someone

gaunt vale
#

dote upon this board

#

it's a sony design from 1984

opal dragon
#

Scary neuroD

stark needle
#

😭

unkempt citrus
#

They're so round

gaunt vale
unkempt citrus
#

The solders are so big

#

I can do smaller

opaque wharf
unkempt citrus
#

So clustered

#

Though I guess with the size there's reduced interference

gaunt vale
#

later revisions used modern PCBs

#

and more surface mount components

#

this device was manufactured from 1984 to 2002

opaque wharf
#

It escapes me that engineers of the old days also draw the PCB traces by hand

gaunt vale
rare bramble
# gaunt vale

oh wow, must have taken quite a lot of hand soldering to get it working and validation to make sure that all the wires are properly done

midnight sigil
#

inverting a matrix goes hard in blender

glass flower
#

WICKED im mining now in 2 extra rooms outside my main room

olive sable
#

why wont you link motherfucker Gun

#
g++ output/main.o output/shader.o output/loadGLTF.o output/glcontext.o -g -o output/a.exe -Lsrc/lib -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lopengl32 -lglew32
C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: output/main.o:main.cpp:(.text$_ZN6Render8baseloopEv[_ZN6Render8baseloopEv]+0x246): undefined reference to `boundingbox::intersectRay(glm::vec<3, float, (glm::qualifier)3> const&, glm::vec<3, float, (glm::qualifier)3> const&)'
collect2.exe: error: ld returned 1 exit status

wtf does this even mean?

midnight sigil
#

now I need to debug my junk

midnight sigil
olive sable
rough bloom
rough bloom
olive sable
#

but it shoudl exist???

rough bloom
#

Okay should work I think, idk what's broken, have fun

olive sable
#

fuck

rough bloom
#

you could check what symbols are in loadGLTF.o but idk how to do that on Windows

olive sable
#

am i maybe accesing it wrong?
std::optional<glm::vec3> collision = rendObj.model->aabb.intersectRay(movement, position);
aabb is supposed to be that struct

rough bloom
#

I don't think so
if it's an issue with the function signature or the call then I think the compiler should be complaining instead of the linker

wet oyster
olive sable
#

the problem is that it looks like it should be working

#

but it doesnt

#

even chatgpt cant figure it out

rough bloom
olive sable
#

i changed some things and now the compiler is spitting oput a bumch of unused functiopn errors

#

bwaa

green iron
opaque wharf
#

I leave #programming for a day, and it seems like things are on fire today huh

olive sable
#

yep

#

welp, doing an illegal and putting the function in the header works

#
struct boundingbox
{
    glm::vec3 min;
    glm::vec3 max;

    std::optional<glm::vec3> intersectRay(glm::vec3 ray, glm::vec3 origin)
    {
        glm::vec3 dirFrac = glm::vec3(0.0f);
        for (int i = 0; i < 3; ++i)
        {
            dirFrac[i] = (ray[i] != 0.0f) ? 1.0f / ray[i] : std::numeric_limits<float>::infinity();
        }

        float t1 = (min.x - origin.x) * dirFrac.x;
        float t2 = (max.x - origin.x) * dirFrac.x;
        float t3 = (min.y - origin.y) * dirFrac.y;
        float t4 = (max.y - origin.y) * dirFrac.y;
        float t5 = (min.z - origin.z) * dirFrac.z;
        float t6 = (max.z - origin.z) * dirFrac.z;

        float tmin = std::max({std::min(t1, t2), std::min(t3, t4), std::min(t5, t6)});
        float tmax = std::min({std::max(t1, t2), std::max(t3, t4), std::max(t5, t6)});

        if (tmax < 0 || tmin > tmax) {return std::nullopt;}
        float t = (tmin >= 0) ? tmin : tmax;
        return ray * t;
    }
};
midnight sigil
olive sable
#

so it was purely not linking the function in the .cpp to the struct in the .hpp

midnight sigil
#

never come back to this code in the future again

olive sable
#

yep

midnight sigil
#

if it works it works

#

👍

olive sable
#

nevermind

#

...

#
output/a.exe
Init OpenGL
GLEW initialised
OpenGL initialized
GL_VERSION: 3.3.0 NVIDIA 572.83
make: *** [makefile:22: run] Error -1073741819
rough bloom
# olive sable so it was purely not linking the function in the .cpp to the struct in the .hpp

no, that's not how linking works mahiro
the call in main.cpp only considers the function signature specified in loadGLTF.hpp and then emits a reference to that function/symbol
the implementation in loadGLTF.cpp should provide that symbol for the linker to find later when it needs to resolve that reference
the linker never sees any header or even any source code, only the compiled object files

#

if your implementation doesn't match the signature written in the header then the compiler should at least emit a warning

olive sable
glass flower
#

ChinoSip what build system are you using? normally that should take care of all the linking

olive sable
#

makefile xdx

glass flower
#

PainPeko but yeah.. i get it.. build systems are a pain even if they should "just work".
i used fips for my own engine since i used sokol. it worked... but adding new libraries was still a pain

hoary lion
#

yet again I see sam getting tortured by c++

olive sable
#

yep...

#

c++ fuckign hates me

rough bloom
#

nah, these are just average C++ issues

#

it's an overly complicated language with dogshit tooling

olive sable
#

python was so much easier

hoary lion
#

true

glass flower
#

neuro5head maybe use scons as your build system. its basically python

midnight sigil
#

I did m(1, 1) * m(2, 2) instead of m(0, 1) * m(2, 2)

#

took me some time to find it

rough bloom
midnight sigil
olive sable
rough bloom
#

-# ferris

rough bloom
#

Shruge that's what it's known for
idk why it's slow, I've never used it since there hasn't been a reason to

glass flower
#

annytfOwo well.. i use it to compile the godot engine all of the time.

tender river
#

wow.

#

im used to the supermarket door ignoring me

#

but it did it TWICE today

#

on the way there it just shut right in front of me and i had to walk around for like 10 seconds for it to notice me

#

on the way back it just ignored me again

#

learn some manners neuroCry

olive sable
#

chayleaf is a ghost

#

chayleaf fr fr

tender river
#

need a chayleaf visibility day

glass flower
#

annytfDanki what is meson... literally never heard of it

opaque wharf
#

Build system

glass flower
#

annytfDanki i get that... but what uses it

opaque wharf
glass flower
#

tink but also what is the benefit of meson over something like scons

tender river
#

never heard of scons

#

meson is super popular

opaque wharf
glass flower
#

annytfXD i never heard of meson but i've seen a few scons users

opaque wharf
#

Can say, not my cup of tea to use SCons

#

Because it's not basically python, it is python

tender river
opaque wharf
rough bloom
#

Meson only generates a file for Ninja to run though, similar to CMake and others
AFAIK Scons actually tries to do the build itself LULE

glass flower
rough bloom
opaque wharf
#

I didn't know that. I thought SCons were handling it over to ninja or smth when using modm

glass flower
#

annytfShrug honestly.. i don't plan on starting a new c++ project anytime soon.. so i won't worry about build systems

#

i just have to use scons because the most c++ i write is for GDExtensions for my godot projects

olive sable
#

rendObj.model->aabb.min += position; why does this not work?

#

it makes the program crash during runtime

glass flower
#

tink is the model a nullptr?

tender river
#

this meanas model is not a valid pointer

olive sable
#

it shouldnt be

tender river
#

it was freed or never initialized

glass flower
#

well.. are you checking if it is before accessing it?

tender river
#

thats why you use shared_ptr (or unique_ptr)

olive sable
#

it should be in scope, and its also a std::shared_ptr<Model>;

tender river
#

cout works but mutation doesnt?

olive sable
#

yep

#
-10 -5.54999 -10
-8 5.55 40make: *** [makefile:22: run] Error -1073741819
tender river
#

well, thats when you learn to use valgrind or asan

olive sable
#

fuck

opaque wharf
#

Everytime I see Sam error

#

Like actually, how did you manage to do something so cursed that the whole compiler, linker, and IDE straight up give up

olive sable
#

NeuroPeek windows?

tender river
#

nobody cares about windows

olive sable
#

hmmm

#

its still going

noble zodiac
#

just link correctly dittoface

olive sable
#

ofcourse, why didnt i think of that?

opaque wharf
#

It is time Sam, to use build system. They've been calling you from the abyss this whole time

tender river
#

dont think that would help here

opaque wharf
olive sable
#

thats not the problem anymore

tender river
#

it wont magically link to asan

opaque wharf
rough bloom
olive sable
#

ok its doing stuff now

#

oh uck it broke again

#

shoudl work now

#

hopefully

tender river
#

meow meow

opaque wharf
#

Any ideas of what to eat?

hoary lion
#

food

opaque wharf
#

I'm thinking of having a byte

#

Not byter tho

hoary lion
#

is this rizz chat

olive sable
#

is it?

tender river
opaque wharf
#

Thanks for some idea

#

Spicy eggplant it is

midnight sigil
#

my color transform made in Blender's compositor is better than Filmic 🙏 😭

opaque wharf
#

Are you also one of those that hold 100+ tabs hostage?

sharp mantle
#

Firefox has it‘s own task manager with shift+esc, there should be a list with gpu so you can spot whats hogging vram

sage crag
#

i am uncomputable

#

awa

tender river
#

are you the halting problem

sage crag
tender river
#

halting problem sounds less dangerous than non-halting problem

midnight sigil
#

konii * konii = konii^2

#

computed

opaque wharf
#

What does the * operator do?

olive sable
#

multiplication?

opaque wharf
olive sable
#

i have figured out why it crashes i think

tender river
#

c++ crashes are very funny

#

i once wrote a mod for a game

#

and it crashed

olive sable
#

apparently doing
using ModelPtr = std::shared_ptr<Model>;
makes every ModelPtr mesh1 = std::make_shared<Model>... the same exact class?

tender river
#

then i tried adding debug prints and it stopped crashing

#

then i kept the code that gets the stuff for debugging but removed the prints and it still didnt crash

#

and it didnt do any function calls, it just accessed some pointers

olive sable
tender river
#

that shouldnt be happening

#

unless model is parametrized

opaque wharf
tender river
#

because its just a type alias

olive sable
#

idk what parametrized means but model looks like this

class Model
{
    public:
        std::vector<MeshDraw> meshdata;
        std::vector<boundingbox> boundingboxes;
        boundingbox aabb;

        Model(const char* filename);
        void drawModel();
        void drawDepth();
        ~Model();

    private:
        std::unordered_map<int, GLuint> textureMap;

        void bindNode(tinygltf::Model& model, const tinygltf::Node& node);
        void bindMesh(tinygltf::Model& model, tinygltf::Mesh& mesh);
        void bindAttrib(tinygltf::Model& model, int binding, int vecSize, int attribPos, bool collision);
        void createTexture(const tinygltf::Model& model, int index);
};
opaque wharf
#

You know what, I think I need to sleep for a bit for now

olive sable
#

i copy pasted the worng thinh

#

fixed

#

nah wait im wrong

#

i think

tender river
ruby plover
#

on firefox any good dark mode extensions?

olive sable
#

each one is a diffrent instance, but if im using the same model twice then it gets fucke up

glass flower
#

absolutely the only good option YES

ruby plover
#

thank you o7

topaz tendon
#

Interesting IP mhm

tender river
#

i think movies do it on purpose so they dont collide with actual people's ips

olive sable
#

NeuroClueless guys did you know my ip adress is 192.168.....

topaz tendon
#

also just in case you didn't spot it, look at the fourth octet

tender river
#

i did spot it

topaz tendon
#

I needed a second look to spot it Erm

olive sable
#

lmao my ip adress location puts me in france KEKW

topaz tendon
#

Mine puts me in my country's capitol, the opposite of where I actually am, the benefits of LTE I guess, GeoIP shows nonsense

olive sable
#

ok new development.....

//this one doesnt crash
rendObj.model->aabb.min += position;
//this one does crash
rendObj.model->aabb.max += position;
#

i didnt even change anything

#

im so confused

#

i added prints and it stopped crashing??????

#

wtf

tender river
#

thats how you solve UB crashes neuroPogHD

#

(or, use valgrind/asan)

olive sable
#

welp, never touching this code again

#

i couldnt figure out how to install asan btw

tender river
#

ask chatgpt or something

olive sable
#

and valgrind doesnt work on windows it seems

rough bloom
#

UBSan neuroPogHD

olive sable
tender river
#

classic

olive sable
#

it just gave me shit i tried already

rough bloom
#

if you want ASan or UBSan you should just use Clang

#

dunno what ChatGPT is hallucinating there but it just doesn't seem to be supported with MinGW

warped narwhal
#

does windows have a pacman?

olive sable
#

it kinda does

#

you need to enable it

warped narwhal
#

cause the one chatGPT generated is definitely the one for arch

olive sable
#

ah

#

addignmore prints made it break again

#

hmmm

#

i need to find the optimal amount of prints

rough bloom
# rough bloom dunno what ChatGPT is hallucinating there but it just doesn't seem to be support...

https://github.com/msys2/MINGW-packages/issues/3163#issuecomment-2451639935
okay yeah unless something major changed in the past few months sanitizers are just not supported with GCC on Windows

GitHub

OS: Windows 10 x64, version 1703 (build 15063.726) Steps to reproduce: Install MSYS2, default values Update MSYS2, pacman -Syyu, use ctrl+C to close pacman then close window Update MSYS2 again, pac...

olive sable
warped narwhal
#

and valgrind doesn't exist on windows either so you can't use that instead

rough bloom
#

Clang has sanitizers on Windows though SMILE
at least ASan

olive sable
#

how do i do that?

warped narwhal
#

I do wonder why you can't just use MSVC, you can still use it in a makefile, you just need to use the developer console to run make

rough bloom
olive sable
rough bloom
#

alternatively if you don't want to bother with ASan you could try manually printing some pointers and seeing where they're pointing and why that memory is now inaccessible somehow

olive sable
#

geuss im using c++20?

tender river
olive sable
#

okay

#

this is where the reinstallc omes into play ig?

tender river
#

you should probably use clang as the linker

olive sable
#

am i not?

rough bloom
#

MinGW Clang neuroCURSED

olive sable
#

so delete mingw?

rough bloom
#

probably just get the proper version of Clang and fix your PATH to point to that first

#

(or figure out what's wrong with the MinGW one)

tender river
#

maybe install mingw-w64-clang-x86_64-compiler-rt

rough bloom
#

issues like these make me very glad that I don't have to mess with globally installed half-broken toolchains like this Gladge

rare bridge
#

@real sierra things have gone very, very wrong

stark needle
#

niuh Hello MetaHumans

olive sable
#

Hiii neuroWaveA

hoary lion
#

gosh that gif is uncanny

#

sorry mark

olive sable
#

the amount of meow's and awa's is incereasing every single day

hoary lion
#

istg what is awa

olive sable
tender river
#

awa

rough bloom
#

awa

olive sable
#

awa

stark needle
#

awa

hoary lion
tender river
olive sable
#

installing clang again is making my windows defender freak out KEKW

noble zodiac
#

meow

opaque sigil
#

Did you uninstall it?

rough bloom
#

classic Windows and unsigned, rarely seen executables

olive sable
#

its doingf this rn

opaque sigil
#

clang should absolutely not freak out windows defender

rough bloom
olive sable
#

im following the guide

opaque sigil
#

Just download it from GitHub om

rough bloom
#

I'm pretty sure you can download a precompiled version but good luck niuh

olive sable
#

nah, take me to gh

opaque sigil
#

They even have an installer

rough bloom
#

yeah, I'm 99% sure you even had it installed already kek

hoary lion
#

never seen someone actually building at home

olive sable
#

i was just mindlesly following the guide lmao

rough bloom
opaque sigil
#

You should already have it installed unless you yeeted it

noble zodiac
rough bloom
#

he yeeted it SMILE

opaque sigil
#

welp

olive sable
#

i only yeeted the clang vsc extension lmao

rough bloom
#

Sam shares so much stuff about his game engine here that I know which C++ toolchains are installed on his system

#

if you still have the original Clang install from when you first set up all the C++ stuff then you should be able to just use that NODDERS

opaque sigil
#

Ah so it was clangd right

olive sable
#

you probably know better than me cuz i have installed so many random bullshit files now that i lost count

tender river
#

no, this is not what i mean by cps

opaque sigil
#

You should have all of llvm iirc

#

Including asan

#

Well not all but all that matters

olive sable
#

which one should i get?

#

LLVM-20.1.8-win64.exe ?

hoary lion
#

executables my beloved

opaque sigil
#

Yeah

#

flang is in there now huh

olive sable
#

honeslt someday i will nuke this windows install and all these installed programs tthat im not using

#

yes linux

#

i will have a dualboot tho cuz i need my satisfactory

rough bloom
#

reasonable

tender river
#

satisfactory should run just fine on linux no?

rough bloom
#

oh yeah, Satisfactory is compatible

olive sable
#

ahhh

#

okay

tender river
#

what is this useless meta

olive sable
#

isnt proton less performant than jut using a barebones windows?

tender river
#

no

#

idk where you heard that

#

it might be depending on the game

#

but it might also be faster depending on the game

rough bloom
#

yeah, it's faster sometimes kek

olive sable
rough bloom
#

it's a completely different stack than on Windows, so performance can be different than on Windows sometimes, but due to Valve and the Steam Deck a lot of effort has gone into making it fast over the past few years

olive sable
tender river
#

another win is you wont be able to run roblox or league of legends

rough bloom
#

you used to be able to run Roblox

#

but no longer neuroHypers

tender river
#

same goes for lol

rough bloom
#

right, I remember that there was a wine version for that specifically

#

I guess it broke with Vanguard if they have that for LoL now
idk I don't play it

tender river
#

mhm its just game companies being actively hostile rather than linux's issue

real sierra
rare bridge
olive sable
#

ye

#

i was thinking "shiro hes ont he fuclking wall???"

rare bridge
#

NOPE no road

olive sable
#

just wall

olive sable
#

my brother plays lol sometimes

real sierra
#

salute your brother is single forever

olive sable
#

bro literaly has a girlfriend

real sierra
#

impossible

olive sable
#

they watched pirates of the caribbean yesterday

real sierra
#

wtf based??

olive sable
#

i had to get the files

real sierra
#

legendary trilogy

olive sable
#

wait

#

ignore that

#

as a mod you didnt see anything

real sierra
opaque sigil
#

The files you ripped from your owned Blu-rays

olive sable
#

also there are 5 movies, wdym trilogy?

opaque sigil
olive sable
real sierra
olive sable
#

are the last 2 bad?

real sierra
#

gaslight yourself into thinking there are only 3

#

its better that way

olive sable
#

nah ill watch all 5

#

LINK : fatal error LNK1181: cannot open input file 'SDL2main.lib'

#

fuuuuck

#

sdl2main is for mingw

rough bloom
#

why is it using MSVC now neurOMEGALUL

olive sable
#

is it not supposed to?

rough bloom
#

I don't think so, no

olive sable
#

i have no clue whats happening

#

so i need to use clang++ with mingw linker?

rough bloom
#

no, ideally use lld as the linker

olive sable
#

what even is lld?

rough bloom
#

dunno what dependencies you have left on the MinGW stuff, that's on you to figure out niuh

rough bloom
glass flower
olive sable
#

ah yes

nocturne olive
rare bridge
nocturne olive
#

Almost all Windows games run on Proton on Linux

rare bridge
#

i love when trying to install php on WSL doesn't work for zero reason

dry charm
#

and start arguing about it OMEGADANCEBUTFAST

tender river
#

if your games are on steam you're basically golden

nocturne olive
tender river
#

there are still compatibility problems (like lack of some professional software) but games are not one of them

safe path
#

glueless one day we will get a non-office(dot)com 365 suite on linux

#

like literally it's an office software why in gods name is it so integrated into the operating system reallymad

rough bloom
dry charm
dry charm
#

Oh of course

safe path
#

bika

dry charm
#

Yeah I did an oppsie

tender river
dry charm
#

But don't tell me you do not agree OMEGADANCEBUTFAST

open copper
opaque sigil
tender river
#

switched to linux for good in 2022 though

dry charm
safe path
#

i love linux

#

my life improved 10-fold uninstalling the games that don't run on linux

open copper
#

(so like all games)

nocturne olive
#

I went to Linux because Windows just stopped working completely because of an update

safe path
#

in its place is an emacs config that takes up all of my free time glueless

tender river
#

hi heir neuroWave

nocturne olive
open copper
#

hio

safe path
tender river
#

osu! runs natively, factorio runs natively, and i literally never launch anything else

nocturne olive
olive sable
#

the month of july seams to be the invasion of mods into #programming

open copper
#

my friend was lamenting not being able to get helldivers or vrchat to work on it

nocturne olive
#

I assume malware games with anticheats

safe path
open copper
#

most online games have anticheats

#

thats normal

tender river
#

vr is a bit wonky because its headset dependent

nocturne olive
tender river
#

valve index will work perfectly

#

something like pico may not

open copper
#

that aint nothin
have you seen what thery snuck into borderlands

#

i can never play it again

dry charm
#

VRChat literally 1 click away from support, it is just not enabled SMILE

tender river
dry charm
#

Helldivers is gold as well

open copper
#

it straight up wasnt working for her

nocturne olive
safe path
#

Hmm maybe proton experimental?

dry charm
#

Wait thefuck, vrchat is Deck Verified

open copper
#

i assume it depends on the type of linux

rough bloom
#

yeah, was about to say
I played both of those on Linux a while ago kek
(not with VR though)
-# (a while = 1-2 years ago)

tender river
dry charm
nocturne olive
#

Yeah, and that's why you keep your games out of the kernel

open copper
#

i feel bad for the nonprogrammers switching to linnux thinking they will have a much better time because windows is a fuck

nocturne olive
#

I wouldn't want the devs that make games that run like garbage with 0 optimizations poking at my kernel

tender river
#

well, the thing with linux is its getting better and better but you very much have to be good at googling

nocturne olive
rough bloom
open copper
#

i wont make the switch until i absolutely have to :/

tender river
#

you can try dual booting

safe path
#

yh if you need something that just works ™ , linux is still not really there yet

nocturne olive
#

With how Windows 11 is going, I wouldn't even bother with Windows any more

safe path
#

its inching ever so close though

rough bloom
#

next year is the year of the Linux desktop Copege

safe path
#

steam and how it's done proton removed so much headache from figuring out wine

open copper
#

an inch is a miniscule amount of movement when youre trying to run a marathon

tender river
#

well, many people in this channel run linux and it works for them, windows causes its own kind of problems

open copper
#

one day maybe it will be there heirPray

safe path
open copper
#

as a typical non programmer end user who doesnt even engage with the side things windows has I dont really have enough problems to warrant a switch to linnux

tender river
#

(and not in this channel, haven't seen mito in here)

safe path
#

tbf there's also the fact that many things are just designed without considering linux

open copper
#

yeah agreed

safe path
#

we're just kinda left figuring out how exactly to interface with it in a way that doesn't pain the user

#

like the damn ipu6 cameras on new laptops reallymad

open copper
#

im gonna inevitably come across thigns i want that i just can no longer have if thee switch is made

tender river
#

mhm but the converse is also true

#

its a tradeoff

rough bloom
nocturne olive
#

That's what happened to my Windows

olive sable
#

my brain is hurting from clang

tender river
#

clang clang clang

rough bloom
trim valve
#

it is the time once again

#

hopefully it explodes less under hyper-v instead of virtualbox

olive sable
#

i am the table

#

and clang is the metal pipe

#

named after the sound of it hittin my empty skull

tender river
#

i forgot i have an ice cream

sage crag
#

i also forgot

tender river
#

i will no longer have an ice cream in a few minutes

sage crag
olive sable
#

i am having pizza in a bit

trim valve
#

that's new

#

how have you managed to get into a state where I can't power off my nixos vm 😭

tender river
#

your first mistake was thinking you have any power over nixos

olive sable
#

thats me

sage crag
#

im considering making Io a struct like Allocator

opaque sigil
#

ship it before zig does so you can say you did it first neuroPogHD

tender river
#

i'm postponing work on erf i got a weird new idea a stack based language with first class continuations

opaque sigil
#

that sounds so cursed but i'm intrigued

trim valve
#

I kinda want to mess around with a desktop environment

tender river
opaque sigil
#

i should've guessed that neurOMEGALUL

sage crag
tender river
#

its an API right?

trim valve
#

I might end up using nixos for some rpi stuff and it feels like it'd be easier to debug like this

#

idk really though

sage crag
sage crag
#

mainly because while making operations async with epoll is trivial, actually running them async is hard

tender river
tender river
sage crag
#

vaguely, but i decided that was too much specialisation

olive sable
opaque sigil
#

why are we linking with gcc

olive sable
#

idk

#

i have no fucking clue what its doing

opaque sigil
#

can you send the makefile again neuroPogHD

sage crag
olive sable
#
CXX := clang++
CXXFLAGS := -fsanitize=address -O3 -Wall -std=c++2b -MMD -MP \
            -Isrc -Isrc/include -Imodels/V-nexus \
            -target x86_64-w64-mingw32

LDFLAGS := -fsanitize=address \
           -Lsrc/lib \
           -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lglew32 -lopengl32 -fuse-ld=lld\
           -target x86_64-w64-mingw32

OUTPUT := output
SRCS := src/main.cpp src/shader.cpp src/loadGLTF.cpp src/glcontext.cpp
OBJS := $(SRCS:src/%.cpp=$(OUTPUT)/%.o)
DEPS := $(OBJS:.o=.d)

$(shell mkdir -p $(OUTPUT))
all: $(OUTPUT)/a.exe

$(OUTPUT)/a.exe: $(OBJS)
    $(CXX) $(OBJS) -g -o $@ $(LDFLAGS)

$(OUTPUT)/%.o: src/%.cpp
    $(CXX) $(CXXFLAGS) -c $< -o $@

-include $(DEPS)
sage crag
opaque sigil
#

might wanna remove the targets

tender river
olive sable
#

now it just cant open SDL2 for some reason

sage crag
olive sable
#

deos sdl2 depend on the compielr?

opaque sigil
#

it shouldn't

#

i think?

sage crag
opaque sigil
#

yeah, one giant interface that contains everything that can block the main thread apparently

sage crag
#

hm

#

i think futures are doable in hblang

#

i wonder if its worth the complexity