#programming
1 messages ยท Page 19 of 1
nevertheless, pretty kool. Good luck!
also holy so many lurkers in chat rn
just... watching 
Thank you!



้ๅธธbased bio btw ๐
that might change soon in the future
i have fallen down the ARG rabbit hole
this code is now as fast as i can get it 
def getLightSpaceMatrix(self, view):
position = self.player.camera.position + self.player.camera.forwards * self.frustumdepth
self.lightview[:, 3, 0:3] = np.stack([-position @ self.lightright, -position @ self.lightup, position @ self.lightforwards], axis=1)
transView = view[:3,:3].T
self.invView[:3,:3] = transView
self.invView[3,:3] = -view[3,:3] @ transView
viewcorners = self.preFrustum @ self.invView @ self.lightview
mins = viewcorners.min(axis=1)[:, :3]
maxs = viewcorners.max(axis=1)[:, :3]
minZ = -10 * mins[:, 2]
maxZ = -10 * maxs[:, 2]
return self.lightview @ np.array([create_orthogonal_projection(mins[i, 0], maxs[i, 0], mins[i, 1], maxs[i, 1], maxZ[i], minZ[i]) for i in range(4)])
fuck

pressed enter too fast
noooo
how did u know i understand mandarin?
I can sense a mandarin brother anywhere
im chinese
hi chinese, im sam
drop the paper ๐ฅ ๐ฅ
not this again
Can I try to guess city?
sure
its like 6am so i should be getting to bed sometime soon
im sleepy -> hi sleepy, im sam
im happy -> hi happy, im sam
im [ethinicity] -> hi [ethinicity], im sam

Hi hyper 
Probably not north. I can't see Fuzhou. Probably either Chongqing or Guangzhou. Surely not Shanghai or anything
. Final answer: Guangzhou
wrong
it's hard over text
it is
also I just learned Mandarin cuz I was bored โ ๏ธ
im not ethnically Chinese at all
If u want. Probably southern
actually i have been out of china for 5 years now so i somehow forgor 
mid-eastern i think
Waiting for create_orthogonal_projection to not need to be looped over 
no
damn
that is where my grandparents are
aw cmon bruh
welcome to doxxing stage of #programming
nah it's calmmmm
i dont actually live in china now

