#programming
1 messages · Page 239 of 1
uh*
either i make it also a pop up where u can like expand it or not and put it left side
or something else mayb
like if u are only playing with keybinds then u can minimize the shop
or already finished placing towers
there's also the problem with my game being fixed pixel ratio and anyone with a smaller screen than 1920 horizontal is screwed but i'll deal with that later...
I think it should be automatically minimized and appear when you press "open menu" key or hover your mouse on it.
hm, so for example make where this is like a "Shop" button, and on hover show the shop? And as long as mouse is in the shop area keep it extended and once mouse is out of area for x seconds minimize it?
or what do you mean
Right, exactly that
Maybe not even "seconds" but instantly after mouse is out of it
ic
So you can always get it minimized fast
okok, i'll focus on the upgrade part first and then work on the left side after ig
onto mspaint i go unless theres a better program for me to go make a ui panel lol
It will work for now, you dont need it to be mona liza quality yet
actually i'll just use gms' built in
what is that
cryptic messages
Disassembled dll?
obfuscated calls, presumably with warbird
Holy
I don't know why the pitch sounds wrong to me but that's like wayyyy better than I expected
Now I want to work more on the Teto cover but I have a dataset to build and stuff
Finnish Evil actually sounds really cool
Just looked at the waveform, I have literally no idea how this doesn't clip
smth like this?
lines are separators for the stats idk if theyre needed per se
text box for tower name then image
then upgrade and sell button
oh well
time
I really wonder why my Chess bot is so slow
Even with 4 recursion it's way too slow
Is the Chess API SO supposed to have -O3?
This thing loses on time with 15 minutes
limited
limiter
Seems silly
I usually don't have to push my volume down that much
I don't want to worry about weirdness making my audio sound bad
ye as i said this is part of mastering
you don’t have to do that but someone probably should if you’re releasing a song
it’s just a big part of my workflow and besides i literally didn’t do anything crazy i just put pro-l 2 on the master and changed the preset to “transparent”
Well I have no clue how to do that but stuff like Raise up your bat works just fine
i mean releasing a song as in properly, like with streaming services etc
Seems silly
I could never release a song anyway, I don't have the creativity for it
this is how strong it is
god
i don't know how it doesn't sound like crap
oh it does kill the drums in the instrumental though
alpha beta without anything else is pretty fast up to depth 4 (4 plys)
5 is too much it starts thinking for 30 seconds
pure alpha beta VS pure alpha beta, nothing else. 5 and 8 seconds
depth 4, static evaluation on depth 5, no quiescence
print amount of beta cutoffs after each move, maybe it doesnt get cut off properly
the number is supposed to be high
however your negamax looked fine.. 
did you make piece-position evaluation and tried without mobility evaluation?
Weird
I think that sounds pretty accurate, though mine might be slower than whatever yours is
Actually no 4 steps is still pretty fast
dont go higher than 4 without transpositions and iterative, its too high
Though it also gets completely destroyed by my older bot with no recursion
show new eval
Looks about like this
you only evaluate your own positions but you also need position of enemy pieces
i mean piece positions
Oh
it probably sees that your own pieces are in good positions, but enemy pieces get +0 for position. but enemy can be higher
therefore wrong board evaluation and bad moves
So like that?
looks good
It loses EVEN FASSTER
huh
maybe it doesnt work if you dont have checkmate check
it lost a bunch of pieces too though
I do though no?
something aint right
This checks if the move of the playing player resulted in a checkmate and gives the move infinite score
So after the move is made it checks if that made checkmate
do you have "no-piece" table for piece positions
[piece] can be 0
but pawn is [1]
If getPieceFromIndex returns a null (yes I fixed my bindings) the iteration of the loop will be skipped
Pawn is PieceType.PAWN
which is 1
We don't have enums as numbers here in glorious Kotlin land
We have enums as types
Pretty simply
so if it got beta cutoff...
it returns -inf?
which makes the upper alphabeta think that this move is super good because it leads to enemy making super trash move
you need to return beta after this
i think
The Chess programming wiki said to return bestValue and that happens at the end already
no you just break
hmm right

I think it's called a fail-high

