#Rosy
1 messages · Page 18 of 1
What did you do with the funding? Is it actually in cash?
Some of your customers might go belly up
that's how VC fun raising rounds work afaik
I probably can't talk about what we're doing specifically
but I can vaguely tell you that vc fund raising is all cash
as a lump sum?
I'm just thinking if the funding isn't literally cash in the bank it might go poof
well, of those customers that we have we are allowed to publicly disclose they are unlikely to go belly up
and the ones we can't disclose are even bigger
and if they go under
it's pretty much another great recession or worse
I hope you don't
I hope I do 
as much as I don't love my job, it's nice to be in banking
I am just trying to live slim and save big so one day I can lose my job forever
Same
aren't we all lol
true enough
What's Autodesk's exposure to AI?
I wouldn't think it would be that much
I guess you probably can't say
Here's what I will say, because it's all public, we didn't do much during the initial wave of AI hype but we kinda pivoted a bit harder into it in 2025
Hence the increase of grumbling in the ASO channel
And my decision to apply for grant money was not independent of these developments
I wish you luck on your grant application!
if Maya gets AI features I can't turn off I will hate it lol
so I haven't made any changes yet, but the relative orientational stability on the other side of the track where the normals are roughly the same I think confirms my suspicion about the plane normals fighting each other, and I need to detect the correct normals more accurately and interpolate them
Is the track a spline by any chance?
yes
the spline isn't defined in my code like it is in your game
I defined mine with Houdini nodes
Ah cool
so how are you getting the normals?
are they generated by houdini?
the normal that goes to the side there looks kinda messed
I plan to, but right now I am using a cross product of the vector from one point to the next
well it is a cross product of a cross product
p1 - p0 = forward, then right is the cross product of y up (which is an error) and forward, and the normal is the cross product of right and forward
so do you calculate the two face normals that touch the vertex then lerp them?
One thing that is nice is to blend between them based on the ratio between the areas of the two faces
I actually want to generate the normals in houdini since I want loops and twists in the track
it's an antigrav track
it should be like a roller coaster
me too
I lurk in a bunch of threads, and I click around ones that I'm not following and read them too
I felt like I was spaming people threads too much and cut back a while ago
I'm using houdini because I don't want to get bogged down into building an editor again like I did with my previous project, idk, editors are cool though
I also really like using houdini
I could see myself just doing stuff in houdini if I ever got tired of programming my own engine
Houdini looks nuts to me lol, but people seem to love it
yeah there's a lot to it
I'm gonna try keeping the orientation logic off while falling to see if that helps with the initial instability
So does the vehicle steer automatically?
no I use my xbox controller
so what is the orientation logic basically?
oh so when the vehicle is on the track I want it to orient itself such that it is aligned with the track
so if it is going up a slope
it is oriented as if it is going up the slope
We are working on a really similar problem right now
literally the bézier stuff I was talking about
this is for your flight path for your bird?
Yeah
amazing stuff
at any given point a Bézier curve has a defined normal and tangent
which you can use to construct a matrix or quaternion
So you just gotta find the closest point on the bézier curve
Which is what I'm working on right now
that's really cool
there's a thing called Plücker coordinates, which has this thing called "m" called the moment of a line, I am thinking about also
I dont' know if it's useful for orientation honestly
So is the curve a Bézier (or similar spline) in houdini?
possibly a b-spline?
or Hermite
I'm relying on some houdini features for bezier curves and I get (and can define) some variables I can adjust, so it's not my own math
I have done my own hermite curves though in my foundations project
with tangents
A bézier curve is fully defined by its control points, so maybe you can export those from houdini?
I am using a feature called "Curve U"
via resample node
I am exporting just the points
via a python script
I then use a mesh shader to draw the track
using the points
and the physics using the points
I will export the normals too
oh, maybe you can just export the normals from Houdini
oh you literally were typing that lmao
it's not really houdini exporting them, more of a python script that reads the values from the attribute wrangler node
it's just track, you can drive it anyway you want
once I have an actual race game play yeah I will want tangents
the tangent is probably more important for your case actually
What is your coordinate system btw?
I have some code I use all the time you might find handy
just your basic opengl right handed y up
-Z forward?
yeah
quat co_math::look_rotation(vec3 forward, vec3 up)
{
assert(!co_math::contains_nan(forward));
assert(!co_math::contains_nan(up));
vec3 f = forward.normalized();
vec3 s = cross(up, f).normalized();
assert(!co_math::contains_nan(s));
vec3 u = cross(f, s);
quat q;
auto sum = s.x + u.y + f.z;
if (sum > 0.0f)
{
float a = sqrt(sum + 1.0f);
assert(a > 0.0f);
float c = 0.5f / a;
q.w = (a * 0.5f);
q.x = (u.z - f.y) * c;
q.y = (f.x - s.z) * c;
q.z = (s.y - u.x) * c;
}
else if ((s.x >= u.y) && (s.x >= f.z))
{
float a = sqrt(((1.0f + s.x) - u.y) - f.z);
assert(a > 0.0f);
float c = 0.5f / a;
q.x = (a * 0.5f);
q.y = (s.y + u.x) * c;
q.z = (f.x + s.z) * c;
q.w = (u.z - f.y) * c;
}
else if (u.y > f.z)
{
float a = sqrt(((1.0f + u.y) - s.x) - f.z);
assert(a > 0.0f);
float c = 0.5f / a;
q.y = (a * 0.5f);
q.x = (s.y + u.x) * c;
q.z = (u.z + f.y) * c;
q.w = (f.x - s.z) * c;
}
else
{
float a = sqrt(((1.0f + f.z) - s.x) - u.y);
assert(a > 0.0f);
float c = 0.5f / a;
q.z = (a * 0.5f);
q.x = (f.x + s.z) * c;
q.y = (u.z + f.y) * c;
q.w = (s.y - u.x) * c;
}
return q;
}
you might need to modify this because it's left handed
but you just feed it the tangent of the track and the up vector (+Y)
oh that looks a bit like my code, except with the conditionals
well
just the first part
auto sum = s.x + u.y + f.z;
what's this doing?
oh
I understand
s is a vector pointing along the x axis, and u is pointing along the y etc
you're trying to find the axis in which your forward is pointing the most to
basically yeah
You may need to flip some of the signs for right handed
aren't you right handed?
nah ASO is left handed
you point into the positive z?
oh, how come?
I dunno, it felt right
I picked right handed because my essential math and every other book I have used it and I gave in
Thats a fine reason
I don't know a lot so I don't want to make things harder for myself
There's not really an advantage either way
yeah
well in my case I can follow the math in my books a bit easier
although essential math is z up 
thank you for this I will add it to my notes
I guess I have the Unity coordinates and you have Houdini, which is nice for your workflow I bet
oh true, man I guess I lucked out, I didn't even check that
but yeah the track looks the same in houdini as it does in my game
What did you change?
I added ray intersection to surface plane to test to get the track normal, and then I made it so that each ray used the same normal for the torque applied to it
so basically better track normal detection and then using just one normal for all the orientation torque
I have a suggestion to make it less wobbly
sure! what's your suggestion?
current_normal = lerp(current_normal, track_normal, 1.0f - expf(-rate * dt))
oh yes that makes sense
that will smooth it out
I think part of it is that I am not applying torqe to all the points sometimes, when one of the rays gets too high so its distance from the track leads me to not think it is over a surface, and that causes all kinds of problems, if any of the points gets orientation they all should
like if I go too fast up a slope
the two points at the front will be so high they think they're not on the ground anymore and I stop orienting them
and then the torque applied to the rear points dominates the vehicles full orientation
what I need to is apply gravitational torque to those front points
so they rotate the vehicle back down using the gravitational force * mass of the vehicle I think
I'm going to try your lerp also
I will try your lerp first
You don't simply apply torque at the center of mass?
no
well
it ends up being the center of mass
I take the cross product of the point in local space and height error
times a hover strength
it works
I have a lot of 4d math
cross product is 3D obviously
So is there gravity on the vehicle?
there is when it's not on the track
the track triggers antigrav
so the gravity is the inverse of the track normal
Ok, I was thinking, what if you always applied gravity
then the track added a bouyancy force
and you apply force proportional to the distance to the track at each of the 4 corners
when they're too far away from the track
or well they don't detect they're over the track
and when none of the points are over the track it's just y up gravity
I had gravity and it just complicated things, but that was before I fixed all the bugs
does your game apply gravity to the bird?
Physics are fun 
well I think it's something I can fine tune later
I'm sure you will figure it out, but it's eepy time for me
thank you for your help, hope you have a good sleep
Thanks 
definitely smoother, but still a bit wobbly. my biggest problem is just still when the ray is too far from the track and isn't intersecting. I will tackle that tomorrow
so I think the source of instability in the orientation is due to equally applying torque to all axis and I need to account for the dimensions of the vehicle. I noticed the instability is all along the z axis, and I need to dampen the torque by ratio of the length, width and height of the vehicle, so the torque needs to be applied in the vehicle's object space
so I think I will try that today
like if I apply the some amount of torque to the z axis, the force of that rotation will cause a greater rotation when compared to when that force is also being applied to the x axis and its impact for the rotation along that axis. This is I think similar to the angular momentum that a figure skater uses to go faster by bringing their arms in closer. that's the theory, I will have to see after work
I'm going to spend a lot of time on being able to customize the vehicle
this looks so cute, like a little crab on wheels exploring a trail 🙂
small steps
the wobble is gone but I'm having trouble with the orientation still for some normals
I think I just need a graviational force and collisions and that will solve it, because it gets stuck hanging in the air and orientation isn't going to solve the problem
are you going to automatically re-orient karts if they get flipped over?
made it so I can hold my left shoulder xbox controller button to run physics only while pressed to debug issues
I haven't actually even looked at what its size is, it's probably criminal
I just keep adding to it
oh it's not that big actually since it's just a bunch of pointers to additional memory, I allocate the subsystem contexts separately,152 bytes
I'd hve to add it all up
you know
I think I will
I mean if you only have a few of them active at any one time...
yeah there's only 12 racers at a time rn
but even if i had 100 racers it wouldn't matter
yup
lol
this is just the application context including all the sub system contexts
my overall memory footprint is tiny since I don't support textures
I don't think I'll support textures in this game, it's just going to be all vertex colors I think, at least for the forseeable future
I dont want to load bmp images or write png/jpg/exr loading code nor bc transcoding code rn
or generate mipmaps or do any of that
I think that also includes VRAM assuming that's VS
I probably spent a month or more on just image work in my last project
my ram usage is also something absurd like 3GB because I allocate a ton of vram that I only use like 4% of
my engine punts the image decode logic to stb_image and dds_image
i don't haev any build-time image transcoding
I currently don't have any dependencies outside of windows and vulkan headers
and the C stdlib
you think that's something?
alright I have now added a timescale to my physics, and I can adjust it with the xbox controller dpad, and I can speed it up with the right shoulder button, and I can toggle my UI with the controller start button
I also added a bunch of ui helpers to debug vectors and improved my ui code to make it easier to add debug text
and I can of course step through my physics by pressing the left shoulder button when physics are disabled
I just have the thing spinning to test these changes
I honestly don't know what to call the "vehicle"
I don't want to call it a car or a pod or a ship
I really don't like either of those things
but I am tired of calling it a vehicle
it's not a car and it's not a pod
those are debug lines 😩
hovering personal transportation apparatus
how about gort
what are roller coaster things called, cars?
possibly hovering automatic transporter
hrm
anyway it's a cuberoach
alright enough writing debug and utility code, time to make progress
the new frakenstein movie on netflix is really cool imo
I liked it a lot
haven't added persistant gravity and collisions yet, but I got orientation working so well now though
the reason it gets stuck in mid air is because it's not close enough to the track to apply any force, and that's because of conditional logic that applies gravity, but it should just always have gravity and collision detection will allow that to work. I was just removing gravity when I detected it was on the track and did not add any collision logic but that's obviously not working out
but the orientation is now very close to being good
I need to make the track bigger, it's not easy to drive with how small and narrow it is, I still have collision work to do but have made a lot of progress, I think making the track better is more important now.
increased the scale of the track in houdini and then added a UI slider to change the track width. I'll need to add smaller interpolate track point values so physics works
then I need to fix my third party camera since the code for it is still from before I had any of this
tracy has LLM AI support now
also support for republic of china 🇹🇼m
yeah I don't know what rocprof means
profiler for rocm probably
ROCm is AMD tooling
rocm is amds cuda, no?
yeah
the whole gpgpuverse
I added collisions to the vehicle, but the camera needs them too
i plan to raycast from the kart to the camera and snap the camera to the hit point if there is one
but i haven't done that yet
I need to get the orientation for the camera correct as well, and make it less nauseating
I just do my collisions with rays now
because it is a hovercraft I have steering and propulsion when falling and it hardly ever collides now because of high it hovers, so when it does collide it's pretty rare
I don't have any drift and if you stop giving the vehicle power it will not slowly come to a stop, I need to separately attenuate the player propulsion. I need to do that separately otherwise it will not apply steering to previous contributions of player supplied velocity
I want to add banking to enable drifting
I definitely did not build any of this from first principles lol
but it's much better than it was when I couldn't do really anything at all
i implemented my camera kinda like an NPC that is programmed to look at stuff and maintain a distance away from its focus
it's not attached to the kart that it's following
when you boost the karts get a little extra distance from the camera and this comes for free due to how I implemented the camera
I noticed that I was paying close attention to your camera
I'm happy with my progress this weekend, I think camera collisions and then working on the camera orientation is what's next. It should always be looking at the skimmer (I'm going to start calling it that I think), from a little bitg of an elevated position looking down
once the camera is better I'll generate more points to smooth out the track
oh in Houdini I can add a resample SOP after my wrangler and maybe use it to sub division my curves
all my physics code is in a single function called p_integrate_forces_with_dt, it's about 180 loc
I don't hate it
it just generates two values:
float4 total_linear_velocity;
float4 total_rotational_velocity;
It does also have the side effect of stopping a collision when it detects one by moving the hovercraft back when there's penetration of the track surface
it moves it back along the normal of the track
by the inverse of how far it penetrated past the plane
well the inverse of the distance to the plane
which is a negative number
I like the name "skimmer" 👍
Thanks!
I used to think people who used C were weird tbh, like how could you program anything meaningful with just C
Hasn’t been an issue though, I don’t like find myself limited or anything ever
My c++ style is basically c-like
I do definitely prefer C++ for a variety of reasons, but structurally it's easy to translate back to C if I had to
Probably the #1 thing is just having math types, that's definitely a big bonus in C++ for doing linear algebra and stuff
Namespaces are nice too
I don’t miss operator overload because I use clang language extensions for vectors and matrices
I multiply matrices and vectors with *
I still get enough mileage out of the other features to prefer C++ but if I had to use C I would be perfectly happy for the most part
i use a lot of templates
I also get division and scalar multiplication
I don’t need meta programming
My polymorphism solution are tagged unions
Works for me idk
if I used C, I would be bitter every time I came across a problem that could be trivially solved with a C++ feature
Like what
that's how I felt when I was changing the glsl backend for shady
well right now my screen is covered in c++-only features
Oh you did shady stuff?
Neither did mine 
at work I wanted to make a resizable array of structs, but because that part of the codebase was in C, our resizable array (that we NIH'ed becasue C doesn't have one) only stored pointers. so I had to make an object, allocate it, and manage it's lifetime instead of use something like std::vector
we aren't allowed to import any 3rd party code
Where the did you work lol
Idk I think I like C mostly so I don’t have to learn C++ stuff
references, namespaces, lambdas, templates (and metaprogramming), the stdlib (I use so much from it), constexpr, range-for, exceptions, destructors, C++ libraries like glm, jolt, etc.
in C you namespace just be prefixing the functions
indeed and if you look at nabla glsl you know what that leads to 
random thing I found
nbl_glsl_sampling_generateSphericalRectangleSample
the annoyingly complex rules of name resolution in C++ do serve a useful purpose
You’re mixing snakecase and camelcase
Of course it’s horrible
Oops
that's not my code
Replied incorrectly
my codebase contains the wonderfly-named SingleAudioRenderBuffer_t_readwritetrack
using foo_bar_ for namespaces in C is as good as it gets in C
xlib doesn't bother to namespace anything, so you better not have a type named "Color"
at least modern C libraries have the decency to namespace stuff
I think all those C++ features are nice but in my case I just don’t seem miss them 
I try to namespace everything with p_
Sometimes I forget
I use namespaces everywhere and C++ ones are better than C because you can using some of all members of a namespace so you don't have to qualify them in a context where they're being used a ton
bjorn namespacing a function
oh thanks tenor
References I use everywhere too
That’s exactly what I look like
Templates and lambdas I don't use often but when I do they're pretty irreplaceable
Stdlib use for me is 90% std::vector which replaces most uses of malloc in C
my ECS works entirely using templates. tbh it's pretty cool but it also means adding a scripting language is basically impossible
it reads the function signature of your system, extracts the types, and builds the queries automatically, along with doing parallelism checks by building a graph of resource usages and dependencies
I'm using entt (100% templates) and I was able to add scripting language support
mine's welded to the C++ type system meaning if I wanted to add a scripting language I'd need to codegen trampoline code in C++ to hook it up
the trick is to generate separate functions for operations like adding and querying components
oh also I use reflection to generate that stuff btw
and I use none of it btw (I have a single 4-line test script in my game)
struct FishingBobberSystem {
struct DataProvider : public RavEngine::FPSScaleProvider, public RavEngine::WorldDataProvider, public RavEngine::OwnerProvider {};
void operator()(DataProvider& dp, FishingBobberComponent& fb, RavEngine::Transform& t);
};
eg this is what a System looks like. the DataProvider lets you access global resources (along with informing the engine about it so that it can properly validate), and the rest are the components you want to use
my mind cannot comprehend everything being visible to everything else all the time
well that's what i'm trying to limit with this setup
all of the different dataproviders are opt-in and each one has a different level of checking that's required. ie the FPSScaleProvider requires no checks, while the WorldDataProvider prevents the engine from scheduling anything else when that system is running because it could make arbitrary changes to the world
the components in the query allow the engine to detect read-write and write-write conflicts between systems
the checks are automatic, and they've saved my ass repeatedly because I keep forgetting what my own rules around thread safety are
so presumably you have some epic automagic graph thread scheduling thingy for system updates
how much parallelism do you get normally
less than I would like because it turns out it's hard to parallelize a game
I would expect most systems to be extremely cheap and one or two really phat ones
that's how it be in my game
sometimes they are trivially parallelizable things which is nice. means I can just use std::for_each + std::execution::par
if I was doing this in C i'd have to put the checks in manually and so I would forget to do it
idiot-proofing for myself
the lack of static type safety in C makes me shrivel
when my stroustrup-goldberg machine finally compiles, I can at least be reasonably sure that the types aren't fucked
uh and I love me some destructors
this is off topic
panopticon pattern
🇮🇲🇵🇷🇦🇺🇩🇪 of @solid grove using flag speak ❤️
I have always have found type parameter syntax for generics to be unreadable across every language that has the feature. Maybe a small brain skill issue, but I don’t want it in my personal project. I think some people love type theory more than they love building things and that’s the reason they actually use it.
I asked in the past about reflection and meta programming amortization and I get shrugs. You would think given the cost of the time sink this investment in research, writing, maintaining and compiling that code requires there would be a clear and compelling case to make.
you usually write that part once and then reuse it everywhere, its not like these systems have to be reinvented every time
That’s a nice story
yeah, some stories are true though 🙂
but its also ok to hand wire serialization everytime from scratch
There’s definitely cases where it is very valuable
And the tradeoff is clear
My plan is to use python to write C in those cases I think
Yeah wouldn’t require a python runtime and environment if I did that
And I wouldn’t have to worry about python changing over time
shrimple generics are perfectly readable imo
c++ template abominations are a different story
would you be willing to show me an example of a simple generic
std::vector
no I mean the type def
I think the use of auto for type inference is very cool in C++
I think clang has __auto_type for C
I don’t think you can use it in function signatures tho
I have a single template <typename T> in Rosy I used for determining equality for floating point values
I think I could have just used auto maybe
__auto_type behaves the same as auto in C++11 but is available in all language modes.
TIL
I'm gonna start using that jfc
thank you!
I gotta look at what else there is
if there are references
I'm going to use those too
#define let const __auto_type and now you’re writing rust
__nullptr is an alternate spelling for nullptr. It is available in all C and C++ language modes.
Clang supports _Alignas, _Alignof, _Atomic, _Complex, _Generic, _Imaginary, _Noreturn, _Static_assert, _Thread_local, and _Float16 in all language modes with the C semantics.
what's _Generic
c has auto too since c11 no?
C11 generic selections
Use __has_feature(c_generic_selections) or __has_extension(c_generic_selections) to determine if support for generic selections is enabled.As an extension, the C11 generic selection expression is available in all languages supported by Clang. The syntax is the same as that given in the C11 standard.
it’s a cut-down version of templates that they added to C
ok
In C, type compatibility is decided according to the rules given in the appropriate standard, but in C++, which lacks the type compatibility rules used in C, types are considered compatible only if they are equivalent.
Clang also supports an extended form of _Generic with a controlling type rather than a controlling expression. Unlike with a controlling expression, a controlling type argument does not undergo any conversions and thus is suitable for use when trying to match qualified types, incomplete types, or function types. Variable-length array types lack the necessary compile-time information to resolve which association they match with and thus are not allowed as a controlling type argument.
I'll try using this see if I hate it
I keep meaning to read the C spec, I don't even know what's in the language
and they're only getting better with concepts and whatnot
I love how you can set up a concept to use in place of a typename
Yeah concepts make them downright comfy
so I can have stuff like template <std::floating_point T> and it's implicitly clear the type is only valid for floating point types
yeah concepts are pretty cool
I like type constraints
for generics
I know I am contradicting myself, but I am allowed to do that in my thread
😄
taking up tab space on the chrome title bar for the gemini button is mindblowing
that's worse than copilot in edge
precious tab space!
I use Brave on mac and Edge on windows
I should have been using auto all this time
yeah concepts are nice
but also they are like the most convoluted way to do generic constraints ever
which is a very c++ thing to do
Average Firefox w
not using vertical tabs
Unfortunately they did add this useless context menu entry
I need to figure out how to remove it
I just use LibreWolf these days
ditched ungoogled chromium since they didn't account for manifest v3
I’m still a Firefox diehard
Yeah its the least worst browser I've tried
LibreWolf sounds like it might be nice
All browsers are terrible though, since the web is inherently terrible
yeah, though the literal minimum you can do is download the fork of your preferred browser that has the worst shit ripped out
hence why I've been on ungoogled chromium/librewolf
does that even matter much? ublock origin lite works fine for me
i'm not switching from arc until someone else figures out proper tab management
i use adnauseam, its built on ublock but instead of hiding the ads it clicks on all of them
whatever happened completely broke youtube for me, maybe switching from origin to lite will fix it but I'm already on librewolf so whatever
i bought yt premium monday a week ago : /
yt didnt load anymore with ublock origin, no matter what i tried
Still works for me hmm
Yeah I’ve been using ublock origin with Firefox on YouTube for years and it’s never not worked
Try updating your filters?
tried everything
but, now i have premium for a year, if its back to worky then then ill cancel
Some people talk about IP banning smart TV ads or something does that work for YouTube too
with an external dns filter, like pihole ye
i never got it to work on the same machine, a pihole (or similar) filters for your whole network, since you set them up as your dns pretty much
The thing is I almost exclusively listen to music on YouTube in incognito mode so YouTube premium doesn't really help me
I also can't log into Google on my work network it's blocked
vpn?
i wouldnt mix private stuff with work stuff anyway
fair
They are right to block google anyways, I would get more work done lmao
just bing it :)
for youtube i basically exclusively watch on my phone with revanced
Can't run VPNs on the network either it's very locked down
you guys are on fedramp yeah?
Idk how it works internally
Our parent company sells cyber security as a service so it's mostly their own infrastructure afaik
yeah
it's very locked down
you can have a slack for example, but it has to be a fedramp slack
GovSlack is FedRAMP High authorized and runs in an AWS GovCloud data center operated by U.S. personnel
We use Microsoft stuff mostly that's all hosted in the CONUS
Been using premium for years
It s worth it
i dont need any feature of it, im not using it on mobile, i dont need download, i dont need playing music when mobile screen is locked
no shit
Yt music is like a better spotify
ublock did a very good job with blocking ads
and i dont listen to anything mainstream either
and what i want to listen to is not on yt music : >
a lose lose situation hehe
i got yt premium only because it's like $1/month where i live
as much as i hate giving google any money
downloading videos on my ipad for long flights is nice too
yeah i absolutely wouldn't pay for it at that price lmao
i'd probably just stop watching youtube and get back so much time
i wonder how odyssey is doing these days
honestly yea lol
would totally move to some remote town in patagonia if i could get a nice remote job
how is it better? spotify is alright ig
and help 🇬🇧 to write software which helps them conquer fire land
i'd rather not rely on it for music but atm i cba to build up my own library
At work I got a jira issue for a request for some work to do and after dilligent research we determined the request was not possible due to a third party API limitation and then we got a resonse from the person who filed the issue who said yes you can do it and pasted in a chatgpt hallucination
smh
We really need to demolish the datacenters that make this shit possible 
i hope this fucking bubble implodes soon
Things have been a bit choppy since august, but it's too early to tell if we've peaked
well if all these astronomically scaled and expensive datacenters don't produce the results that pay off the datacenter construction fees, which seems unlikely that anything possibly could, it will happen then
Alot of them are sitting idle because they can't power them lol
and by the time they come online, the chips will be obsolete
~~let them pay for the electricity themselves and not people who live around them, oops 8️⃣ ~~
ah yes huge ewaste centers
Those gpus though, I would buy a couple surplus
they really should streamline the process, ship from the fab straight to the landfill
And we know they will have the chips destroyed instead of resold
because doing that is cheaper
Honestly probably ship them overseas where a small child will harvest the DRAM out of it 
Was gonna say we could repurpose the data center buildings but they’re constructed to such a low quality standard that they’d need to be torn down
let them use the datacenters to fold molecules, predict weather or cure diseases
have you seen the gpus
not sure they would fit
wall mounted gpus
you underestimate me
they fit right under that big ass mixer board thing, you have in the back of your room
ASO in 16K
16? only?
64K & 144 Hz?
HDR69
would 4 x 4K monitors be 16K?
and async compute to mine bitcoins (reales) 
When spotify removes a song because of rights stuff
You shut up and take it
When youtube does it a random person will reupload it
And you can listen
Yt is legal piracy
Because yt music includes songs uploaded by people on yt proper
This also means the library of obscure music deccer loves and spotify wouldnt touch is far larger on yt music
Thus making the service a perfect fit for deccer
For example
It would be impossible to listen to this absolute banger on spotify
I hear so many fireworks...coz it's bonfire night.
Yay finally i get to edit yurika and sumire ver!!
I prefer moe tbh..sorry remi!
This was requested by 2 ppl.
Credit to Lily Shirogane and I edit!
Credit to ako for inspiring me the editing!
If you don't subscibe, I'll suck your blood!!
~Yurika Sama~
But on yt music I can
This vid is the only one I m aware of containing it I think
i still like you fly
We like what we like
Tldr is yt music is better than spotify because yt music has everything spotify has and more
it doesnt have my audio plays, spotify has them
You ll build a new history and library in no time
And the real real benefit of yt premium is having no ads wherever you decide to log in
Like on a tv, console etc
You dont have to install adblockers on your router
yeah, it still takes a second to load, like it started doing when they added adblock-blockers for some reason
you should have ad blockers on your network to block any ads for any software tbh, not just buy yt premium 🙂
I think this is possible actually!
absolutely, stuff like pihole
You can do almost anything if you feel like tinkering
a fair point
i've just had spotify on a family plan since forever so no reason to move off of it
i'd rather not use any streaming service tbh and just download my own music library, gotta do that sometime
but spotify is pretty good for music discovery sadly
it's weird they have simultaneously the best and worst recommendation algos
financially rewarding google for shitty practices...
reaching levels of smh never before thought to be possible
after I switched from chromium based browsers youtube worked again
if only firefox was less meme
What's meme about it
devs aren't testing in firefox anymore
it's just a matter of time before it's unusable
and becomes another chromium browser
support for most of the fun browser apis takes forever
I’ve been using Firefox since the days when it was single threaded and there was no tab isolation and I’m gonna hold on
gl
afaik still no webgpu support
I'm rooting for you
and a shitty js engine
It’s enabled in dev branch and you can enable it manually in about:config
I tried it and it’s complete enough to run Unity webgpu builds
i'm also not giving up arc's tab management, though ig there is that one ff based arc clone browser
nobody needs browser features, it needs to render html
yeah also you can just ignore firefox not supporting a feature since nobody uses it
this is true
a lot of corporate policies also ignore firefox, and (force) use edge by default
though it’s been quite a while since I’ve had a site not work in Firefox
if only
at work I use whatever browser the company tells me to because it’s not my computer so I don’t care
does it work now? mdn still says partial support
then again mdn says it's also partial support on chromium because it doesn't work on linux 
I recently removed a bunch of JS from my website, most of the pages now are just html and css
I did have to make a simple static site generator though because the evil web people won’t gives me HTML includes
I think mdn docs being the go to source for browser dev is probalby how firefox is clinging on
very funny that the only browser that shows up as having full webgpu support now is safari of all things
mdn is great tbh
Yep, even works in mobile safari
ye
meanwhile ff on android 
might get it in 2035
i still use it cause it's the only mobile browser that supports ad blockers afaik
still using a browser on a phone in 2025
still using a phone in 2025 😄
the only thing I do with my phone is music, podcasts, sudoku, work slack and discord
sometimes I review a PR on the github app
i use it to track parcels for pickup and when my family members need IT support -,-
oh and order coffee
masochism
mobile websites don’t have to be ass but nobody seems to know how to make one
I made the imgur mobile website in 2015
it was good
me and three other people
I think one of the top traffic websites in the US at the time
they might have massacred your boy
wish i didn't tbh
they did, imgur is dead now
i almost don't
it's basically a music player and occasionally discord tbh
i'd probably get rid of it if it wasn't for literally all communication relying on whatsapp
the constant bing and rumble on my fone because of some chat app would drive me crazy
istg i hate that fucking chat app
mine is on silent all the time
I muted all notifications on my phone except for text messages
600 unread messages of allah
Yeah mines silent all the time too I always get phantom vibration syndrome when I have it on chronically
also, keeping the device in the pocket is weird
weird how people stuff their pockets with all sorts of shit, im just weird i think 🙂
Yeah my pants always get holes in the front where the shit in my pockets wears a hole through the outside
Have u considered putting shit in the toilet instead of ur pockets
I stopped carrying as much in them because I realized it was contributing to my back issues since my phone is big enough that it limits my hip flexion
Jeans have shallower pockets these days
I used to have no trouble carrying like 12 things in my pockets
My phone is 7" and it's not a problem on its own but with shallow pockets it is
they should bring back not having to be reachable 24/7
dont trap yourself in these kind of arrangements, say no
remember when 7" was a small tablet 
Civilization managed for 10,000 years without 24/7 reachability
I want something halfway to a flip phone
I'm torn because it would mean getting rid of discord
tbh i'm already halfway there i mostly don't look at my phone for hours at a time
lol this channel has become general-2
sorry bjorn
Maybe a custom android ROM that is ultra locked down and leaves discord as the only distraction
lmao that's like complaining that ceasing smoking means you won't get cancer
this is now offtopic 2
opengl-4 you mean
it's called uninstalling all brainrot from your phone
i quit all the social media bs a while back and it made my life better
10/10 embed
us office worker attire 101
It's the only pants I wear
in beige too? like your carpets and walls? 😄
I only wear basketball-style shorts with deep pockets. My legs are freeee
I have different colors
I'm wearing a black pair of jeans I have rn that I normally keep clean but am wearing in between replacing my everyday jeans and they have 9" pockets which is excellent
The rest are like 7" or something I'll have to measure when I get home
can't stand denim
with a reserved pocket for a caliper
he has invented beige 2
I like natural fibers but the pants I wear outside of work are ripstop nylon cargo pants which I like a lot too
i keep reading " as seconds
511 is good stuff though
I ain't going to no rodeo or wrangling cattle
the crypto mines
If you can't carry a ruler in your pants pocket I don't want them
I should just extend the pockets on the pair I just got
first piece of the exoskellington
my psp fits in my front pockets and that's about the biggest thing i'd want there
anything bigger would be annoying even if it did fit so it just goes in the bag
Fun fact, I have used this ruler to do optical alignment of flight hardware
I call it "pink elementary school ruler metrology" when discussing it with others
you work on planes?
Airborne and spaceborne lasercom HW
Yes lol
do they go pew pew tho
No unfortunately
huh auto works, nice
#define choose(T) _Generic(T, \
int: "int type", \
const int: "const int type", \
float: "float type", \
default: "other type")
int main() {
printf("%s\n", choose(int)); // "int type"
printf("%s\n", choose(const int)); // "const int type"
}
C:\Users\Bjorn\projects\code\c_generics>clang -std=c11 -Wall -Wextra -o gx.exe main.c
C:\Users\Bjorn\projects\code\c_generics>gx.exe
int type
const int type
I can do reflection
lol
I can use this for my math library 
I see it's just a type switch
but that's pretty awesome
oh it's a fully qualified type switch
#include <math.h>
#include <stdio.h>
typedef float f32;
typedef f32 float4 __attribute__((ext_vector_type(4)));
typedef f32 float3 __attribute__((ext_vector_type(3)));
#define vec_len(v) _Generic((v), float4: vec4_len, float3: vec3_len)(v)
static inline f32 vec4_len(float4 v) {
return sqrtf(v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w);
}
static inline f32 vec3_len(float3 v) {
return sqrtf(v.x * v.x + v.y * v.y + v.z * v.z);
}
int main() {
printf("%.3f\n", vec_len(((float4){1.f, 0.8f, -0.2f, 1.f})));
printf("%.3f\n", vec_len(((float3){1.f, 0.8f, -0.92f})));
}
C:\Users\Bjorn\projects\code\c_generics>clang -std=c11 -Wall -Wextra -o gx.exe main.c
C:\Users\Bjorn\projects\code\c_generics>gx.exe
1.637
1.577
still have to write out the definitions
hrmm
idk
interesting
auto and decltype/typeof are awesome features
can't use auto in a function parameter in C, which makes sense
C's version of meta programming is worked into macros I guess
a typeof makes sense in a macro I think
_Generic does not exist in C++ and neither does typeof so these are different languages
you can't write C in a C++ file, you can only write C++
Yes... yes... I can feel you getting tempted by C++, even though you started out by saying you didn't miss anything writing C 🙂
well what I think I tried to say is that I didn't understand how anyone could write C and now I feel like I'm doing just fine being productive with C
Yeah, I guess you did say something closer to that hehe
yes I don't doubt I gave the impression that I also kind of meant what you said
In the kinds of applications where I've actually written C for real (mostly embedded) I never even missed having C++
because you care so much about the exact memory footprint and execution of the program that you can't really afford to use any abstraction at all
that makes sense
The last thing I worked on I couldn't afford to even do one extra floating point arithmetic operation
what ISA?
there wasn't an FPU? or something like that?
that's a single instruction in x86-64
No there wasn't
It had this exotic coprocessor that was better at that stuff but I couldn't really be bothered to use it
it was a pain to set up and there wasn't a C compiler for it so I just used the regular CPU
The coprocessor had a very limited and specialized ISA for doing certain calculations so there just wasn't much point I guess
It didn't have control flow or anything like that
Just banging through a hard-coded bank of commands on repeat
that's kind of cool though
yeah it was a neat device
dual core
never programmed a multicore device bare metal before
in c++, auto parameters are syntactic sugar for a function template
it's basically equivalent to function overloading but without horrifically complex name resolution rules
I disagree in that C++ offers many zero-(runtime) cost abstractions and ways to make them, or even negative cost features like constexpr
For what I was doing there wasn't really any negative cost anything it was pure arithmetic at high frequency
acting on external inputs from an ADC and writing back to the DAC
I don't think Demon said C++ couldn't be used, he said he didn't miss C++
jason turner had a cool talk about writing c++20 code that ran on some old processor, I think a 6502 or something
which is kinda what I said too
which is being interpreted as an attack on C++
or something
it's more like wow C can be useful
Yeah I know it can run on anything, that's what Elias is using for the PS1 stuff etc
and not like C is better than C++
I know
I'm just saying that c++ offers a lot even for code that runs on pathetic computers
Even if you can't use 80% of it
Well most of what you can't use in an embedded context is the stl
We're talking about code that accesses random magic-number addresses in a memory map and stuff there wasn't really anything to abstract it was just pure procedural code mostly issuing register reads/writes and then some arithmetic
I think it may have had a C++ compiler but it only supported C++98 or something
Every arduino library I've used for an external device abstracts away the magic addresses
Yeah they were abstracted in the sense that there were macros and functions for them and stuff
but like it's not like I needed any data structures more complex than a flat static array
I would have remembered if I ran into any instance where I wished I had access to C++ but I distinctly remember never having that feeling
And some devices have a contract that the program must uphold or you risk getting bad data or damaging the device or something, and libraries can abstract that away too
That's just from my limited experience with arduino tinkering
I couldn't use any conditional control flow either because I needed cycle-accurate deterministic execution time
Under those constraints and doing such a constrained task one basically doesn't need anything besides some structs for basic data organization and arithmetic/assignment
Yeah I'll agree that if your program is very small and simple, you don't need much abstraction
And embedded device programs tend to be in that category
We see enough awful premature abstraction in hello triangle already 
There's only so much software floating point trig you can do in a 100kHz loop on a 200MHz microcontroller
I was slightly surprised that a 16MHz Arduino uno could do srgb->oklab->srgb in real time (with emulated floats)
I was controlling an RGB LED as you might imagine, and no, the result was not interesting
neovim can't color auto correctly in C :(
why is it two different colors, it is semantically the same thing
my C is too advanced now 😩
regarding the previous convo, I'll try to refrain from c++ evangelism in this thread since it can be annoying
well I still don't want to be the smug "this problem you're having would be trivial to solve if you had THIS c++ feature 😏" guy
I feel like I'm just as annoying when I talk about compile times
I'll be happy to express my thoughts within the confines of C
newer versions of C add great features like you showed
yeah I'm excited to find uses for them
and they extended the cstdlib to have threads and sync primitives
so you don't have to use OS APIs for those anymore
yes that's awesome, I just used those win32 job things to save time, I need to rewrite it in C
are you using #embed yet?
I was kind of experimenting with how mt might improve my software rasterizer at the time
no I am not using embed right now, I hope to have live reload for my shaders and files and stuff I think
oh yeah, that will make it harder to reload stuff
Yeah shader hot reload messes stuff like that up
it's also a pain when you are using an API with an external shader compiler
I'm sure it's not that bad I've never tried
with GL it's just trivial since you literally just load the shader again as you would on init
I'm using glslang's api so I can reload shaders as simply as one would in opengl
I had shader reload in rosy, it's not hard
it has a C API btw
well it wasn't hard for shader objects I guess
I guess it's not hard for graphics pipeline either
I just have to recreate it the way I was recreating the SO
I don't use SO anymore
they're dumb
it almost gives you nothing, you still have to maintain the entire graphics pipeline state, and you still have to bind something, the shader objects (as opposed to the graphics pipeline) and you still need a pipeline layout anyway
write a couple of helper functions for a graphics pipeline and it's same amount of effort to change whatever you want
afaik shader objects were something nintendo mostly championed as a way to make porting dx11-era code to vulkan easier
that's a myth, that's the myth that got me to try vulkan
then it worked
that with SO, vulkan was now just fancy opengl
it wasn't a myth, but rather a bait
that's what happens when you're a newb and you think people on discord who know a bit more than you are right about everything
by the time I realized they were wrong it was too late
:\
nintendo wrote the renderdoc SO support so I don't doubt that something like that is true I guess
I'm interested in the SO rework in progress
I'm surprised nintendo gives a shit about dx11
it's not like they shipped windows games
I guess dx11-era would mean any apis from that time
but they do have a compile path for their games that produces windows binaries because outfitting the entire dev team with console devkits is expensive
in fact they accidentally shipped one of these
this build path is used even more extensively for launch titles because the hardware isn't ready but development on the game cannot be held up by that
zero runtime cost
high sanity cost
you should make this a camera option tbh
Feeling cute, might delete later
nice
finally bought the book, I really need help lol
a friend of mine sent the author bugfixes for his first edition 🙂
that's a cool thing to do
indeed, author was happy too
Nice book!
you recommended it, that's why I got it, looks great
Haha, I remember! Hopefully it ends up being useful
indubitably
I keep rewriting my camera, I think I have a good plan that makes sense in my head now though. I will just have the camera follow the player at some distance on a rail on the center of the track that's oriented along the track normal. it sounds just the easiest intead of some fancy camera that follows the player
the easiest camera is always the one that's parented to the player
but it's also the worst feeling
the secret to good cameras is always in the easings used when following the player and reacting to the action
but if you really want an easy camera parent it to the player
it will move wherever the player will move
when the player rotates, the camera rotates with it
I don't have any sort of scene graph right now so there's no means by which I can parent anything
I'm not sure I'm going to have a scene graph for this game
your camera is really great
I'm taking notes
unless I add NPC skimmers to race against the only things that move are the player's skimmer and the camera
and the vehicle itself is just always going to be a static mesh
that's why I decided to make this game, it doesn't need a scene graph and it doesn't need textures or images
I'd have to make gltf parser, which requires writing a json parser, a png & jpg & exr decoder and basis universal compression 😅
I think though all those things would be easier than writing my own physics
which is what I'm doing now
since I could write tests for those things and then make the tests pass
and then it would just work
why write a gltf parser use assimp or the parser everyone else here uses #1019965526434394173
my only dependencies right now are win32 apis for window management/input/threads and vulkan headers
hoping to keep it that way
also this is written in C
I could have C++ deps with wrapping though
would be tough with highly templated libraries like gltf parsers are
there is cgltf
you could also write a python script for whatever DCC you use that exports data in a simple format for you to read
why is it bad?
and there are tools like compressonator which have prebuilt binaries you can run to make block compressed textures that don’t require any meaningful parsing to load, you just give the data to the GPU
it's bad because when I used it, it didn't use integer indexes into nodes, meshes, etc, it used pointers
so I would have no idea what a particular mesh's actual integer index was in the gltf, especially if it didn't have a name
it's just allocating a bunch of memory with pointers to pointers
it was horrible to work with for even a trivial thing
my little enderman in blockens was parsed from a gltf with cgltf
it's not fastgltf
the nice thing is I build all my own assets so I can just build a custom thing that just works for me, I'm never going to have to build a library that can work for anything and follows a spec to the letter
that goes for images too
I'm going to rely on win32 for audio probably
I'm not going to NIH audio
famous last words
I think windows has a built in midi api
yeah it does, I've played with it before
it was recently reneweed even to support midi 2.0
even sent midi signals to my keyboard
handmade hero uses win32 for audio iirc
but it used some legacy thing
I will look at that
pretty sure there is some default thing for playing audio in windows, I've seen it as one of the backends in soloud
i had fun with this on school computers back in the day
There’s even Spatial Audio stuff https://learn.microsoft.com/en-us/windows/win32/api/spatialaudioclient/
yeah there's 100% a real audio thing
wav files and flac files are easy to parse yourself too
midi lol
yeah various "hacking tools" too, sub7 and hack-o-mat et al 😄
midi is fun
oh i was learning programming by basically messing around with wondows apis and being an annoying little shit
real ones remember Beep()
fuck yea
on winxp and older it used the pc speaker which was great because it meant you couldn't mute it 
in high school C++ class I made battleship as a final project and used Beep() and Sleep() to play little tunes
cue 12 year old me leaving the school library and 5 minutes later all the computers start playing shitty unpausable music
like when you sank a ship
Sound and Sleep were my intro to actual programming in Turbo Pascal too
a friend of mine programmed Micheal Jackson's Moonwalker with it, funky color output too, before that i only fiddled with gw and qbasic
of course i quickly learned how to make programs that didn't show on the taskbar or tray and gave them important looking exe names...
i was basically writing harmless but annoying malware lol
oh maybe I'll make a beep in my game to start with, like when you reset and when you plummet off the track, just so I can have any audio at all
you should not use beep, it's awful
should've continued down that path, maybe i had a bright future as a security researcher
even using the midi api is better
sending you my amazon gift card codes
beep is global in the entire OS, so you can't stack them
I remember trying to use multithreading and even spawning subprocesses to try to play chords
but you ended up as a weebdev
but I never could
yes 
you chordnt
quite the downgrade lol
fr, who knows maybe i can actually get into giraffics after uni
you can't stop the beep is what I'm hearing
I think my users will love it
I can read their minds since it's just me
you can now
every windows version since vista it just uses system audio iirc
most pcs don't even have the shitty post beep speaker anymore
nice