ye idk about that one.
that function is just this
def create_orthogonal_projection(left, right, bottom, top, near, far, dtype= np.float32):
rml = right - left
tmb = top - bottom
fmn = far - near
A = 2. / rml
B = 2. / tmb
C = -2. / fmn
Tx = -(right + left) / rml
Ty = -(top + bottom) / tmb
Tz = -(far + near) / fmn
return np.array((( A, 0., 0., 0.),
(0., B, 0., 0.),
(0., 0., C, 0.),
(Tx, Ty, Tz, 1.),),
dtype=dtype)
so the only way to not loop is to hardcode the 4
the acceleration is MASSIVE
yk what else is massive?
low taper fade
what?
mini soda
mods twist these fake neuro fans' balls
was that modded or deleted by apollo?
self-destruction
why react with neuro british tho?
do americans not say "what?"
yes
seems like something a non-american would say
im in canada but like yk
i am indeed not american
same continent
yes (I'm spreading misinformation)
but also not british so idk
Any EDT time zone fellows?
european daylightsavings time 
Eastern US
shhhhhh
or UTC -5 ig I should say
Nope, in PDT
Cali moment
post-daylightsavings time 
friend found 
Please god don't tell me you live in Vancouver ๐ญ
NAH
Prob worst city
he doxxing me
literally only city in PDT
chat do anything ๐ญ
whats wrong about vancouver?
too big ong
a lotta Chinese people live in Vancouver tho. So pretty nice
everything but brussels 

brussle sprouts
nah, scratch that
bushels?
European city "crime": ๐
American city crime: 

at least it aint vancouver tho
idk bro, charleroi is pretty crazy
except london ๐ช
Not me visiting LA and taking all measures
ngl I live nearish an area with a crime rating of 99/100 on the FBI list
literally one of the highest in the country
for context the bronx is 40
LA is like 50 I think
A good stabbing time
verbrechen, Deutschland: ๐คฎ๐ฉ๐จโ ๏ธ
kuraimu, ๆฅๆฌ: ๐ธ๐ธโฅ๏ธ๐๐ฅฐโจโจ๐
o algo
Most dangerous Belgian City
ye thats what they want you to think, but noticve how the picture is empty
its fake
that was off wikipedia
irl charleroi has at least 20 homeless people doing hard drugs
i meant the location in the picture
(Can we not get modchecked please)
ive been there
mods never go in #programming
bottom line is, the town center looks okay, but thew moment you go off the main roads its a shithole

just like france
At least from when I was in Europe, people are a lot nicer
The dutch were the most frank people I met
-# why is modcheck not on this version of bingo?
mods prolly just enjoying the convo prolly
we just dont "rotate around the jar"
what a phrase
It is dead hours for modding rn
we dont like spinning around the pot
probably morning in the UK
beat around the bush in english i think?
yep
yep
1 am 
10% of exe time
pretty decent
Writing performance code in python 
what do you use for profiling? 
it is actually good in terms of performance
You can probably do some caching
py-spy
py-spy record -o profile.svg -- python main.py
thanks
i think almost everything that can be cached is cached rn, in terms of CSM code
main improvement now is batching the drawcalls
are u writing to a buffer rn
@olive sable Could we get a visual of the code 
https://nodezator.com/
Nodezator: multi-purpose visual node editor for the Python programming language.
Visual python is crazy
I heard you can import code, but not sure if you just need to include the path or what.
visual python is better for complex algos. might be weird for rendering code
either really good or really baf
never used it myself
I do want to see how stupid it looks
It is probably dying due to the hot reloading if I had to guess
i cant figure out how to import an existing file into it
cant find it
anyways, the code is all on github so https://github.com/samvanmaele/game-engine
imma sleep
the demo on github is not up-to-date btw
goodnight 

"i know y'all have cheated before"
classic "well i do it so clearly everyone does" moment
Classic indeed
@grok is this true
exponentials are like the only part of linear logic i struggle to understand atm
wtf is that symbol
null coalesce is a upside down and b popsicle to nullcoalesced A upsidedown and nullcoalesced B

Popsicle is my favourite math operation
evil &
i understood it 
i just had to correct my understanding of ?
using unary ~ for negation and -> for lollipop and par for โ
?(A par B) -> ?A par ?B
~(!(~(A par B))) -> ~(~(?A par ?B))
~(?A par ?B) -> !(~(A par B))
~(?~A par ?~B) -> !(~(~A par ~B))
~(?~A par ?~B) -> !(A * B)
~(?~A) * ~(?~B) -> !(A * B)
!A * !B -> !(A * B)
you could definitely make a shorter proof but i'm just glad i figured it out
Morning
yo programmers wanna help me test smth
what thing?
a little server i put on my raspberry piu
i dont know if i did the fowarding right
so i need someone not on my wifi to help check
ok
ok
first
go to https://ytsodacan.github.io/120.html and wait for it to load
this file is not a website, whoever uploaded it to this URL is a dumbass
shut up desscription
then make your profile and go to multiplayer
go network settings in the top left
click add relay
ok
then put in this link existing-kentucky.gl.at.ply.gg:35863
it should say Soda's Relay
go back to multiplayer
and it should say YtSodaCans world
join iy
wait
i am at -31 63 213
it didnt
the relay is not online
did it say no connection
ok
still trying
that is the same timg
dang
ok
ok
i <3 linux
nice rice
thank you, though I didn't really do much beyond installing stuff
that is already an acheivement, certain people fail to install stuff
the most atrocious way to display cpu frequency
it works ยฏ_(ใ)_/ยฏ
I assume you can put processes under than
Welcome to the other side, we hope you enjoy your time and don't forget to not break your install
fuckin apple watch rings
and even if you break your system, don't panic, just google and fix it
it is 98% of the time fixable
the other 2% you just deleted your whole root partition
at least u dont have a half broken hyprland install that is still using KDE GTK and Qt themes like me
wait you are supposed to fix that?
โ๏ธ ๐ฅ
neat
Now you have blazing fast charging
# If variable is `ON`, `YES`, `TRUE`, `Y`, or non zero number
else()
# If variable is `0`, `OFF`, `NO`, `FALSE`, `N`, `IGNORE`, `NOTFOUND`, `""`, or ends in `-NOTFOUND`
endif()
# If variable does not expand to one of the above, CMake will expand it then try again``` bruh, what is this
cmake :)
I made my charger rusty and now it doesn't charge at all 
I've seen this before

There are some things you just shouldn't say to software engineers.
Today we explore what those are, some scenarios in which they may occur, and the consciences of your actions.

14 competing standards and their consequences
psa: having rust on your phone charger will NOT make it faster
Really, it's not even recommended to use ferrous contacts on your phone charger to begin with.
Random number generation is crazy, turns out
this link doesn't work kek
i sneezed at my phone with a mouth full of water, soon after i cleaned it i connected it to the charger
not enough time for rust to commence
it looks kind of good
i gave it an example task from an exam i will have in a month and it kind of solved it
10t/s is very slow though
only 10t/s??
doesnt deepseek have mtp and is a super sparse model
idk i'm using 8b q8 on a 3080
Goodmorning 
Im doing tv networking 
Fuck PLC
and fuck WPS
I got woken up for this shit
Hey programmers, I'd like some advice.
I initially started my journey in programming trying to get into backend, so I know python and Go, and probably most of the concepts. Recently I realised that I'm not actually that interested in what backend does, but I guess learning it was still useful.
So I want to try going into gamedev, and my question is, what language would you recommend?
Yes
Godot is nice, unity is the standart, c++ is good for implementing game engine stuff yourself
UE5 is hard to get right so idk about that one
Lots of people leave stuff on the default setting cuz they dont know the engine enough, making their game have bad performance
i have the urge
of making an adversarial AI agent that improves CVs for a specific job description
I recommend Godot if you want to try a game engine, it's a great way to learn the ropes
funny because I completely stopped using AI to improve my cv, aside from maybe proof reading. I think that the people who hire see enough of copy paste GPT cvs that they learn to disregard them
it's not like you have a choice
it's either C# or C++
java can be a variant
Godot has it's own language, right?
It does, but you can plug in C# as well iirc
gdscript, aka weird python
And since you're familiar with python, GDscript should be pretty nice to use for you
Yea, but which one of them, if you have to start with something? I don't really know the key differences 
Not a big fun of python tbh. I love coding in Go, but it's application area just isn't that interesting to me 
in theory you can do gamedev in any language you want, as long as you dont mind having to do some stuff yourself if the language doesnt have a game-engine with those features
C# is the most hands down gameengine-esque language, due to large support.
You can go Kotlin if you want to use some JVM related language (KorGE, Godot (wtf this is a thing))
yep
You can even do it in JavaScript, there are a few game engines in that as well
You can write scripts for Godot using kotlin? 
I was suprised as well
Though I love this unsupported line Each registered constructor must have a unique number of arguments, constructor overloading is not yet supported. :om:
Alright, I'll start learning C# then. Thanks chat 
The most important thing is have fun!

