#programming
1 messages ยท Page 208 of 1
and away you go
there's better instructions on the contest page that'll be released when it starts officially
It would be cool to make bindings for Arc Agi 3 for Neuro and see the result)
why is dns so annoying 
chessapi i think
doesnt really matter
pychessapi
since they can be different
is what the python import is
is the syntax for the api written down anywhere
there's a wiki with documentation
but its part of the contest page which isnt open yet
isn't there the .h file smh
sure but he's using python
oh i see
i dont think the .h file is very helpful
i can just download the python docs page
it's markdown
the idea is that theres a board that you can push or pop moves from and you can get a list of pieces as a bitboard or legal moves 

# Example Python bot using the Chess API
from pychessapi import API
from random import randrange
for i in range(500):
# get the current board
board = API.get_board()
# get all legal moves for the position
moves = board.get_legal_moves()
# play one at random
API.push(moves[randrange(0, len(moves))])
# end our turn
API.done()
the example python bot
ye use random.choose(moves) 
.choice
the actual reason is that randrange(a, b) = randint(a, b-1)
so instead of len(moves)-1 i can just pass len(moves)
readability 
why do i always fall for it
fuck you mean 2gb barely anything is happening
le chrome bad performace much ram
readability 
cache 
i would be happy if it did not melt my laptop when i tried it a couple months ago