im confused now
Either way why does this bot suck more than the non-recursive bot?
it makes bad plays intentionally something is wrong
Well it would be great to know what
you think i have enough layers already?
sometimes you need to perform Q-searches or extend the current search after reaching a fail high etc
it's why those terms exist
add even more with automations 
(plz don't)
Is that how much audio it deletes?
it ducks the volume but uhh in a way that isn't very perceptible
Looks pretty significant to me
i'm not sure how exactly maybe hayleigh knows, is pro-l just a regular limiter with tp?
and all of these mastering limiters
Either way I have no clue how to do anything like that so I don't care that much
it doesn't sound the way i expect that many layers to sound, definitely too much
i mean if i turn it off the drums are way louder
oh so the martin garrix layering is not good?
yes lmao
I'll just stick to mixing deep and adjusting the volume until good
the fabfilter one?
yeah mastering can be done separately if you don't want to learn it you don;'t have to
yeah
like do the "mastering" limiters do anything special besides true peak
Seems useless to me
very important
it is actually a very important aspect
Eh, never needed it
That results in this
good mastering is why this doesn't sound like a huge mess (even though it is apprerantly a huge mess)
Somehow lasts longer
5h of mixing can save it
wait
Maybe your old bot is super good
It doesn't even have any recursion
And it constantly makes stupid moves
It just throws its queen away to get like a pawn
@rigid snow i worked with alan walker once... his layering and over compressing is way worse than martin garrix even
overcompressing is fine 
Like what should I even do? -eval or +eval?
i always used to be better at like techno rather than bigroom anyways
5 randomly picked demos of mine 
i really like the second one
doesn't that make me a princess of techno?
perchance
Where's the audio on that second one?
it's there it's just -2 lufs (not joking) 
the fluff the second one doin lmao
What is a lufs
the master chain being literally 13dB peak into a hard clipper
sounds... surprisingly fine for what it is
dam
Guess I won't know then
*eval
?
oh i thought we were combining calculator symbols with the word eval
This is Chess bot
array of evals 
My Chess bot is werid and sucks and we can't tell why
pointer to an eval
zoomed in, it's not just noise i swear there is stuff happening
That looks so weird
I would not want my audio to look like that
i find it funny that if you put an electric charge on a solar panel that the panel then turns into an IR LED
almost types fonyons name there
i have a feeling that this is happening because you make move inside of eval and then dont eval the move and eval all next moves
but i cant quite put it in words correctly
oh i mean alphabeta
so you make move then get all countermoves and eval them
but they also make move first
I guess I got null pruning working
so it goes like this:
alphabeta(move)
makemove(move) <- move made but not evaluated
getnewmoves->alphabeta(moves[i])
makemove(move)
And how am I supposed to deal with that then?
dont pass moves to alphabeta,
make move before calling new alphabeta
pass the board instead mhm
sooo like this
alphabeta()
for (move : getlegalmoves)
makemove(move)
somethingsomething = -alphabeta()
undomove()
and then you definitely remove - here, it must be + (if you still have it)
and eval doesnt make move at all
i think this should work
backup the bot and try it
That makes for a piece shuffling bot that also loses
I thought I did it right, I even reversed the turn check since it now happens after making the move
How is this so much worse?
show new everything
Wait since when did this become a broken thing
The other one should be the opposite of turn
Well that appears to have changed literally nothing
It loses with the exact same moves
any ideas on how i can indicate if there are options above and below
like that this isn't the top or the bottom
arrows
where
below or above the commands, depending on whether there's stuff in that direction
layout shift 
it looks like the rendering needs some improvement, I think they normally uses some combination of frequency and amplitude to colour
also it doesn't need to have layout shift actually
where do i put the dots or arrows then
lemme get an image editor up, hold on
scrollbar or an up/down arrow above / blow?
my bot sacrificed the queen to delay the checkmate 
it thinks like a human
I'm pround
or the lazy direct approach, make the fade "X options"
also a scrollbar will be a lie, i can't do mouse interaction in the lib i'm working in
Is this even close?
then "Commands: Showing 3/X" ?

sth like this, where the box with the arrow is drawn directly over the command list, without shifting the layout, and disappears when the user got fully to the end
for some reason my bot really really likes to trade knights and bishops 
must be white for white
kind of a good idea
you havent made a turn, so you are evaluating same side
It gets confusing to figure out what is what any more
[
finger slipped 
]
im still confused every time, have to overthink entire situation whenever i have to choose 
also since we are evaluating our turn, checkmate should be super bad and not super good so checkmate returns max value
And it STILL just shuffles a rook around
but how does your evaluator score max in comparison to normal values? is the relative change something that can in any way be offset?
material score inverted too
whole eval should be evaluated in favour of current side
heh, so your in integration hell? where your not sure where in the chain its gone wrong 😄
Current is this
idk it just see's max and returns it, so the move before it is evaluated as superbad since caused opponent to get max
im blind nvm
This time it got a time loss but was on the path to the exact same moves
Why is this whole thing suddenly completely borken?
unless
for some reason this feels off
its supposed to give opposite of the turn
It inverses the turn yes
Whuh

yeah its short circuiting 😄
I'm dum

also i found out that im actually doing 64-index instead of 63-index
after happily fixing it, bot peforms worse
i am in the same situation

need scroll 
look at scroll on the right its so nice
Fixing this made 0 difference
Do I need to do -eval again?
glad I chose PeSTO's Evaluation Function at first instead of the simplified one 
so your making progress 😄
its not something like you need to invert your turns, as the logic was borked before you dont have an inversion elsewhere?
personally i'd probably treat it as a boolean so you don't have to do too much logic dancing
So even -eval has the SAME exact behavior
Almost like it was returning 0 every time or something
why don't just check what it returns at each position, and test against a ground value you calculated by yourself, which is supposedly to what it is

is this unchanged
except the move
i dont understand how it pushes if alphabeta returns maxvalue
do you make move before this?
show whole main ()
maybe it has perfect evaluation but picks the worst move now on the final layer
The main is just this
Is it that the stalemate state is going back through your recursion?
No the eval seems to be returning normal values
two pushes
i dont get it
perhaps dump a problem state and statically test that one?
The first part is just "always take mate in 1"
if it found checkmate instantly play the move, if no checkmates found just go for negamax
i dont get how this works
moves has no values yet
before this
or they are incorrect
that would also prune any checkmates if I'm reading it right
Uhuh
Somehow everything is indeed returned as 0 in the end
Wait
WAIT I just realized
I KNOW WHY IT'S BROKEN
THE MOVES ARE NOT PASSED TO ALPHA-BETA
do this
No that's stupid also I know why it broken
I need to find a way to push the moves into alpha-beta again
alphabeta gets moves by itself
No but I need the initial moves so my whole logic works
they have no value and alpha beta returns just value
The associateWith is meant to map the moves to their scores
you cant match it to moves you got outside of alphabeta, only alphabeta knows (knew) which move was the best
and it forgets it on return
But since every move is the same and apparently even everything is just 0 so it takes the first move in the list
you dont have scores! scores dont leave alphabeta unless you do somthing like i exampled above
then you just get left with best move
and push it and it works 
why do you need if depth = maxdepth 
so it doesnt push gigamove from some depth3
lets say we had actual best move in branch 1
and its the absolute best
and then it finds super move on depth3
and overrides global bestmove
and it makes illegal move from some depth3 board that doesnt exist yet
then don't make it global
then you need to return it
but you want alpha beta to return the value and not just move
you can make alphabeta return struct? idk
not really, you only need the value(evaluation) from non-root branches/nodes
Yay it does something different now
Nooo it thinks for years now
Oh god it's still broken it does something stupid still just not the same stupid
of course you can
std::pair is there for you
whatever that equivalents to in kotlin
Pair
i love global variables 

I hate them
it's hard to manage
since you sure won't be doing OOP in this competition
right?

Hm I'm still stupid
technically i dont even know what oop actually is
i have a slight clue
something somethins structures classes
is this oop
ignore the comment
and then i have this
just, object oriented programming 
doing class and stuff
no
it must be class with methods to be oop?
yuh
its not token efficient at all
make transposition_struct and stuff a class with getter setters and that'll be OOP, perhaps
i can work with global vars, i do it all the time at work
they are the only interface we have between blocks of programs
in our shit enviroment
oop is about modeling programs as opaque objects communicating with each other without having "global" access to the system or individual objects' internals
it's not very efficient since you're intentionally limiting what you can do, but it's useful in many domains and also makes it harder to do something horribly wrong since you're limited in what you can do
Weird
the more your program grows, the more "demarcation lines" you have to draw either way (the network stack is a classic example, from l1 to l7, each layer being concerned with its own thing)
Somehow my stalemate check was corrupting all my values
obviously, you can go oop to different degrees too
arguably even the basics of fp contain a lot of oop'y elements if you think of functions as objects
And now it seemingly makes the moves that are the most beneficial to the opponent
recursion will hurt your head unless you make the boundaries clear 😄
So obviously using -eval will make it do something sensible again
Obviously
YEEEEEEEEEEEE
BotMK2 has overtaken MK1
All it took was this gigantic mess
now for it to break 14 more times in the process to MK3 😄
This time I'll have a Git repo locally so if I ruin it I can go back to a functional version and in the end I can see which of the versions does the best
Nah next is MK2Ver2
MK1 had 10 versions
MK2 is a complete rewrite
and MK3 will come when you wake up and think, what in the heck was I thinking, 😄
MK1 had no external help, I did it completely on my own
MK2 is using all the tools I have, Chess programming wiki, ChatGPT, #programming , whatever
thats vscode or pycharm?
the AI agent stuff is free for 30 days, you can throw a reasonable amount of claud or gpt at directly poking the problem 😄
Nah I don't use LLMs in my IDEs
pycharm is intellij but for python instead of java/kt
same as webstorm, clion, rider, rustrover, whatever else they have, android studio
to be honest I've never dealt much with java or Kotlin, just looked like similar styling
basically pycharm yes just branded differently
holy fuck
Screenshots are from my friend, it’s a Roblox revival I’m working and contributing on
Uses a ported Roblox backend code
i thought my last time seeing that would be in 2018
but no you blessed me with spaghetti php today
U haven’t seen Roblox’a backend logic didn’t u
It’s super ass
i don't want to thx
Thousands of micro services
my bot got 90% acc against the previous version of itself(without null pruning and SEE ordering)
And db structures
microservices aren't a bad thing especially in a corpa env. overhead of integrating is worth it
usually
the problem starts when something is being split into a microservice when no real concern exists, just for the sake of it
I'm gonna guess your bot would easily destroy mine
idk we can test
i haven't even started my bot 
start when it's not too late
You got a libchessapi.so?
no I'm on windows
will submit bs that barely works and instantly gets beat
Then chessapi.dll
Then prepare a folder where you have a folder called "native" that containts "chessapi.dll" and a runner that runs java -jar chess-bot.jar
👍
Nah Kotlin better
seems like it uses win32-x86-64/ instead of native/
windows user 
Windows is weird
I rerun and it worked
it's native/ but idk what's wrong
lul
Windows weirdness
i can't believe you didn't do Paths.get("").toAbsolutePath().resolve("native").toString() 
Well, who knows, because it's very slow for some reason
I have no clue what calls slow it down so much
you need more pruning methods 
Well how am I gonna add more stuff on top of alpha-beta?
black is you
It's a very basic eval function on 4 level recursion with alpha-beta right now

I did Alpha-beta pruning, Reverse Futility Pruning, Null Move Pruning
I'm thinking to add Q-Search
Well I think first I'll need to compress the piece position tables
They're currently making the thing way too big
you actually make the bot work well first before compressing stuff
Then I'll have an idea of how many tokens I'm working with here
Well I don't want to add so much stuff I can't get it below the limit

Bot too slow I guess
stop will be thrown after a game end, and the bot stops listening to any uci commands, causing the "stall"
Is this against stockfish 
nuh
against its previous ver
I dont have this graph when my bots play against each other, but i do against stockfish. Do i need to enable something 
I just import the game to Lichess

If stop support was to be implemented on the API it should be made such that it sends the appropariate stop commands to the API but also waits for the bot to finish and call chess_done() before it returns to waiting for a game, as stopping before the bot calls chess_done() could break stuff very badly
Is it possible to beat 1300 stockfish
Lague said his bot was 2300 and someone made a much better bot in his challenge
oh wait that's not the case
Or 2700 i forgot
then I guess idk what happened
hold let me try
Well guess whatever your CPU is + Windows is too slow
Anyway I gotta go have fun with the terrible bot
Stockfish printing 40-100 level depth scares me
How is it even 1300 elo
???? 40 depth is half of the game
it's not searching all branches
it just search branches that it think is correct
so it can reach crazy depth
anyways my bot lost against stockfish

Just q search with alpha beta?
it's like a tech tree
I haven't unlock that section of tech tree

What
no q search
I thought q is quiescence
Oh 
Visualization of every goto statement in the Linux 6.17 source code.
Commentary from a 2003 linux-kernel mailing list discussion about the use of goto.
Created with love using C w/ ncurses + several goto statements :-)
Music: "Forget Me Not" - Patrick Patrikios https://www.youtube.com/watch?v=tBIjSo_S_MI
What if we can't trust ANY software...even if you have the source code?
A perfect, self-replicating "sin" passed down for generations of compilers. Invisibly compromised in every program.
It sounds like a spy novel; only it actually happened.
Ken Thompson, creator of UNIX, theorized how Code Auditing won't save you. This is how it works.....
I added some debug features to my code
unfortunately finding out the evaluation function is broken