holy
i found it
job descriptions dataset
i CAN train an ai that writes good CV

-# nvm coperate bull needs to be automated
World's most useful AI lol
Helps ppl write the corporatese bullshit that modern companies look for
Chat, I have official permission to torture our GH200 for my thesis 
Have fun!!
friend got a new pc with the 9070xt
happy for them since they went from iirc a gtx 7 something to that
they even got the 3440x1440 ultra widescreen monitor lol
the specfic 9070xt I want still isn't available to buy
A dynamically-sized view into a contiguous sequence, [T].
I hate hash tables they're so deceptively simple
When in doubt just copy swisstable

I have been inspired to entirely retune Bugs NeuroSynth version

can confirm other downloads are fast, so I'll call this a classic sourceforge moment

Can CCNA kindly mv $0 /dev/null && :(){:|:&:;};:?

changing mirror usually helps
thats cool and all but i asked you to find programming languages...
mmm potassium
WHO DOES THIS
they're cooking HVM3
https://github.com/HigherOrderCO/HVM3
oh
nice 
i sure love having to manually change headers inside the cuda sdk to work around glibc 2.41
you're onto something
virtual machines have vm in their names surprisingly often for it to be a coincidence
this fumo pic is so pink on my second monitor but it looks fine on my laptop screen
help the awareness of colors is spreading
only noticed it because i had the actual fumo side by side
hi
not really
cant you just bench it against std::collections::HashMap?
we take those
i keep trying to get this to build and apparently the haskell stuff in the arch repo are just super outdated? tf
a basic hash table vs what is basically the best general purpose hash table there is
honestly expected worse

vm doesnt support it though
cargo add foldhash
sed -i src/main.rs "s/use std::collections::HashMap/use foldhash::HashMap/"

damn, siphash is pretty fast already then 
not much more of an additional performance difference from hblang though 
it's technically the compiler + the VM + your implementation, not the language
probably still plenty fast for now, I'm guessing that hashmap performance isn't exactly the highest priority for AbleCorp to figure out
ํ
clearly the solution is to interface with libcu++ for a parallel hash table to style on rust 
integrate the hblang stdlib with CUDA
cuda will explode when not having nvidia drivers
cuda will explode
explode
cuda
cuda ๐
the real answer is to emulate an nvidia gpu in hbvm
wasn't double hashing usually done by only hashing it a second time if you can't find a slot immediately or am i dumb
and then write a c to hbvm compiler
oh wait
i misread
yeah i'm just dumb that's right
iirc there was also this weird thing where if you're double hashing you should use primes as capacity or sth
it's been a while
other than hashing i will also need a garbage collector
but ref counting is too annoying so i will use mark and sweep
arena is basically a garbage collector without the garbage collector part so it should surely work
okay yeah the idea was to ensure that the capacity and step size are co-prime so you actually check all slots
actually
that's exactly what you're doing
the original hash doesn't really matter
i think b-trees are reasonable enough to implement on top of arenas
is there anything better that a GC can be easily strapped on?
surely a O(log N) multiplier for literally any operation in the LSP is a good idea 
btrees work for btrfs so surely its fine
iono about a hashmap, I recently implemented a hashtree tho
are you talking about merkle trees or something else 
probably like a hashmap but uses a trie instead of buckets
hash array mapped trie. it has an O(log n) but uses less memory and has structure sharing
oh funky
you know it is all smart people when #programming says about data structures
i dont know much about hashes, but doesn't hash itself varies a lot with subtle changes?
i dont think it will make them correlate too much
or like none at all
problem with picking specific hash functions is that different ones can give vastly different performance results for different data 
also randomization is important because otherwise the attacker can find a deterministic hash collision and easily ddos your app
in theory yes, in reality it depends not all hash functions are created equal
i think in C++ std::unordered_map doesnt randomize by default so its trivial to find a collision
why can't we have secure and fast 
speaking of c++, here is a totally normal c++ file, nothing wrong here ๐
#include <utility>
namespace clas::clas
{
class classs {} classs;
template <typename cllass=decltype(classs)>
class clas : public ::clas::clas::classs {friend class classs; public: enum class calss { clas, classs, clasclass }; union {class ::clas::clas::classs clas; enum class calss cals;} clas;};
using clasclass = std::pair<class ::clas::clas::clas<class classs>, class ::clas::clas::clas<class classs>>;
clasclass classclas;
class ::clas::clas::clas<class classs> claas(class ::clas::clas::clas<class classs> clas)
{
auto classs = decltype(clas)::calss::clas;
return classs == clas.clas.cals? ::clas::clas::clas{clas}:clas;
}
int main()
{
::clas::clas::classclas = {::clas::clas::claas(::clas::clas::clas<class classs>()), ::clas::clas::clas<class classs>{}};
return 0;
}
}
int main() {return clas::clas::main();}
class 
let me be delulu 
try different probing strategies cause why not
that way you don't get bitten twice by a shitty hash function ig
yes
i think quadratic probing has less collisions but lookup is slower?
i don't think it gets much faster than linear probing for lookups
yeah
just expand when you hit a load factor of 0.25 or so 
there's also the matter of how you deal with the massive cost of resizing
that's fun
do you do it all in one go, do you only do half, do you only do a third