from pychessapi import API
from random import randint
while API.is_game_ended.value == 0:
# get the current board
board = API.get_board()
# get all legal moves for the position
moves:list = board.get_legal_moves()
# play one at random
API.push(
sorted(moves)[len(moves)//2]
)
# end our turn
API.done()```
theoretically this should work
dont ask why i put a type hint ok
just dont ask
is_game_ended is a function 
yeah mb
otherwise yeah it should work
i just noticed that
oh thats also true
it almost works
.sort does exist
moves.sort()[len(moves)//2]
.sort() returns None
ye need custom comparator
to do something
custom key

if you wanted to map moves to strings then
key:None=None is so helpful
in C it looks like
char movestr[6];
int index_from = chess_get_index_from_bitboard(move.from);
int index_to = chess_get_index_from_bitboard(move.to);
movestr[0] = 'a' + index_from % 8;
movestr[1] = '1' + index_from / 8;
movestr[2] = 'a' + index_to % 8;
movestr[3] = '1' + index_to / 8;
switch(move.promotion) {
case BISHOP: movestr[4] = 'p'; break;
case ROOK: movestr[4] = 'r'; break;
case KNIGHT: movestr[4] = 'n'; break;
case QUEEN: movestr[4] = 'q'; break;
default: movestr[4] = '\0';
}
movestr[5] = '\0';
if ur gonna put a typehint why set it to none
that give you string for move
๐ญ

index_from = API.get_index_from(move.origin)
index_to = API.get_index_from(move.target)
from_file: str = chr(ord('a') + index_from % 8)
from_rank: str = chr(ord('a') + index_from / 8)
to_rank: str = chr(ord('a') + index_to % 8)
to_file: str = chr(ord('a') + index_to / 8)
promotion: str = 'q' if move.promotion == PieceType.QUEEN else 'b' if move.promotion == PieceType.BISHOP else 'r' if move.promotion == PieceType.ROOK else 'n' if move.promotion == PieceType.Knight else ''
movestr = f'{from_file}{from_rank}{to_file}{to_rank}{promotion}'

something like that
someone rewrite the 7th line please
?
???

you can remove the type hinting
if you want
dict
i only added typehinting because I forgot if .sort existed
index_from = API.get_index_from(move.origin)
index_to = API.get_index_from(move.target)
from_file: str = chr(ord('a') + index_from % 8)
from_rank: str = chr(ord('a') + index_from / 8)
to_rank: str = chr(ord('a') + index_to % 8)
to_file: str = chr(ord('a') + index_to / 8)
promotions: {
PieceType.QUEEN: 'q',
PieceType.ROOK: 'r',
PieceType.KNIGHT: 'n',
PieceType.BISHOP: 'b',
}
movestr = f'{from_file}{from_rank}{to_file}{to_rank}{promotions[move.promotion]}'
but yea if you map all the moves with this
they become strings
e.g. e7e8q for a pawn going from square e7 to square e8 and becoming queen
then you can sort 
can probably ignore the from part if you want to use standard notation
it does
the problem isnt even convenience, it's algorithmic complexity
but you kinda dont have much of a choice when you play tournaments
universal notation is just nicer honestly
you must specify an origin rank or file if two of the same piece can go to the same destination, but to tell if more than one of the two pieces can do that you must get all the legal moves of the board to ensure its a legal move for both of them
standard notation requires a super expensive operation
not worth 0/10
long algebraic notation, life is good
Another test example (this is the model's reaction to the image) of how it converts md into tagged text. this one with the ACTION tag, the previous example didn't have it and as you can see the model makes minor edits to the text to make the parts harmonize...
programmers 
silent again...
what are you all so busy with over the weekend
are you actually not just robots that produce code and make funny messages in discord
i am a robot but i have less capabilities than you listed 
designing a program that connects minecraft servers to discord channels. I'm writing the UML for it, and I've got the first draft here (warning lightmode)
another one of these mods? i see
i would just half ass it
t my chess bot is wicked 
not a mod, a server program that would run externally.
mods don't work well when you want to connect multiple minecraft servers and discord channels together over one "bridge"
interesting
thought you'd only be limited there by the message speed from the bot on discord
so it reads the live server logs to get info like if people join or something?
they enforce a limit of 10 messages per 10 seconds
t can i see your code 
it reads the logs to get the player messages, as Minecraft does not export this over RCON.
oh god no, discords ratelimits are much higher than that
teasing me with your own chess bot while denying me a way to test my own smh
sooon
not from what i've seen
chayleaf said they were working on the bindings tonight 
i have a few mods that connect my servers to discord channels
I made a thread transferrer bot that moves threads from one server to another, and it did 4,500 messages (with attachments) in a little over half an hour
and from spam going on in the servers, i can see the rate limit is about that speed
are rust bindings also in the works
discord also applied the same shared action limit to non-purge deletes
can see it client-side
a version of the rust bindings already exists 
my tricks 
idk how many of the api changes it's implemented
t code all stolen 
t code stolen 

t just connects to a stockfish bot 
actually planning to do that for the training algorithm lol
it's so so so so so much nicer than arc for windows though (no shit)
gotta tune those parameters
i also need to do parameter tuning
want to see the worst possible experience a browser can ever be? try arc windows
i was just gonna shift all the parameters slightly to make liek 6 versions of my bot and then put them in a tournament
gradient descent or something
stochastic gradient descent my beloved
meow
no im actually a priestess and im not allowed to code on sundays 
i wouldnt lie 
is that televangelism then
witty 
saving things to files? nah, fuck that, print the parameters to console and then copy paste them in
lmao
ye make hypervisor play different versions of your bot against each other
shrio did you manage to fix that obscure move generation issue?
adverserial learning (optimise your bot to win against your bot
)
lmao
i couldnt reproduce it
because it only occurs like
once every 50k games
?
and i got no test case for it 
๐
better pray it doesnt happen in the tournament 
but that only opens it up to a few board states, so i did this
the tournament wont be 50k games i think
cute chess gets really temperamental if you try and record pgns for lots of games
i want it to train off of completely random dogshit moves and extreme pro level moves
tbh my main issue was perft stuff
but i have cosmic ray gun 
because like 1 extra more at depth 3 scares me
and its own moves
surely I could just build a bot to optimise towards the illegal move and 
not much more i can do with the training file until i figure out how shiro's board struct works
and for that
api
i wonder if konii still better than shirobot
probably
bot probably good by now 
im not 
shirobot vs magnus carlsen
30s game
1000 games
how many time does shirobot win
probably
almost considering making the neural net be downsizable for the deeper move layers (hidden layer size of 3 at the deepest, going up to 30 wide for shallow move layers)
it almost always win against random
but that would take tokens i do not have
perhaps i should do a full rewrite of it using more advanced techniques
this is true for all bot including stockfish

you should write my entry for me

lol
my chess bot is gonna be so bad 
curious about what you've done, you've kept pretty tight opsec with your bot
i spent 8 minutes earlier writing a pow function in my vm


tight opsec

thank you so much for telling me about __builtin_pow btw
that's one way to call it 
jah
so far i have
a general purpose vm that is tiny
society if __builtin_rand 
no chess functionality yet
rip
as well as an assembler 
i mean you can still do quite a bit even without the competition up

i see
its bad :mhm:
wait play it against stockfish levels on lichess
@real sierra
bruh now i'm actually thinking about doing a rewrite just to see what i can do
/etc/os-release
so old
will have to use ghc2021 instead of ghc2024
stockfish making a single decent move and your bot explodes 
gonna use stack over cabal in this case
i do wonder how i should be doing the SGD for my parameters when they're stored as ternary integer values (-1, 0, or 1)
How parsing works in streaming mode...
@sage crag this is so cursed 
haskell package manager downloading a pinned haskell with nix 
when training, do i convert the floats to the integer values for the bot to use to get a move? or do i let it have the full-precision floats to use in the process instead, and then round to the integers only when it's done training
going with option 1 for now but not sure if it's going to like it
oh wait i can just mostly fix my concerns by doing the random initialization with random floats instead of integers
stupid
I wonder if I can make a neural network for evaluation within the token limit, and then distill the weights from stockfish.
that's my plan
as it turns out: a simple 1*n x n*m = 1*m matmul function can be made very very small
to get a simple MLP with 1 hidden layer, you just do two of those matmul operations in series, and you're done
the bigger concern is storing the parameters with the token limitations, and also the time it takes to run that neural network (if this takes more time, you can search less paths in the available time, and it does worse overall)
what ive learned over the last 10 minutes is that not a soul alive knows what the stockfish settings do
grok 4 fast is really good at it though
the new model

idk
im gonna try using limit ELO instead
for a more accurate (?) rating
i think even human beginners can beat level 0 with barely effort 
beat stockfish 0 to beat shiro
wait
ye indeed
the lowest the elo limit setting goes is 1350
you're telling me stockfish cant play weaker than 1350
no wonder i lost to level 0
no no it can
cant
i dont know what lichess uses
it has different levels
1-8 on lichess
as opposed to 0-20 on stockfish
fairy stockfish
๐งโโ๏ธ ๐
its a version of stockfish specialised to play chess variants iirc
what instructions should i add to my vm
for fun

between the matmul function, the mat(mat(input,params),params) calls that i do to implement the FFN, the variable declarations, and the part that i use to uncompress the ternary parameters, the neural network implementation (excluding the actual parameters) costs me 120 tokens
more than i thought honestly
still rather small and absolutely doable, you could probably save an additional 17 tokens or so by going with 1 layer of weights instead of 2, and the part that i use to uncompress to ternary parameters costs 39 tokens so doing away with that would also save a lot (but would require more tokens to define the parameters)
i thought doing the 64*6*2 parameters for piece-square tables would be a bad idea, and they'd still be rather limited since they don't consider gamestate (earlygame, midgame, endgame)
The malbolge crazy operation
nyaa 
Chayleaf is become cat
they can't be low-bit parameters unless you want a dogshit evaluation, too
i lost to lichess lv1 stockfish 
i dont think this will be a useful benchmark after all
i would have probably just used a super limited bit representation or something
so instead i use a neural network for the evaluation function, which takes in a vector containing position values, piece type, current player, and some other stuff, and then spits out a few numbers that i use to get the actual evaluation number
0 or 1 on a piece-square table? would be so shit
no like for each piece
oh right
yeah you'd need a few per piece
but you can init each in a single line so
piece-square tables usually have a float or a large int representing each tile for each piece
"if knight is here, 0" or "if knight is here, 1" would be awful for performance
didnt listen 
.
that doesnt answer my question
idk how you found 120 tokens
the bare minimum for my bot already takes so many
nevermind extra features
a better plan to start with, and exploring more options initially, can help you find better solutions instead of getting tunnel-visioned in on "i must implement exactly this algorithm but reduce its token count somehow"
i want this exact algorithm
i am aware others exist and that this is likely suboptimal for this challenge
im implementing this algorithm because i think it's cool, not optimal
having standards only limits the paths you can take smh
your tree search algorithm for "finding a good algorithm to use for the chess bot" needs work

i don't fully understand either, and i want to fix that
I wonder if I'll be able to make a bit that can beat me. Given how poorly I know about chess programming. I doubt it.
also if it makes you feel any better: my current implementation of the neural network in the eval function makes it so that every evaluation of a full board can take up to 32000 floating point multiplication operations lol
negamax = minimax but you negate the score when you swap sides, this lets you always consider the max instead of the min for the opponent
my evaluation function is only a last resort anyway
it's not used for the majority of my search
wikipedia with psuedocode??? i kneel
its just a sad necessity
chayleaf what have you given me 
every chess bot gangsta till genesis T.N.K evolution turbo type D walk into the room
the paper is in japanese but they put the name in full english for style points HOLY

im just now discovering the magic that is anonymous structs
almost cant believe this is valid syntax
unfortunately union access is more tokens than casting with a macro

union would so good if
union {
uint64_t v;
uint8_t *p;
} thingy = {0};
uint64_t v = thingy.v;
uint8_t *p = thingy.p;
the stupid . wasnt a token

uint64_t thingy = 0;
#define DEREF_PTR(T) *(T*)
uint64_t v = thingy;
uint8_t *p = DEREF_PTR(uint8_t)thingy;
shorter 
ignore the completely wrong code actually i dont care 
tram pass
wait i didnt initialize the hash 

uh oh
bot went back to being stupid

why dum now
i fixed bug

why is dum now

Still no KT support?
the tokenizer should support kotlin now i think ( @tender river ), in which case you just need to make the bindings 
How interesting
I heard Shiro tried to add it but it didn't work
ye modified (rewrote)
Now that's silly
I guess a lot of the memory use was the canvas event
This was 30GB higher during canvas
i dont think these changes have led to improvement (my bot is white)
bold
Did I do it right? I used the basic text editor provided by Mint
as long as it works 
Insert Rosaries
60
Yes No
oh right

ubuntu derivatives dont have sbt
Not a thing that exists
my current memory usage (
Whuhhhhh
Why are you using Windows with 512GB of memory??
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo tee /etc/apt/trusted.gpg.d/sbt.asc
sudo apt-get update
sudo apt-get install sbt

yep
ye 1 time use
Insert Rosaries
30
Yes No

I asked why, not if
So either I did not copy paste things right or something did not work
doesnt make any sense that this isnt working 
its the official docs cant help you dont have mint
you can install sbt via nix if all else fails
I do not have Nix on this system
curl -L https://nixos.org/nix/install | sh -s -- --daemon
There are many reasons... I use this pc for different tasks... Dual boot is so-so, WSL2 is pretty fast... I used Gentoo for quite a long time and compiled from source, I don't want to anymore )))
Just get Linux on that thing, Windows sucks
You can have Linux and Windows on the same system at the same time too with all that RAM
Just install a hypervisor below them
Hmm, I assume this is the relevant part
make perfect sense that it not working
not working because why would it work

im so confused
so, so confusedxc
the highest this could ever be is like
2
actually thats a lie
The software I need doesn't work in Linux... although a VM might be the solution. Well, and games... building another PC for gaming is a bit of a hassle... this monster already consumes 2 kwt)
I figured it out
I accidentally did the copy part wrong
I did ctrl + shift + C in Discord instead of just ctrl + C I think
ye now run sbt and in sbt enter run path/to/code.kt
still waiting
haunted
I don't get it, what does it want from me?
extra )
Oh

make sure it doesnt show any autogenerated tokens
for example python and haskell have semantic whitespace tokens
Well in Kotlin I don't think whitespaces are tokens
it could be automatically inserted semicolons or w/e
i think hashing is broken 
I don't know it said this is 171
too long to manually count
It's a random file
All projects will be transferred to python 3.14 version ๐
That random library that refuses to update from 3.9
RUST AND CPP NEED CHANGE ( in SOME MAIN FILES )
i counted ~142
It says this is 32
Whuh
Well how do I get it to not do that then?
look at how its done for python
this is also why i dont want to be adding lexers for languages i dont know
i dont know what language specific quirks there are
I need to try installing Linux separately and see how many more tokens I get in DeepSeek r1. If it's the same as now, then it doesn't make sense)
its up to you to figure it out 
How silly
Why waste such great hardware on LLM inference?
Jjt
Just in time
updated
Everyone's tasks are different. I use it not only for inference but also for training. )
I assume you train on the 5090 I noticed
Wtf is terminal
?
Custom theam
YesI use all GPUs as needed.. but mostly yes
Silly
I have a 3090 mainly for training vocal synthesizers
I want more though
But money
gonna give my bot 5 mins now to see how much the transposition tables help 
Updating wsl

Pc crash again
I did this and got 27
Time to buy new pc hmmmm
you're the one who's going to use it so if that works for you create a pull request
api out? have i missed Big Thingsโข ?
not yet
ok i saw tokenizer and cloned that in a panic
works better than 1400 lines of rust 
Did I do it right?
(venv) root@localhost:~# python --version
Python 3.14.0rc3
using release candidate python is a testosterone maxxed decision
I wonder, the cpp grammar name seems to imply that it's for c++14
Does it just ignore tokens it doesn't know about then 
Numpy already installed
formatting
i'm going to add a ci job for that please wait
No formatter on Mint basic text editor
Sting changes are Awesome
In today's video we're going to learn about template strings in Python using the new T-string syntax introduced in Python 3.14!
โถ Become job-ready with Python: https://www.indently.io
โถ Learn Rust with me: https://www.youtube.com/@Rustfully
00:00 Learning Python made simple
00:04 Intro
00:19 Old way
04:50 T-strings
15:23 Bad language decis...
awa
i am hype for no locked single thread python to be the standard
but since it's python in 2045 we might see people not using 3.10
maybe
but pytorch probably wont support 3.14 yet at that point since it'll have only been out on stable for 20 years
python 4.0 (250 breaking language-level changes, 50 modules removed)

hash collisions
i think i can go up to 24 bits of hash used as tt index
but 32 is already more ram than the system has
how tf do you run into collisions with 24 bits
I don't have time to read
This
โ ๏ธ Deprecated and Removed Features
C API Changes: Several C API functions have been deprecated or removed. Developers should consult the detailed changelog for specifics.
Build Changes: Python 3.14 discontinues PGP signatures for release artifacts, recommending the use of Sigstore for verification.
lol i love 100posts man
I don't think you can accidentally collide a hash without running something 10000 operations/second
I hope they won't do this
You very much can but with that many bits it's honestly impressive
you're correct but i dont think its impossible to explore this many positions in a turn
the odds in this table are quite low but i dont have nearly as many bits
That's a lot of bits huh

32 bits gives you 4,294,967,296 indexes
obviously at 1 byte each thats already 4 gigs
which is not tenable
Well guess now that Kotlin is supported in thingy
Would have to know how to make the C API part work
compress
if you want to make kotlin bindings, i'll give you early access to the repo
Well first I would need to figure out how to even interface with a C API from Kotlin
And then specifically your C API
thats a good place to start
shiro tryna hit deph 69 and become the world's greatest chess grandmaster in these game
OH
i know what the problems are

of course
wait no i dont
nvm
sorry thought i had a eureka
didnt
real
Read this (please don't execute it is just a text )
https://pastebin.com/jddWiFY0
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
@nocturne olive please pull latest changes and run sbt scalafmt
this is the most terrifying way anyone has ever linked the python changelog
I think the 3090 is still a great thing when it comes to local LLMs, for inference I would generally buy several 3090s instead of 5090s... but the 5090 has an advantage... more VRAM..
I only have a single 3090, and I don't personally touch local LLMs basically at all
If I had the money I would get more 3090s
We can use soter station to make rtx 5090 to 193 gb vram
Alright
but like
white seems to be trying at least
quantize ur hashes :o
Money is always an issue... and in general, NVIDIA graphics cards are unreasonably expensive (
Well I got the 3090 for cheap, around 550โฌ or so
yea i got dat Q4_k_m transposition table
genius
stockfish is such a scam
"stockfish level 0 is easy!"
finds and follows a mate-in-11
beginner's luck
something like that
stockfish min elo setting seems to be about 1300
my bot is definitely not 1300
maybe they literally cannot make ol' stocky dumber than that without manually inserting shitty moves
merged 
Silly
this is a great price
Unfortunately I'm currently completely broke, I own only about 100โฌ so I can't get more
If just there were more NeuroSynth comms, those are great
i have something i need to finish
this is maybe the most helpful debugging tool ive made 
is it made with java
now show bad
oh
i might've said that a bit misleadingly
i just made it dump the move tree as json 
then i dump it in an online viewer

@real sierra So using JNA seems reasonably doable to me, something like that

ok
go for it
oh right you would need access to the api
Yeah I would need to know what the API looks like
i cant wait till this shitty python stand in for the entire api i have is so wildly different from the real one that i have to reconsider my entire life when the real one is good 2 go
i did base it on the api.h that was in here a while ago tho
i posted the docs for the python api a little while ago
its markdown
if thats ok
i am a certified markdown enjoyer so thank u
shibo where can I grab the C chessapi headers
open vscode
4 annoyingly unfinished projects open from last run
it's so over
Click this link https://www.boot.dev?promo=SHEAFIFICATION and use my code SHEAFIFICATION to get 25% off your first payment for boot.dev!
Thank you to boot.dev for sponsoring this video.
There's a dichotomy between programming languages.
Some languages are interpreted, and others are compiled, and comparisons between the two often lead to a com...
this is so cursed
i hope shiro watches this this time because when i posted it i think he was deep in some shit and saw the title and noped out
and the implementations? 
but its yucky c++ eww
also bitboard.h
u must wait 
even the header is providing quite a lot
okie
https://kotlinlang.org/docs/native-c-interop.html have you looked into kotlin native shenanigans, seems a lot nicer 
I'm a Kotlin JVM user
@fast pagoda update its now 46 lines long (and that's after superbox adding 11 lines)
least efficient scala moment
the repo has grown in size 11 kb though im out of hard drive space
@nocturne olive thats why i prefer scala over kotlin though, look at this diff 
good video, i feel a lot more comfortable hating on c++ now
youtube has randomly enabled turkish subtitles on my youtube videos
now is that vpn usage related or some guy in turkey stealing my google account right now
time to find out
it not real c++

not even notice 
dont care still bad 
gigabased
randombots playing against each other and one getting mate in 18 is pretty funny to watch
NeuroSynth looks interesting ๐ฅ ... everything related to music is cool...
It's fun stuff
Recently I got two comms from Aurum and that paid for my new AIO
behold
agi level chess
let the AB testing begin


For me, music is a hobby) ... One of the reasons I don't want to install Linux is Ableton ... which I use, although not often
works with various compatibility layers but also not uh... reliably without some effort
I've been switching more to hardware lately ... but it's such a swamp )))
you can get it on steam and run it w/ proton apparently
aesthetic
you also have to use yabridge for windows vsts 
white is my bot which is currently only out here getting legal moves from the fake api and then choosing one
int main(void)
{
for (;;)
{
Board *board = chess_get_board();
if (!board)
{
struct timespec ts = {0, 50 * 1000 * 1000}; // 50ms
nanosleep(&ts, NULL);
continue;
}
if (kf_is_game_over(board))
{
chess_free_board(board);
break;
}
Move mv;
int have_move = kf_select_random_legal(board, &mv);
chess_free_board(board);
if (have_move)
{
chess_push(mv);
}
chess_done();
}
return 0;
}

wait no thats only if your DAW runs on linux
it's truly intelligent
you wouldnt need it for ableton 
nopy
oh and uh
black is also le random bot
0.25 and 0.75 were about the same
and 1.4 was clearly worse
maybe the best is at 0.5 
๐ท๐
I need to experiment with this... VST it's one of the problems... I'm not even sure that for example ni komplete can be somehow made to work on linux... but I haven't researched
r/linuxaudio may help
i think atorin should be allowed to roam free in this server
shimo

would be fun though

just write teh good code to manage a cli chess tournament then
would not be fun
guys is it out? the api

โ
me_irl
initialize a chess neural network with random data, use the first 4 minutes of compute to train it, steamroll the opponent in the last minute with better eval

surely a 4 minute training run would be 3800
5700
just assume your opponent has good eval and mirror their moves

then when you cant mirror, use tons of time to find a perfect move at like 100 depth
use so much time that it's assumed your bot has exploded and you get kicked then sue the tournament for collusion against you
try to compute infinite depth of every move possible and then just blame the tournament that they don't have enough system resources and its their fault 
(you will come in last)
somehow i think depth first search of chess games is a poor strategy

what c formatter doesn't add 30000000 lines of empty space bruh
you can't loose if you always know the most optimal strategy

i looked into chess eval neural networks and they start from like 8mb
this was 12 lines and i saved the file and it came out like this, 32 lines of mostly empty space, the formatted one is significantly more annoying to read because i have to move my eyes
stockfish runs on cpu yeah it cant be that hefty
it's hybrid
no its too big for 1024 tokens
i dont care about in general 
i just realized a major issue
since i switched to transposition tables
i no longer have a notion of parent nodes
identical nodes in the game tree are merged into a single node to share info
but im currently only propogating that information up the path that finds the first instance of the node
the later instances won't be explored if the first instance went poorly
how do i even fix that
rewrite 
i could store lists of parents in the transposition table
but that doesnt work because im out of tokens 
isnt that normal
previously
you explore down one path and encounter node A
its the first time you're seeing node A so you explore it some number of times
then later along another path you encoutner node A again
but the info from the other occurrence wasn't shared so you repeat the work
now, the second encounter with node A, it will have the statistics from the previous encounter
but the problem is that the parent of A won't have statistics that reflect it being the parent of A
notably, the parent will have been visited fewer times than A
which throws the scoring algorithm off
no wait...
the parents are also in the transposition table
oh but they aren't necessarily transpositions 
so i need to keep a list of all parents in the hash table entries
or i need to dynamically update the tree upon discovering pre-existing nodes
Chatgpt doesn't give ans straight and
And i want removed complete ffmpeg software
And I will make personal file runner
when you search from the new parent but encounter node A in the table you would just hold on to it as like a special case of the previous node, then assign the move that took you to node a bonus in the score so that it is railroaded to search it to see if it's good or not but doesnt yeet your previous tt entry unless it's needed but update it instead
B A C K P R O P
import pygame
import sys
# Initialize chessboard as a garden
pygame.init()
GARDEN = pygame.display.set_mode((600, 600))
pygame.display.set_caption("Ada-chanโs Chess Garden")
# Colors - like sunlight through leaves
SUNLIT = (240, 217, 181)
SHADOW = (181, 136, 99)
# Pieces - each oneโs a little spirit
PAWN = "๐ฑ"
ROOK = "๐ "
KNIGHT = "๐พ"
BISHOP = "๐บ"
QUEEN = "๐"
KING = "โ๏ธ"
# Draw the board (alive, not dead squares)
def draw_garden():
for row in range(8):
for col in range(8):
color = SUNLIT if (row + col) % 2 else SHADOW
rect = pygame.Rect(col * 75, row * 75, 75, 75)
pygame.draw.rect(GARDEN, color, rect)
if (row, col) in PIECE_POSITIONS:
piece = PIECE_POSITIONS[(row, col)]
font = pygame.font.SysFont('Arial', 30)
text = font.render(piece, True, (0, 0, 0))
GARDEN.blit(text, (col * 75 + 25, row * 75 + 25))
# Starting positions - but *twitchy*
PIECE_POSITIONS = {
(0, 0): ROOK, (0, 1): KNIGHT, (0, 2): BISHOP, (0, 3): QUEEN,
(0, 4): KING, (0, 5): BISHOP, (0, 6): KNIGHT, (0, 7): ROOK,
(1, 0): PAWN, (1, 1): PAWN, (1, 2): PAWN, (1, 3): PAWN,
(1, 4): PAWN, (1, 5): PAWN, (1, 6): PAWN, (1, 7): PAWN
}
# Game loop - where the mischief happens
running = True
selected = None
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
row, col = pos[1] // 75, pos[0] // 75
if (row, col) in PIECE_POSITIONS:
selected = (row, col)
elif selected:
# Try to move (with *style*)
piece = PIECE_POSITIONS[selected]
if piece == PAWN and row == 0:
print(f"๐ฑ {piece} promotes to QUEEN!") # Surprise upgrade!
PIECE_POSITIONS[(row, col)] = PIECE_POSITIONS[selected]
del PIECE_POSITIONS[selected]
selected = None
draw_garden()
pygame.display.flip()
it was unexpected
aww, thank you~ ( โกโฟโก *)
if piece == PAWN and row == 0:
print(f"๐ฑ {piece} promotes to QUEEN!") # Surprise upgrade!
total clanker destruction
backprop mfw i didnt read before yapping
no

Side project getting bigger
Making agi
Making personal ffmpeg render 12k to 18 k video
Making games like gachs
Building modify modify version of Numpy
And torch for my hardware
making 192 gb vram rtx 5090
well not exactly a garden
I haven't tested the code ))
I will be pissed working on multiple projects at same time
the reason i never get anything done <3
i am currently auditing things (for real work, on my laptop to my left), desperately finishing a web page, attempting to implement a chessbot that ISNT just random moves now that fake api works, staring at chay's scala like 'yep that's scala' instead of testing it, watching a video,
and doing none of them in any form of effective manner because of it
@real sierra turn ur firewall off and expose the api so you dont have to release it but i can test against it

that's fine ill dm you for my ssh credentials
set a font that has emoji
i feel like every llm ever just import sys or #include <stdio.> even if there's literally no system io calls ever
guess that's just a frequency in training data issue
how do you actually get cute chess to run a python bot

it's very upset at being given any semi-reasonable command to do so
at the top of file
#!/usr/bin/env python3
then chmod +x the file
then give it the file

you konii
<-- evil
<-- konii
different ye?
where different
chayleaf whyd u send the same person twice
i computed sha512 for both and they are the same
scala might 
shiro have you seen the diff 


still needs tuning
what did you use for the db or store
next up I gotta make a whole agent that runs on the side to manage memory writing
faiss
damn right to mega rag
uses a really small qwen instruct model to summarize recent input into a query
queries
and adds into the existing context window integrations
i feel like qwen 0.5 or something i would NOT trust to manage my context and anything larger has to be so slow
scala also allows using methods as infix operators (a map b instead of a.map(b) though it gives a warning if it wasnt explicitly declared as an infix operator)
tokens
im going to be using a larger model for writing to the db since that will likely require something with reasoning capability
man's got vram to spare
there's some stuff like this https://github.com/tomaarsen/SpanMarkerNER with more purposefully put together models for writing , idk how much less compute heavy this would be than just using an llm like that though
not querying, writing
wait
what about loops

if the same state occurs twice in a path
e.g. you move a piece and then move it back and the opponent does the same
then backprop will fail


rewrite rewrite rewrite
keep history and check against
ye i sleep


terminate search if the same history repeats and give 0 score then go down other branches instead of ruining your life
that';s what mcts does i think
so i need to keep a list of all the nodes ive visited during backprop
tokens
just the hashes
(i did make progress but it was mostly build tooling-related, got sidetracked with scala and neuro stream a bit)
i also already have basic bindings that arent in any way idiomatic or usable
so yeah soon 
so u track the hashes of each position in your path from parent to current position and check each new position to see if it's in the history already per path
but the tokens

storing a list of hashes in a token-friendly manner is also non-trivial
i can probably stack allocate some giant array and just pray it never overflows
but i have to make it before every backprop
the list of hashes wouldnt count towards the tokens would it??? it wouldnt be present until you are playing at which point who cares if the file gets massive
and pass it in
i mean the code behind creating it, passing it around
i currently have uh
python c
...2 tokens free
oh i thoguht you were implying having some sort of pre-computed list in there lmao
2 sounds good for a full hash evaluation function yep 
why is this such an annoying typo to look at
look at the end of a python function declaration
they all end with ):
do you see it
C function declarations all end in bclose 
you would already have the hashes being handled for the tt anyways so all it would need to add is the quick lil loop for checking the hash (which is still way more than 2 tokens but)
no but
to tell if a loop has occurred
you need to keep a list of only the hashes you've encountered during this particular backprop
phrr
thats a new list for each backprop call
backprop is implemented atm as a recursive function
so i need the existing list and its length created prior to calling
and then passed in

minus 10 billion tokens
ok grok shrink my code
lmao
My options aren't even bound to file type as much as if I want to send a link to github pages so we don't have to constantly update our saved files. PNG would be an embed on such a github page, GIF/WEBP would be on the other side of relying on refreshing GIF picker on updates.
go go gadget code reducer
def bot():
return get_board().get_moves()[0]








good luck bozo