have to redo the whole part
wait has it just been you posting the same site over and over again here
1 sec updating the embed
yes
how are you a real living person
and ill continue doing it
Are you ai
make it neuro themed and then they maybe won't get in trouble
Location tomato?
gayballs
imma make the image bigger
so it looks better
he's just giving himself more excuses to post the link again
im trying to update the embed
test 2
WHY IS THE IMAGE STILL SMALL
:(
so the image here is big
but the image on gayballs is tiny?
It became smaller
skill issue probably
but in all honesty check the meta tags
you're probably using a different one to GitHub
GitHub may also serve an image to scrapers, like issue summaries
imma test this in a different channel so i dont make a text wall
OHHHHHHHHHHH
IT WORKED!!!
big thumbnail
now lets see the other websites
HAMSTER!!!
guess the password boiiiiiii
nice

ux bandaid

buh
are they DDOSing Github after games now

glad they didn't accidentally wipe out the entire database again
phew
Am I right in thinking that most proprietary LLMs discard reasoning tokens from the conversation history?
If so I'm wondering if someone here who has tested can clarify, is that just due to context window efficiency reasons or does the reasoning prefill actually degrade performance over multi turn conversations?
AFAIK yes, everyone always discards the reasoning from the history
both because it takes an absolute ton of space and also because it probably makes future output worse because now there's a bunch of garbage in the context
it thinks a checkmate is draw
crazy crazy
ChatGPT most likely does this, other probably as well. As for the resons, both are true to some extents, but mainly it's the context limits and efficiency. I remember seeing OpenAI's early information on o1 and even then they discarded reasoning tokens and summarized them mid reasoning to save space.
balanced position

I've encountered an interesting issue, solved but worth saying here
move ordering is very important
if you don't order your moves correctly, a true best move would be pruned or deducted
that's all

silly issue that took me a while to find
it's why my bot keeps unable to checkmate even a mate move is obvious
the real mate move is ordered behind some bad moves, when that specific bad move branch got pruned, the whole branch which includes the real best move got pruned as well, leading to a false positive

010010000110100100100000011010000110010101101100011011000110111100100000010010010010000001100001011011010010000001110010011000010111011101110010

hello rawr

clanker
what
but if its a best move, why would it be pruned
it would cause beta cutoff

or do you get it pruned on highest level?
💀
my new bot
forced old bot to give away the queen
because otherwise it would be 3fold

i think i did it
correct (
) iterative search and transpositions and killer moves
new bot destroys old bot
idk maybe my understanding is wrong
oh wait I reversed the sign whatever
you get it
but its the best move of 3rd layer
we discard it because 2nd layer will not pick this branch at all
so no need to calculate branch which will be discarded any further

no its not like that im saying bullshit
sooo
you see we dont pick this branch, layer0 doesnt pick this branch
The Dragon Hatchling: The Missing Link between the Transformer and models of the Brain: https://arxiv.org/html/2509.26507v1

because it will be worse than left branch 100%
New model architecture paper just dropped
well it's never evaluated

yes
how'd u know
lets say it has value of 500
will this guy pick it?
opponent answers with +500 if he picks it
wait i just realized is there a chance the neuro and evil breaks are signs on SSD decay in the machines?
because corruption like that can happen with bad ram or a drive
wait no im not explaining it right

its not opponent
we're sinking deeper and deeper to misundertandings
yes 
Learned that you can get loop vectorization information out of MSVC with the compiler flag /Qvec-report:2
I highly doubt it has to do with ssd's tbh.
had to check if you can get similar info for Rust from LLVM and found that you can get full LLVM optimization reports with cargo-remark
clang/gcc have a flag for that too iirc but i don't remember what it's called 
Toast new pfp?

You stopped looking so scary now 

@midnight sigil
we have at least -2 on left branch
wait no im wrong
im so bad at explaining

what do we pick lowest or highest
does it depend on who picks
does it depend on it being negamax minmax bruteforcemax idk
bruteforcemaxpilled negamax minmaxcel
is this correct can someone confirm
we always pick the highest
every side picks the highest, flip sign every layer
1000 is highest but even 500 was enough to NOT pick this branch at all - we have confirmed -3 on the other branch
so we stop calculating it
sounds right
how do i do this cool graph thingy...
Assume the enemy is perfect and you are as bad as can be
i dont see this number in stockfish log 
Aka the best option for us, is the option where the enemy has the lowest best option
yes so we discard the right branch entirely because it will allow enemy to get at least 500, and we have 3 on the other branch
Minimax = __mini__mise the enemies __max__imum score
Kinda we would discard it, but we do so because the enemy could choose 1000, not because they will get at least 500.
The "we get at least X" is for us, not the enemy
we dont know if its 1000 or 10 on that branch we discarded it but he gets at least 500
so we dont care since its at least 500 which is worse than entire other branch
Are we skipping the evaluation for the 1000 position?
and move ordering causes more prunes, imagine on my picture branches were swapped. we couldnt prune anything, we would entirely evaluate both 500 and 1000, got -1000 on the left. and only then discovered sweet -3
yes, it gets pruned
because when we start calculating the right branch - we know that left branch had -3
and since this branch causes -500 or worse, we dont need to calculate how much worse

left branch got us alpha -3, which is passed to the right branch as beta 3. and since 500>3 this entire branch gets pruned
(for negamax variant)
i dont know minimax i only tried negamax
now, how the hell do i do this 
man peeking into here from time to time, i have been really slacking with my chess bot, oops (well not like i ever considered making anything combative xD)
my bot vs stockfish 1300 elo 
(i lost)
ok i'll try give my bot 30 minutes and 10 seconds per turn and stockfish 1 minute lets see
actually, 30 seconds per turn

I found a reproducible illegal move bug
it lost even faster 
Ok question!
Where do i make an app for my phone for free? And i dont want app for people to use its just for personal use
if you use an android, install android studio
if you use an ios device.. good luck
I found that using these rustflags / LLVM flags you can actually get the reason as to why a loop wasnt vectorized, also outputs loops that were vectorized:
set RUSTFLAGS=-C llvm-args=-pass-remarks=vectorize -C llvm-args=-pass-remarks-analysis=loop-vectorize -C debuginfo=2
I think it's pretty cool, shame that I hadnt learned about this before
though it does give you the output for all the dependencies you have...
😭😭 ios bro

Why r u guys laughing and pointing at me 😭
you could make a website, host it somewhere, and bookmark it as an "app" if you really want to
is there a quick command to shift array to the left by 1 in c++
it's certainly easier than going through apple's developer hellscape
to shift array to the left?
yes make element n into n-1
oh, popping the first element
if it's array type I know only O(n)
Make a htm thingy?
yeah like popping
what kind of array? a raw pointer would just be p + 1
i can probably use vector
On the blue double dorito app?
for (int i = 1; i < array_length; ++i) array[i-1] = array[i];
my tokens noo
if you use a raw pointer you can literally just p++
You could also do a memcpy but I don't think it's much smaller.
do you need a queue or you need a random element access?
If you're on C++ you could use a std::deque
right
(should probably store the original pointer somewhere for deallocation)
i want the array to remain the same size and access all elements
Do you actually need to modify the array in place? If you do array+1 you get a pointer to an array that starts with element 1.
i need to shift it to the left and rewrite [0] element
or wait is it
uuh
doesnt matter left or right actually
so i have int * array[5]
i do array++,
it becomes array[5] shifted by 1 to the left?
wait im wrong it will be array of pointers?
int array[5];
int *shifted = array + 1; // practically int[4], references array[1..4]```
yes
so use a vector with vector.begin() + 1 and vector.end()
Do you know how often you need to shift? You could declare it oversized so you don't run out of space at the end.
it will be recursively updated
std::deque is also an option in this case
only if he only need to extract the first and last elements
no actually i want [0,1,2,3] into [27,28,29,30] so to the left
std::deque is probably the most efficient option in terms of tokens and in terms of performance
you can pop_front and pop_back, and emplace_front/emplace_back
same with push
ginkgoat for suggesting std::deque
do you need access to elements in the middle?
std::deque allows for accessing any nth element
i will sum all the elements
I forgot
you should probably use pop_front() and front() in a loop
i'm pretty sure that if you want to access Nth element in a deque it's a O(Nth) complexity
or, does std::deque supply an iterator?
i guess its enough to start
either way
pop_front() and front() in a loop is probably more efficient since an iterator would want to not modify the deque
if you need only sum then do you really need to? just save the sum and update in each pop and push
correction: i'm dumb
an iterator would be fine
only a naive iterator would fuck performance up
and std::deque supplies an iterator and a const_iterator
If you want O(1) for adding/removing elements and getting sum
btw i'm pretty sure you can do for(auto el : deque) and not hurt performance too much since integers are trivially copyable
token saving tips

:q!
:wq!
why writing?
because i want to fuck up a random config file >:3
$killall vim``` 
i wonder why its confusing the size of the monitors
installing Applio to try RVC models @nocturne olive sent here few days ago
just curious
Sily
double L
the wiki page doesn't make my eyes bleed, so probably
The only gnarly part of Base64 is the special handling at the end.
if(c == '=' || std::isspace(c))
continue;```

i did it
that was easy
nevermind i have a bug
bug killed
i am so proud of myself
i did that all by myself
programming:
- make shit
- get paid
- add bugs
- remove bugs
- get paid again

you get paid?
I have work
i put myself through this torture out of sheer masochism
mostly because no one will hire me for some reason
this is what I can't understand
you commited crime(joking)?
i am the crime
I think the employment in some smaller IT companies is too easy tho
at least in my country
god i wish
"send an email to hr and we'll call you back" is pretty much constantly my experience
well... are you a student now?
no
and i'm not willing to fork over thousands for a degree that might help me land a minimum wage job
where and how
Russia
guess i'm moving to moscow

i wish 
there is a large quota financed by government, but you compete for it on exam. Then it's free. But as I know the university costs less here than in many other places
You have unlocked new role
do not 
yeah right they're saying that and you're struggling lmao
I agree but not because it's bad, but because I like smaller city's
lile around a million people
what's wrong with living in russia?
besides constant censorship, government spyware, not being able to contribute to the linux kernel, among other reasons
eh it's not that bad
i am qualified industrial oil and gas automation middle level software engineer with $1k salary
you forgot not being able to use western payment systems
(not a problem if you have a foreign bank account tho)
also careful rule 3
respectively: yes, yes, no, no
keep in mind 
literally 1984 
it might be good if you work remotely and get paid in $
(not happening in this decade)
Can we put down the political questions and opinions?
boring 
s
i cant see them but i can feel them 
as of my knowledge half of my study group on bachelor degree had 1-2k$ while on 3rd course
the answer to "can i use a string_view for a stringstream" is either
- copy it
- use boost
I think it just differs from city to city and from university to university...
know this feeling
So true
I have good programming abilities but nobody wants to pay for them
yall i need ideas for my window manager & desktop environment
making a wm and de or choosing a wm and de?
making one
Ohh
sounds like a big task
i like dwm because its light!
Well first decide on XOrg or Wayland
i dont like it because it imlements nothing
If you pick Wayland you'll need to implement a compositor
also id like it to be hybrid
i think kde is the ideal de so i'd just mimic that
x11
Yeah so XOrg
or xlibre 
nah xfree86 /j
✅
whatevrr
i dont know how to make things feel good
i cant do UX
i perish
i need some webdev to teach me
Well I am no webdev
why there is no std::stringviewstream, i do not know, but it's time to extend stl 
why would you need that?
std::stringstream doesn't let you use a string without copying it
i want an offset in the string to act as the beginning of the stream without copying the string 
std::istringstream also copies the provided string btw so that's non-viable
can't even do stream operations on non-owned strings in peace

what do you use a stream for that you can't do with an iterator?
i designed most of my code around std::istream and std::ostream because i want the ability to read and write to any file stream or in-memory stream as necessary
std::fstream doesn't provide an iterator 
Stuff like this is why i avoid C++ for personal projects. I'd just open a FILE *ptr and do streaming-related stuff with it
But then i'd have to deal with ftell and friends, 
tbf wanting a stream-like interface for a non-owned string is a very c-minded approach
🙂↕️
in c++ you have to bite the bullet and copy the string for memory safety 
which is why i'm creating my own very unsafe way of doing things
I wrote a data structures lib a while back which copied substrings instead of views. I cringe at it so hard now, i get why you'd want to avoid it
my strings are kilobytes in size so yeah 
(i'm decoding base64 data)
tuff or nah
wait i've seen that before 
look up Nielson Norman Group, they've got a lot of good user research information
unfortunately it's article-based and there's no real "getting started" structure... so you just gotta browse until you see things you don't know / find interesting
also Google's Material Design and Apple's Human Interface Guidelines are great for being more closely developer-useful
gee thanks cppreference
UHM THANK YOU!!
LIKE SO MUCH
you just appear with 8 tons of info randomly
i appreciate ittt
i'm a developer but am so far removed from understanding any conversation in this channel, so I was stoked to jump on something easy for me lol
good luck on your UI/UX adventures, it's a long road
what apps do you develop?
most of my time has been in C# ASP.NET sites, MAUI mobile/desktop apps, with mild amounts of OpenShift K8s
have always wanted to work on more lower-level stuff but motivation outside of work is nonexistent
Their work includes an analysis of the interface of Microsoft's Windows 8 operating system. Wikipedia
lmao
second sentence of wikipedia page
my computers are shit so that when i wanted to develop, i needed the lightest thing that work
so thats how i know C
i hate OO languages
they make me want to perish
I like them, but they're just what I've happened to use the most (and gotten paid for)
recently learning more about the struct-of-arrays vs array-of-structs thing has been interesting for me
i don't mind OOP that much
generally i keep things like inheritance to a minimum or only where it makes sense 
its really hard to understand
usually the way i code is the same way i write
If i may provide unrequested suggestions, fantasy consoles like PICO-8 or UXN, or implementing a Forth are fun projects
my codebases are delicate pieces of art
please elaborate
i want to know more
-# 😭
this is usually how I write, but eventually things start getting a bit unwieldy, so I'm trying to plan more ahead of time now
i organise, modularise, and clean things up to an obsessive degree
how do i steal your brain
i cannot organize
the hardest way: practice and effort 
modulizing requires 8 years of time in my head
my brain is tainted, you don't want it
i want it

actually impressive how much it's keeping the vocals out on the "longaudiosegment" one
this is apparently a track that they struggle with... interesting how much different the results are if you only give it 2 seconds to process versus the full 27 second segment
this is the BS Roformer Resurrection Inst model
but i dont wannaaaa
too bad, that's how it must be done
In C or Lisp, i'd start sketching things out in the main function, then begin splitting it out to their own functions once i begin seeing patterns. Loops are the easiest to isolate.
also flowcharts, draw it visually
Then i'd try to get to a compile-test-loop as soon as possible.
my mind is just good at organising as i go, no whiteboard in sight
ill try that
Emacs' compile mode is killer for this
some people are really good at this, but us mortals usually need some help :p
how
i dont have a drawing app installed
ms paint
grab a pen and paper if nothing else
Pen and paper. Then graphviz when it gets big
slowing down to physical reality can legitimately help you reason through your line of thought
correct
and the effort you need to spend on it also makes you critically think more accurately about it, so you don't "waste 30 seconds drawing this table if it truly won't work"
Paper has been RAM for the human mind for the longest time
id argue its more ssd than ram
Point
RAM when it's on your table, SSD when you stuff it in a drawer lol
pro tip: sometimes, when a project feels too cluttered up in your mind and you feel overwhelmed, you wanna take a break instead of continuing
continuing will make you compromise and make things "just work", leave it there, and then you get unmaintainable code that barely works
HDD when you forgot why you wrote it 6mos ago
carved stone is the hdd of life
sleeping on it is the best debugging tool imo