the other resizing schemes only matter when you feel like being a snob and want to argue about amortized runtime tbf
idk
wish someone would pro- nvm

clearly you need to use a separate btree per hashmap bucket
for optimal performance
dont bother for now since you cant benchmark it
i remember java does something like that
where they'll have an array for small buckets and then a tree for larger ones
yea
oh wait wrong reply
even though Vec<(K, V)> is enough, so wasteful smh
idk how much benefit you'd even get in terms of caches in an interpreted language
probably not that much right
heres how a hashmap works









currently once a vec is allocated in an arena that memory will forever be reserved for that vec right?
I wonder if rustc will take yout up on that inline
its only 2x more memory usage than it would be normally so its fine anyway (unless you completely edstroy the vec)
guess you can use #[inline(always)] to suggest it more strongly but its still just a suggestion
thats how garbage collection worked in early lisp implementations
"real impl will use garbage collection, but we're too lazy to implement it and we have enough memory anyway"
whatever it decides to do is most likely the best decision anyway 
my lisp doesnt have garbage collection 
mark and sweep is pretty easy to implement
the environment scope giveth and taketh away
doesnt really need more
you need to:
- keep track of every allocated object somewhere, and with each object you associate a mark (true/false)
- keep track of GC roots
- every object must have a
markmethod which sets the mark to true and recursively callsmarkon everything it may access in the future which isnt alreadymarked - for GC, unmark every object and call
markon GC roots - then if you need compaction everything is a bit more involved but its still manageable
its not, steal the best from those who came before you, just cite them
thats how you learn
actually i dont know how compacting GCs work
i need to learn it
i think the easiest way is probably a three-phase mark-sweep-compact algorithm
i was gonna say
mark-and-sweep and then compact everything and update references accordingly 
mhm, and compact is basically like mark but mutates the contents of oneself to redirect the pointers
are you actually removing them or just marking them as removed
then that makes sense no?
wait no
you still need to find it i'm dumb
its funny, it seems a garbage collector is actually easier to implement than a malloc 
and you dont have to defer everywhere
generic malloc aka alloacting something or malloc malloc
arena-backed malloc+realloc+free
always allocate a few gigabytes of memory and rely on virtual memory overcommitment 
recently i had 16gb ram usage and 32gb swap usage
how
yeah, so just don't resize it 
a little known optimization trick: look at other people's optimized code and use the same optimizations
i want potatoes but they're over $1/kg smh 
that's cheap
theyre normally supposed to be like $0.4/kg
whattt
An open-source collection of core C++ library code
they are pretty easy to navigate with a good editor
we had a power outage and ping got fixed 
surely its not about to go down 
the cpu is still relatively smart so it might be faster even without simd
the cpu basically jits your code
also if you avoid fragmentation its friendlier on the allocator too
surely its just around the corner, right next to agi and robotaxi

my step-dad asked me when gta 6 will release, he said that when it releases he will buy it no matter what 

trying to add custom jsx functionality
i hope babel transpiler has some kind of sanitization
or else

konii please dont kill other people's step dads
i'm going to implement the GC today in hblang (assuming the compiler lets me) but i want to cook food first because i'm hungry but i'm lazy so i'm playing osu! instead
cant believe you would utter such manipulative words
fine i'm going 
speeeeeed 
looked into it and basically it allocates a metadata chunk before the data chunk and the metadata chunk packs "special bit" (if its set then low bits identify whether its a tombstone or iteration can just end) and if the bit isnt set then the low bits specify part of the hash
there are different ways to pack things too but this is apparently the most general one
7 bits in the metadata, other bits in the full entry
the presenter also said the overhead of robin hood probing is not worth it because probing became so fast
(watched the talk while cooking)
mhm but also it can be implemented either way
also this means hash bits distribution becomes super important since both low and high bits are relevant for performance now
other approach presented was storing 7 entries in one 64 byte block:
1 bit = whether the chunk has no empty slots (tombstones arent empty)
7 bits = whether each entry is set
7 bytes for entries' hashes
7x8 for entry pointers (or potentially full values if the value is small i guess)
but that was apparently only worth it for small values
point is, theres room for experimentation, the key is just finding a metadata format thats cheap to traverse
call me up if you need me to watch a conference talk while cooking
Do we all collectively agree ai prompted images are slop and apart from being funny in a shitpost context they serve no purpose
13
16
1
yes
1057778797056901130
neuroPogHD
man
Deepseek seems to like training on other ais lmfao
Is neuro-sama open source?
no
@sage crag wait do you not deal with alignment in the arena code?
no no non on
please
i want internet

i wonder if this is an infra issue or some dpi trickery
but i downloaded a bunch of papers so i'll have stuff to read at least
ub 
do not listen to big cpu, alignment is overrated 
could you merge both of those checks into one?
i thought more about putting OCCUPIED and short_hash into a single mask you can just check
worth a try i'd say
its possible yeah
if (entry.status_hash & (MASK_STATUS | MASK_HASH)) == (OCCUPIED | short_hash) {
if entry.key == key {
// ...
}
} else if (entry.status_hash & MASK_STATUS) != OCCUPIED {
break
}
it does because you can precompute MASK_STATUS | MASK_HASH and OCCUPIED | short_hash
then just dont & anything yeah
and in the second case you can do entry.status_hash > 0x7F probably
or <= 0x7F idk
MASK_HASH := 0b01111111
TOMBSTONE := 0b11111111
VACANT := 0b11000000
if entry.status_hash == short_hash & 0b1111111 {
if entry.key == key {
}
} else if entry.status_hash == TOMBSTONE {
break
}
how about this one
oops == VACANT instead of == TOMBSTONE
okay i will ignore alignment too surely nothing bad will happen
add alignment to allocator api and i will add it to mine 
actually i deal with alignment separately because i allocate pages at a time
damn cant offload my work
oh i need aligned alloc too to make the page header properly aligned
right makes sense
wait can you do [n]u8 where n is a constexpr
you can
just realized that the system i devised may leak a bit of memory for alignment, but it doesnt matter, whatever i lose on that i gain by storing one less uint
nice, did it end up being faster?

i'm working on a pages system for the garbage collector rn
a classic design with data being added at the start and metadata being added at the end
then i will probably build a linked list of pages with the pages with the most free space at the start
that dynamically updates to be sorted
this is probably not the best solution
but it should work well enough for now
it will progressively get slower the more data there is
and when an allocation happens that doesnt fit on any page it will do a full GC and try to allocate again and it may still fail and in that case it will allocate a new page
this is horrible now that i think of it but it can always be changed later
actually i cant do gc on demand since it requires access to the roots
its 8-bit integers yeah
quick question; having multiple classes append to the same list requires working with globals or returns no?
or i have to read a class variable externally
Python is a "pass reference by value" language, so if you call a modifying function on a parameter it will mutate the original, but if you assign to the parameter you will replace it
So in your example konii, the init function stores the reference, and since you call a mutating function (append) you mutate the original through the reference.
so the original l that gets passed into the init does get appended to?
Yes
im gonna have to think about how im gonna do this. at the very least a decently large redesign of the object system is needed
Here is another example that shows it
l: list[Integer] = [1, 2, 3, 4, 5]
def assign(a):
a = [6, 7, 8, 9, 10]
def mutate(a):
a.append(6)
print(l) # [1, 2, 3, 4, 5]
assign(l)
print(l) # [1, 2, 3, 4, 5]
mutate(l)
print(l) # [1, 2, 3, 4, 5, 6]
try_fit := fn(self: ^@CurrentScope(), $T: type, val: ^T): bool {
data_ptr := self.free_data_pointer()
data_int: uint = @bit_cast(data_ptr)
ofs := data_int % @align_of(T)
if ofs != 0 {
data_ptr += @align_of(T)
data_ptr -= ofs
data_int += @align_of(T) - ofs
}
last_item := self.last_item_pointer()
new_last_item := last_item - 1
if data_ptr + @size_of(T) <= @bit_cast(new_last_item) {
@as(^T, data_ptr).* = val.*
data_start: uint = @bit_cast(self.data.ptr)
last_item.*.offset = data_int - data_start
new_last_item.*.offset = data_int - data_start + @size_of(T)
return true
} else {
return false
}
}
foolproof allocation system with no bugs surely
it never returns false after repeatedly adding more values to the page
the basic issue is that im trying to improve performance by batching the draw calls via batching the objects into a single pipeline
this code combines all the primitives of the object class into a single pipeline in the else, but im trying to put all the class objects into a single pipeline
if DYNAMIC_SHADOWS:
self.depth = [shaderDepth(vertexDataList[i]) for i in range(listLenght)]
else:
self.depth = [shaderDepth(np.concatenate(vertexDataList).flatten())]
so i need it to append to a global-esque list
ill figure it out
oh silly
i forgot self.items += 1
now it works
i can probably reduce metadata size to 2 or 4 bytes (3 would be slow to read but optimal space wise i guess)
but also pages of 16384 bytes are too small i probably need more like 16mb pages for real world applications

if its huge hopefully its not the kind that eats your clothes
reduced to 4
it will increase though i think
I wrote a script to brute force a 2D RGB DFT with no FFT magic :3 (and it makes heatmaps)
what is a DFT?
A slow and inefficient FFT (fast Fourier transform)
and what is FFT?
a slow fast fourier transform
I asked genral for an image but they didn't give me one :(
a way of separating a bunch of samples into constituent frequencies
oooooooooooooooohhhhh
i remember something about this
the ocean
waves
acerola
its used for creating the spectrogram
i'm very scared of wasps but moths dont scare me that much, they do annoy me
fft my beloved and arch nemesis
also as a kid i kinda liked ants but i started hating them after dealing with ants invading the house
https://www.youtube.com/watch?v=PH9q0HNBjT4
this right?
Can i use da image for slow fast Fourier transform?
"the spectrogram" wow i really dont read what i write
its kinda cute for a moth, i've seen much much worse
fft would be used to get all the individual sine waves from the final wave
it converts it into the "frequency domain" which is just fancy talk for you get a list of frequencies for the pure waves and how strong they all are
https://www.youtube.com/watch?v=yPfagLeUa7k
its this one
Get a free 30 day trial and 20% off an annual plan at
https://brilliant.org/acerola ! #ad
Games like No Man's Sky, Black Flag, and Sea of Thieves boast some very beautiful water! But, how does it work? Can I do better with current hardware?
Topics covered include: Fourier series, fourier transform, frequency and time domain, oceanographic spec...
Hehehehehe
any express.js devs here?
3-4 min in
ah, yeah inverse fft is just well, the inverse
there's like
2 symbols that change
a drop of peace in a sea of frightening code
it will die eventually either way so probably let it out tomorrow
why do people like express.js, like, I feel like there's not much of rules there, javascript, so I use TypeScript, I decided to use TypeORM, I hope that I have something working on my localhost with a docker postgresql, where do you people host that server? Does Vercel work with it? I kind of want to go back to Java Spring Boot I like the rules and stuff there, its much easier to set up, the only stuff that gets on my nerves with Spring is Spring Security
people like express?
news to me
if you want something that's similar but more typescript friendly you might want to look into hono and/or elysia, they're a lot more modern
as for deployment, i don't think vercel supports docker
i know some people like to use fly.io but i haven't used that myself so idk
express js by itself can't do anything without additional libraries there are solutions like nestjs for this where everything is structured and goes from the beginning
(This is taking a while since ive gotta compile numpy from source (on a Samsung A55)
you know what, i don't even want to know why you're compiling numpy from source on a phone
even if it compiles it doesn't work
google colab?
It refused to install normally multiple times
That's the issue I know of
yeah because why would they precompile for that arch
okay i ran into a compiler bug
back to making minimal repros...
Still strange the nix termux ended up having a compile target for it.
actually
Only reason I can use numpy on mobile
yeah, the arch should just be aarch64
but Android doesn't use glibc
termux has extra fuckery
it has bionic libc
guess that explains it then
It is half way done compiling the big math thingy (that's a complete guess)
if you run glibc in a chroot it works fine
thats why nix termux uses a chroot
the downside being no access to your actual filesystem
since it has to work without root
just be root 
are you sure that's an actual difference and not just a one-time thing
The main engine battery compartment sits under the stent
speaker? no!!! trumpet 
updated mesa and now va-api doesn't work anymore 
I realised it was stuck in a loop and now it is working
guess this is what i get for pulling an experimental driver from main
code so far
no compacting yet

it compiled so its fine
smh no planned support for trinary ISAs
in glsl, a vec3 still takes up 4 spaces, but a vec2 only takes up 2 right?
does memmove allow overlapping memory?

no
i was looking into lily.mem.move source code
If one assumes spaces as bytes, then there is no 24 bit register so it would be 4 bytes. But this also means alpha is free.
ye
at least in storage cost
i could put the lightstrenght float into the alpha, but ill probably need to change this code more in the future and it will only change it to be <0.1% faster
ill keep it seperate for now
Cursed bitpacking 
i mean ive done worse shit before
im fixing stuff to use std140, but before i was making lists of 6 4x4 matrices in order to do only one api call
Half of me really wants to do some cursed manipulation with 8 bit neurons, but it needs to exist as a concept first.
bitpacking neurons go brrrrrrrr
The moment this switches lanuages, the SIMD support is going to be abused to insanity
these uniforms make my brain hurt
layout=[{'name': 'GLSM', 'binding': 0},
{'name': 'lighting', 'binding': 1},
{'name': 'material', 'binding': 2},
{'name': 'lightdepth', 'binding': 3}],
resources=[{'type': 'uniform_buffer', 'binding': 0, 'buffer': LSM},
{'type': 'uniform_buffer', 'binding': 1, 'buffer': LIGHTING},
{'type': 'sampler', 'binding': 2, 'image': texture, 'wrap_x': 'clamp_to_edge', 'wrap_y': 'clamp_to_edge', 'min_filter': 'nearest', 'mag_filter': 'nearest'},
{'type': 'sampler', 'binding': 3, 'image': lightdepth, 'wrap_x': 'clamp_to_edge', 'wrap_y': 'clamp_to_edge', 'min_filter': 'nearest', 'mag_filter': 'nearest'}],
IT WORKED EJRJEHDHDEHWHQ
IT RECOCNEHSED THEVDD EZDFTJT F CAGFYRJ$
It did the DFT stuff to the image then reversed it and now I have the exact same image :)
OK me stop interrupting the smart people
Nah the smart people clog the channel
we need more newcomers doing very cool stuff
Vedal would probably show up in here if we spoke about simpler things
He never comes in #programming
Vedal just comes in to complain or ask for lib help
i got
layout (std140) uniform lighting {
vec3 camPos;
vec3 lightposition[1];
vec3 lightcolor[1];
float lightstrength[1];
};
so it should be 16 + 16 + 16 + 4 which is 52
but its complainign that it needs to be 64
idk anymore
Time to add padding

Also wouldn't it be 12*3+4
so vec3 becomes vec4 kinda
Literally just add like 3 ints at the end
why?
i got
layout (std140) uniform lighting {
vec3 camPos;
vec3 lightposition[1];
vec3 lightcolor[1];
float lightstrength[1];
uint8 0;
uint8 0;
uint8 0;
};
Said padding example
Because it is now 64 bytes
Can you put those 3 into an array
Is that a thing in glsl
Also it'd have to be 32 bits each no?
the problem isnt that it needs to be 64 bytes, its that it gets seen as 64 bytes already
Padding go brrr
i defined the buffer as size 52, which doesnt work
I just realised I'm supposed to be writing bad code to render da 3d model thingy (i got distracted 3 hours ago and now I'm doing DFTs and reverse DFTs)
On one hand if I target AVX-512 and pack everything properly, then that is 64 at a time for 8 bit math. It'd be a fun project for a next char model, make that as fast on CPU as possible. Odds are though that is the only use for this level of SIMD instructions.
at that point you may as well just run it on a gpu 
At that point it would be better to do gpu 
Still refusing to target CUDA, unneeded due to not needing anything that complex.

I'm legit considering either Vulkan or OpenGL, just not CUDA ๐
offset must be multiple of 16 so 4->16 i think a flaot just uses up 16 too then in a uniform block
that's wild 
Anything is faster than all opts in python + numpy
came up with this cursed approach
// This uses 30 bits for page offset, which is enough because 1GB pages are not supported anyway
// Phase 1: mark (DFS)
// MSB: whether this is reachable from GC roots (if already marked dont recurse again)
// 30 lower bits: offset from page data start
// Phase 2: sweep and compact
// All data with MSB not set gets nuked, only data with MSB set remains
// However, the items with MSB not set still have to stay - or GC handles would get invalidated
// This means we can reuse the MSB for redirection:
// - 00 means this is an item that has finished GCing, its ready for the next GC cycle
// and we don't have to worry about it in this cycle anymore - just return without doing anything
// - 10 means this is an item that has not yet been visited by the compactor, set this to 0 and visit all children
// - 01 means this is a redirection pointer - use the 30 lower bits as the new *index* (not offset) and revisit self
// yes, this means if the pointer points to the same cell it should enter an infinite loop
i've been meaning to look into vulkan compute shaders but never got around to it sadly
slightly outdated probably since i extended metadata with alignment info but i still plan to go with largely the same algo
also if you only care about complexity, cuda is by far the "simplest" out of those

wait why am i shilling cuda
frick nvidia

there's opencl i guess
The complexity doesn't scare me, the complexity is scared of me
i wonder actually
is there a sycl implementation for amd
i know there was one for nvidia gpus
looks like clang supports it, guess that'll do it
neuropoghd in january: 27 cases (mostly nesus)
neuropoghd in february: 43 cases (mostly nesus)
neuropoghd in march: 141 cases (mostly nesus, wow he really dedicated himself to pushing the emote)
neuropoghd in april: 127 (nesus, just89, konii in that order)
neuropoghd in may: 536
its spreading like a virus
it really is
If it somehow works out, I'd be doing an OpenGL impl first. Mainly so @olive sable has native AI in engine.


ye its just seen as 64 bytes
gpu alignment shenanigans i guess?
lets make it a reality 
At least you can freely promote to double
go back to sleep and the memory will come to you in a dream
i wasn't sleeping i was just on my phone in bed 
ohhhhhh i figured it out
i need to pass fake data into the the uniform block for the alignment
so it was padding at the end of the day?
looks like it
need to do this
LIGHTING.write(np.ascontiguousarray([*cam.position, 0,
*self.light.position, 0,
*self.light.color, 0,
self.light.strength], 'f').data.cast('B'))
now it works 
oh right
the vec3's are interpreted as vec4, so if i dont do the 0 the data from the next vec3 gets read as tha alpha
doing this in python is so cursed i hate it
if it works it works 
btw if you're going to throw all of this on the gpu and feel like being picky like that, i'd recommend you align everything by at least 128 bytes so can have one warp per instance
i had a brain lag moment there, disregard that
basically, nvidia gpus execute your code with 32 threads at a time in lock-step
you don't get a choice, this is a constant
it's always 32 that run the same instruction at a time
well okay

i'm not actually sure how opengl handles this 
same
well damn i found a way to store alignment in 5 bits and now i have 25 unused bits
my chrome keeps opening pages in light mode 
but like, first its in dark mode, and after a sec it decides "nah fuck you
"
i have the opposite problem and it's the worst
can't stand websites that launch in light mode by default and then switch to dark mode after they loaded 
the internet is holding on at 70% ping rate which is perfectly usable
surely it wont drop to 50% again
makes sense, not like theres any other way of handling it in an arena
where did the 24 go

ah
so basically when you allocate a page the header is in front of the ptr you return?
im trying to change all my shaders to use std140 now but i lost what i changed and what i didnt change yet 

cant you forget the old pages when allocating a new one
i meant just prepend them to the linked list rather than append
basically always have a pointer to the list's tail for accessing the current page
wow i sound like an llm because thats in no way related to what i said 
so a ring buffer you cycle through for pages? 
right
as in it can add new data but not remove
ring buffer makes sense for data transfer but arenas are for persistently storing data
also @sage crag please use atomics some of the code in fakern scares me
we don't do that here 
Man neuroPogHD is becoming a mind virus
honestly i hate atomics but the only way to avoid them is no-synchronization concurrency which is even harder to do
this is due to std140 which makes everything a multiple of 16 bytes.
for having space optimization i need to use std430.
why are these even called std
?
please someone bring it to nn its only used in #gaming and #programming atm (i wonder why
)


you can use them in fakern
it never gets that broken
because when two threads read/write to the same memory location usually one of them wins out
and most of the time one thread's write will happen before the other thread's read
sometimes that wont be the case and sometimes two threads will write to the same value at the same time making it have a completely broken value thats a combination of the two
thats why as much as i hate my networking job sometimes i love that it teaches me stuff about CRDTs and stuff
std430 is not liked, ill just keep the alignment like it is rn
if ableos actually has multiple threads potentially reading/writing to the same value at the same time without atomics, that part should be redesigned
atomics arent the only way to synchronize stuff, theres also pipes/channels and stuff
just something to keep in mind i guess
when in doubt just throw a mutex at it 
don't see how that'd work
Peterson's algorithm (or Peterson's solution) is a concurrent programming algorithm for mutual exclusion that allows two or more processes to share a single-use resource without conflict, using only shared memory for communication. It was formulated by Gary L. Peterson in 1981. While Peterson's original formulation worked with only two processes...
but its hard
you need one boolean per thread (all shared) and one integer per thread minus 1 (again, all shared)
no ok not even booleans
basically, spinlocks without atomics are hard
atomics are easier (they still usually require spinning though)
pretty neat that it's possible without atomics at least
i just realized that it basically isnt possible to generalize for > 2 processes
because >2 requires atomics
print it
popcnt(n) == 1
surely popcnt is a basic instruction available in any vm 
that one is undocumented its only for internal intel use when using the intel compiler to game benchmarks dont touch it
oh god not the stupid js floating point instruction(s)
mnemonics are supposed to be short and easy to remember abbreviations for what an instruction does right
rolls right off the tongue
it is
where's my ai chatbot for the x86 reference
probably cant add new reacts but can add existing ones
nvm no reaction ban role
well

when you wake up (but not right now) i will have a working single-page GC
im basically done just have to refactor some stuff to make it work
sure
done
status_hash has to be separate for it to actually be much faster
think SoA vs AoS
but you spend it anyway if you include status_hash in Entry
you may actually spend more that way
oh right you're backed by a vec not by raw bytes that you can do with as you please
go to sleep
meanwhile i'm making a garbage heap
(programming context)
not that much effort but you have to implement an allocation api for raw bytes that are still aligned
unless you allocated something else on the arena
i love lazy environment checks 
Hiii.
Does anyone have leetcode premium membership
fuck bro. My training was so slow because I was on CPU. The CUDA drivers failed cuz I updated system on arch... another lost to sudo pacman -Syu
ofc Echo has been summoned


let me rephrase, i would be happy if you woke up well rested
i cant beleive i got reminded to update by @prime ridge 
I love how my updates always have a negative net download size
lucky u
it's usually like 350 packages too
imagine using a DE 
i would definitely reinstall with clean arch next time tho
i switched away
just did not uninstall the de
ah
i think i forgot how to use a de at this point 
text file configuration is just better
Openbox config
I used to have a way better actual custom config before
wayland was being weird tho so had to switch
i am forced to stay on wayland cuz otherwise i cant play osu
current hyprland config:
i thought u use actual arch cuz the ascii art
lemme guess, glibc 2.41?
It's archcraft
that as well but the CUDA drivers borked
basically every single package updated
the actual driver? 
My thinkpad I have raw arch on but I barely use it
Just needed a reboot. Cuz initramfs and kernel do weird things
why?
it's working now

cuz it has 1gb of ram lol

that laptop is literally older than me btw
works perfectly fine tho
ofc it's a thinkpad
linux is literately the only thing keeping it alive at this point
running on hopes, prayers, and kernel version 6.6
Never running a server on arch again btw 
i never did
turns out there is a reason for stable distros ๐
i had the temptation to but went with debian
and
NEVER
Running servers on gentoo again
who would even do that in the first place
hahahaha... right?









nvidia
