#programming

1 messages ยท Page 208 of 1

real sierra
#

so then you just import it

#

and away you go

#

there's better instructions on the contest page that'll be released when it starts officially

glad path
#

what's the lib

#

like

keen hatch
#

It would be cool to make bindings for Arc Agi 3 for Neuro and see the result)

glad path
#

the package name

#

not for installing but for imports

opaque sigil
#

why is dns so annoying neuroDeadge

tender river
real sierra
#

pychessapi

glad path
#

since they can be different

real sierra
#

is what the python import is

glad path
#

is the syntax for the api written down anywhere

real sierra
#

there's a wiki with documentation

#

but its part of the contest page which isnt open yet

stray dragon
#

isn't there the .h file smh

real sierra
#

sure but he's using python

stray dragon
#

oh i see

real sierra
#

i dont think the .h file is very helpful

#

i can just download the python docs page

#

it's markdown

tender river
real sierra
#
# 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

tender river
#

then after you're done you just submit a move

glad path
#

why randrange

#

seems like the same as randint

tender river
#

ye use random.choose(moves) evilSMH

real sierra
#

๐Ÿฅ€

#

my bad bro

#

ill take my example back

tender river
#

.choice

glad path
#

couldn't be me

tender river
#

more tokens for me

real sierra
#

so instead of len(moves)-1 i can just pass len(moves)

#

readability YES

rigid snow
#

why do i always fall for it NOOOO fuck you mean 2gb barely anything is happening

#

le chrome bad performace much ram

tender river
#

readability unfathomablerage

rigid snow
#

i would be happy if it did not melt my laptop when i tried it a couple months ago

real sierra
glad path
#
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

real sierra
#

is_game_ended is a function YES

glad path
#

yeah mb

real sierra
#

otherwise yeah it should work

glad path
#

i just noticed that

tender river
#

sorted requries a custom comparator to work

#

in this case

real sierra
#

oh thats also true

glad path
#

idk

#

I didnt really put thought into it

real sierra
#

it almost works

glad path
#

.sort does exist

real sierra
#

moves arent numbers is the issue

#

py no know how order them

glad path
#

moves.sort()[len(moves)//2]

tender river
#

.sort() returns None

glad path
#

to some function

tender river
#

ye need custom comparator

glad path
#

to do something

tender river
#

custom key

real sierra
tender river
glad path
real sierra
#

if you wanted to map moves to strings then

glad path
#

key:None=None is so helpful

real sierra
#

in C it looks like

glad path
#

why would you even typehint

#

like

real sierra
#
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';
glad path
#

if ur gonna put a typehint why set it to none

real sierra
#

that give you string for move

glad path
#

๐Ÿ˜ญ

real sierra
#

idk what it is in python

#

immutable strings RAGEY

tender river
real sierra
#
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

tender river
#

{}

real sierra
#

?

tender river
#

{PieceType.QUEEN: 'q'}[move.promotion]

real sierra
#

???

tender river
glad path
#

if you want

tender river
real sierra
#

OHHH

#

i see

glad path
#

i only added typehinting because I forgot if .sort existed

real sierra
#
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 neuroHappi

glad path
#

can probably ignore the from part if you want to use standard notation

real sierra
#

standard notation sucks

#

incredibly hard

glad path
#

it does

real sierra
#

the problem isnt even convenience, it's algorithmic complexity

glad path
#

but you kinda dont have much of a choice when you play tournaments

#

universal notation is just nicer honestly

real sierra
#

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

keen hatch
#

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...

real sierra
#

programmers sus

#

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

tender river
#

i am a robot but i have less capabilities than you listed evilNYA

warped narwhal
real sierra
#

oh wow

#

going all-in if you're planning it out to this extent

stray dragon
real sierra
#

i would just half ass it

real sierra
warped narwhal
warped narwhal
#

mods don't work well when you want to connect multiple minecraft servers and discord channels together over one "bridge"

stray dragon
#

interesting

#

thought you'd only be limited there by the message speed from the bot on discord

glass flower
#

tink so it reads the live server logs to get info like if people join or something?

stray dragon
#

they enforce a limit of 10 messages per 10 seconds

real sierra
#

t can i see your code ReallyInnocent

stray dragon
#

shiro

#

you're a poopyhead

warped narwhal
real sierra
#

i wanna steal ur tricks tho...

warped narwhal
stray dragon
#

teasing me with your own chess bot while denying me a way to test my own smh

real sierra
#

sooon

stray dragon
real sierra
#

chayleaf said they were working on the bindings tonight pogs

stray dragon
#

i have a few mods that connect my servers to discord channels

warped narwhal
#

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

stray dragon
#

and from spam going on in the servers, i can see the rate limit is about that speed

glass flower
stray dragon
#

discord also applied the same shared action limit to non-purge deletes

#

can see it client-side

real sierra
sage crag
real sierra
#

idk how many of the api changes it's implemented

sage crag
#

t code all stolen SMH

real sierra
#

t code stolen WHAT

stray dragon
#

i've shown enough of my cde

#

code

#

not showing more

sage crag
glass flower
#

t just connects to a stockfish bot xdx

stray dragon
rigid snow
stray dragon
#

gotta tune those parameters

real sierra
#

i also need to do parameter tuning

rigid snow
real sierra
#

i was just gonna shift all the parameters slightly to make liek 6 versions of my bot and then put them in a tournament

#

OK gradient descent or something

stray dragon
#

stochastic gradient descent my beloved

sage crag
#

i wouldnt lie catEat

sage crag
stray dragon
#

saving things to files? nah, fuck that, print the parameters to console and then copy paste them in

#

lmao

sage crag
trim valve
#

shrio did you manage to fix that obscure move generation issue?

stray dragon
#

oh i already said lmao

sage crag
#

adverserial learning (optimise your bot to win against your bot Awkward )

stray dragon
#

lmao

real sierra
#

because it only occurs like

#

once every 50k games

#

?

#

and i got no test case for it Om

trim valve
#

๐Ÿ˜”

sage crag
#

better pray it doesnt happen in the tournament Awkward

stray dragon
real sierra
trim valve
#

cute chess gets really temperamental if you try and record pgns for lots of games

stray dragon
#

i want it to train off of completely random dogshit moves and extreme pro level moves

trim valve
#

tbh my main issue was perft stuff

sage crag
trim valve
#

because like 1 extra more at depth 3 scares me

stray dragon
#

and its own moves

sage crag
#

all it take is 1 bit flip to be doing 1 << 64 games

trim valve
stray dragon
#

not much more i can do with the training file until i figure out how shiro's board struct works

#

and for that

#

api

sage crag
#

i wonder if konii still better than shirobot

stray dragon
#

probably

sage crag
#

bot probably good by now susge

real sierra
#

not on a 1 minute game

#

longer game tho

sage crag
real sierra
#

konii is a hyperblitz player

sage crag
#

im not colonthree

#

shirobot vs magnus carlsen

#

30s game

#

1000 games

#

how many time does shirobot win

tender river
#

30s too long

#

0

sage crag
#

mambo, mambo

#

omatsuri mambo

sage crag
stray dragon
#

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)

real sierra
stray dragon
#

but that would take tokens i do not have

real sierra
#

here

#

lemme run shirobot vs shirobot 1 min game and put in chess com analyzer

tender river
#

shirobot loses

stray dragon
#

perhaps i should do a full rewrite of it using more advanced techniques

sage crag
tender river
sage crag
stray dragon
sage crag
#

my chess bot is gonna be so bad neuroSob

stray dragon
#

curious about what you've done, you've kept pretty tight opsec with your bot

sage crag
#

i spent 8 minutes earlier writing a pow function in my vm

tender river
sage crag
tender river
#

tight opsec

sage crag
stray dragon
tender river
#

that's one way to call it evilNYA

sage crag
#

jah

sage crag
#

a general purpose vm that is tiny

real sierra
#

society if __builtin_rand neuroLife

sage crag
#

no chess functionality yet

stray dragon
sage crag
sage crag
#

konii not write bot yet

stray dragon
#

i mean you can still do quite a bit even without the competition up

tender river
sage crag
#

ye since i have the chess c file

#

matter of principal evilAlright

stray dragon
#

i see

sage crag
#

wait play it against stockfish levels on lichess

#

@real sierra

real sierra
#

wdym on lichess

#

how do i play it on lichess

stray dragon
#

bruh now i'm actually thinking about doing a rewrite just to see what i can do

real sierra
#

but i do wanna play it against stockfish

#

i should install that

tender river
#

which ver

#

24.04 i assume?

real sierra
#

how check

#

forgor

tender river
#

/etc/os-release

real sierra
#

25.04

#

my bot vs stockfish lv 0

tender river
real sierra
#

Sadgi lost...

#

stockfish got hands

#

Sadgi lost again as other color...

#

is this really level 0

stray dragon
#

your bot sucks ass

#

smh

real sierra
#

i dotn wanna hear it

#

stockfish is 78mb

glass flower
#

stockfish making a single decent move and your bot explodes WAYTOOERM

tender river
#

neuroCatModeOn gonna use stack over cabal in this case

stray dragon
#

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)

tender river
#

@sage crag this is so cursed evilWheeze

#

haskell package manager downloading a pinned haskell with nix neuroThink

stray dragon
#

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

warped narwhal
#

I wonder if I can make a neural network for evaluation within the token limit, and then distill the weights from stockfish.

stray dragon
#

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)

real sierra
#

what ive learned over the last 10 minutes is that not a soul alive knows what the stockfish settings do

stray dragon
#

LOL

#

i looked at the documentation and i have no idea how to work with it

real sierra
#

time to get grok to hallucinate it for me

#

grok searching the web CatLaughingAtYou good luck bozo

rigid snow
#

the new model

real sierra
#

im on expert right now

#

surely i get expert answer

rigid snow
real sierra
#

actually not bad

#

even cites its sources

sage crag
real sierra
#

im gonna try using limit ELO instead

#

for a more accurate (?) rating

sage crag
#

i think even human beginners can beat level 0 with barely effort neuroCry

tender river
#

neuroNOTED beat stockfish 0 to beat shiro

real sierra
#

wait

real sierra
#

the lowest the elo limit setting goes is 1350

#

you're telling me stockfish cant play weaker than 1350

#

NAHH no wonder i lost to level 0

sage crag
#

no no it can

real sierra
#

cant

sage crag
#

seriously play against stockfish level 0 on lichess

#

that thing is 100 elo or worse

real sierra
#

sus i dont know what lichess uses

#

it has different levels

#

1-8 on lichess

#

as opposed to 0-20 on stockfish

sage crag
real sierra
#

it is stockfish on lichess supposedly

tender river
#

๐Ÿงšโ€โ™€๏ธ ๐ŸŸ

sage crag
#

its a version of stockfish specialised to play chess variants iirc

#

what instructions should i add to my vm

#

for fun

tender river
#

comefrom

stray dragon
#

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)

real sierra
#

u guys are using neural nets?

stray dragon
# real sierra u guys are using neural nets?

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)

warped narwhal
tender river
#

nyaa neuroNya

warped narwhal
#

Chayleaf is become cat

stray dragon
real sierra
#

i lost to lichess lv1 stockfish catdespair

#

i dont think this will be a useful benchmark after all

real sierra
stray dragon
#

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

real sierra
#

im cooked

stray dragon
real sierra
#

not 0 or 1

#

you have multiple bitboards

#

for a few different possible values

stray dragon
#

no like for each piece

real sierra
#

oh right

#

yeah you'd need a few per piece

#

but you can init each in a single line so

stray dragon
#

piece-square tables usually have a float or a large int representing each tile for each piece

real sierra
#

low tokens?

#

i know that

stray dragon
#

"if knight is here, 0" or "if knight is here, 1" would be awful for performance

real sierra
#

didnt listen SMH

stray dragon
#

you want "0.8567" or "1.6494" or such

#

needs more bits

real sierra
#

i dont even have piece square tables SMH

#

where do you find the tokens for all this

stray dragon
#

smh

real sierra
#

that doesnt answer my question

#

idk how you found 120 tokens

#

the bare minimum for my bot already takes so many

#

nevermind extra features

stray dragon
#

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"

real sierra
#

nuhuh 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

stray dragon
#

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

real sierra
stray dragon
#

smh

#

sub-optimal pruning

#

anyways back to looking into negamax

real sierra
#

negamax equivalent to minimax

#

but probably less tokens to implement

stray dragon
#

i don't fully understand either, and i want to fix that

real sierra
#

minimax = maximize own score and minimize opponent score

warped narwhal
#

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.

stray dragon
#

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

real sierra
#

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

real sierra
#

it's not used for the majority of my search

stray dragon
#

wikipedia with psuedocode??? i kneel

real sierra
#

its just a sad necessity

tender river
#

the end of genesis T.N.K.evolution turbo type D

i can't compete with that naming vedalCry

stray dragon
#

chayleaf what have you given me neuroDespair

real sierra
#

every chess bot gangsta till genesis T.N.K evolution turbo type D walk into the room

stray dragon
real sierra
#

im just now discovering the magic that is anonymous structs

#

almost cant believe this is valid syntax

tender river
#

ye union too

sage crag
#

who pingded me

real sierra
#

thought it was only valid for like

#

defining the type

sage crag
real sierra
#

i didnt know you could directly use it as a type

#

ahead of a variable

sage crag
#

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 neuroSadA

#

ignore the completely wrong code actually i dont care MyHonestReaction

real sierra
#

i think that's transposition tables working NOWAYING

#

that was way simpler than i expected

sage crag
#

tram pass

real sierra
#

wait i didnt initialize the hash Awkward

sage crag
real sierra
#

uh oh

#

bot went back to being stupid

#

why dum now

#

i fixed bug

#

why is dum now

nocturne olive
#

Still no KT support?

real sierra
nocturne olive
#

How interesting

tender river
#

it does not but you can add it yourself its pretty easy

nocturne olive
#

I heard Shiro tried to add it but it didn't work

tender river
real sierra
#

chayleaf modified the token parser

#

we're not using the old one

tender river
#

ye modified (rewrote)

nocturne olive
#

Now that's silly

#

I guess a lot of the memory use was the canvas event

#

This was 30GB higher during canvas

real sierra
#

i dont think these changes have led to improvement (my bot is white)

fast pagoda
#

bold

nocturne olive
tender river
nocturne olive
#

I don't know if it works

#

I don't know how to build this

tender river
#

apt install sbt

sage crag
#

Insert Rosaries
60
Yes No

tender river
#

oh right

sage crag
tender river
#

ubuntu derivatives dont have sbt

nocturne olive
keen hatch
nocturne olive
#

Whuhhhhh

sage crag
nocturne olive
#

Why are you using Windows with 512GB of memory??

sage crag
#

dink donk dink donk

#

bells

tender river
# nocturne olive Not a thing that exists
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
real sierra
sage crag
#

Insert Rosaries
30
Yes No

nocturne olive
nocturne olive
real sierra
#

doesnt make any sense that this isnt working Awkward

tender river
#

you can install sbt via nix if all else fails

nocturne olive
#

I do not have Nix on this system

tender river
#

curl -L https://nixos.org/nix/install | sh -s -- --daemon

keen hatch
# nocturne olive I asked why, not if

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 )))

nocturne olive
#

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

sage crag
#

not working because why would it work

real sierra
#

im so confused

#

so, so confusedxc

#

the highest this could ever be is like

#

2

#

actually thats a lie

keen hatch
real sierra
#

no this makes sense

nocturne olive
#

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

tender river
#

Awkward still waiting

sage crag
#

haunted

nocturne olive
sage crag
#

ye haunted

#

silly string

tender river
nocturne olive
#

Oh

tender river
nocturne olive
#

I think it may have functioned

#

It shows a number

tender river
#

make sure it doesnt show any autogenerated tokens

#

for example python and haskell have semantic whitespace tokens

nocturne olive
#

Well in Kotlin I don't think whitespaces are tokens

tender river
#

evilShrug it could be automatically inserted semicolons or w/e

real sierra
#

i think hashing is broken Susge

nocturne olive
tender river
#

evilSMH too long to manually count

nocturne olive
#

It's a random file

hollow spruce
#

All projects will be transferred to python 3.14 version ๐Ÿ™‚

nocturne olive
#

No I don't think so

#

There's plenty of stuff that can't upgrade past 3.10 or 3.11

opaque sigil
#

That random library that refuses to update from 3.9

hollow spruce
#

RUST AND CPP NEED CHANGE ( in SOME MAIN FILES )

tender river
real sierra
#

that'd do it

nocturne olive
tender river
#

i counted ~28

#

probably autoinserts newline tokens

nocturne olive
#

Whuh

real sierra
#

YES fixed everything

#

will push library update shortly

nocturne olive
tender river
#

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

keen hatch
tender river
#

its up to you to figure it out evilNYA

nocturne olive
#

Why waste such great hardware on LLM inference?

hollow spruce
#

Jjt
Just in time

tender river
#

nyo way it downloaded evilHyperYay

#

1h30m neuroDespair

hollow spruce
#

updated

keen hatch
nocturne olive
#

I assume you train on the 5090 I noticed

hollow spruce
keen hatch
nocturne olive
#

Silly

#

I have a 3090 mainly for training vocal synthesizers

#

I want more though

#

But money

sage crag
#

gyze honestly DT

#

HONESTTYYYYYY

real sierra
#

gonna give my bot 5 mins now to see how much the transposition tables help mhm

hollow spruce
#

Updating wsl

tender river
sage crag
tender river
hollow spruce
#

Pc crash again

nocturne olive
hollow spruce
#

Time to buy new pc hmmmm

tender river
fast pagoda
#

api out? have i missed Big Thingsโ„ข ?

tender river
fast pagoda
#

ok i saw tokenizer and cloned that in a panic

tender river
fast pagoda
#

damn this thing is tiny

#

idk what i expected but it wasnt a 66 loc application

tender river
#

works better than 1400 lines of rust evilNYA

hollow spruce
#

(venv) root@localhost:~# python --version
Python 3.14.0rc3

fast pagoda
#

using release candidate python is a testosterone maxxed decision

opaque sigil
#

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 enub

hollow spruce
#

Numpy already installed

tender river
nocturne olive
#

No formatter on Mint basic text editor

hollow spruce
#

Sting changes are Awesome

midnight sigil
#

Awasome

#

awa

fast pagoda
#

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

tender river
#

python 4.0 (250 breaking language-level changes, 50 modules removed)

fast pagoda
#

only 250

#

nice job everyone

tender river
real sierra
#

dejj 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

opaque sigil
#

how tf do you run into collisions with 24 bits

hollow spruce
#

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.

fast pagoda
#

lol i love 100posts man

midnight sigil
hollow spruce
#

I hope they won't do this

opaque sigil
#

You very much can but with that many bits it's honestly impressive

fast pagoda
#

well chess positions is like

#

what

#

infinite

#

basically

#

a lot more than 24 bits

real sierra
#

the odds in this table are quite low but i dont have nearly as many bits

opaque sigil
#

That's a lot of bits huh

real sierra
#

32 bits gives you 4,294,967,296 indexes

#

obviously at 1 byte each thats already 4 gigs

#

which is not tenable

nocturne olive
#

Well guess now that Kotlin is supported in thingy
Would have to know how to make the C API part work

sage crag
#

compress

real sierra
#

if you want to make kotlin bindings, i'll give you early access to the repo

sage crag
#

im making koniilang binding

nocturne olive
#

And then specifically your C API

real sierra
#

thats a good place to start

fast pagoda
#

shiro tryna hit deph 69 and become the world's greatest chess grandmaster in these game

sage crag
real sierra
#

OH

#

i know what the problems are

#

of course

#

wait no i dont uuh nvm

#

sorry thought i had a eureka

#

didnt

fast pagoda
#

real

hollow spruce
tender river
#

@nocturne olive please pull latest changes and run sbt scalafmt

fast pagoda
real sierra
#

white is playing like it's trying to lose again

keen hatch
fast pagoda
#

where overpriced 5080 24gb

#

super

nocturne olive
hollow spruce
#

We can use soter station to make rtx 5090 to 193 gb vram

real sierra
#

but like

real sierra
#

white seems to be trying at least

fast pagoda
keen hatch
nocturne olive
#

Well I got the 3090 for cheap, around 550โ‚ฌ or so

fast pagoda
#

yea i got dat Q4_k_m transposition table

real sierra
#

stockfish is such a scam

#

"stockfish level 0 is easy!"

finds and follows a mate-in-11

fast pagoda
#

beginner's luck

real sierra
#

something like that

#

stockfish min elo setting seems to be about 1300

#

my bot is definitely not 1300

fast pagoda
#

maybe they literally cannot make ol' stocky dumber than that without manually inserting shitty moves

nocturne olive
#

welldoneneuro Silly

real sierra
#

i need to start printing my eval trees again

#

need to tune these hyperparameters

keen hatch
nocturne olive
#

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

fast pagoda
#

i have something i need to finish

real sierra
#

this is maybe the most helpful debugging tool ive made Prayge

midnight sigil
#

is it made with java

fast pagoda
#

now show bad

real sierra
#

oh

#

i might've said that a bit misleadingly

#

i just made it dump the move tree as json neurowheeze

#

then i dump it in an online viewer

midnight sigil
nocturne olive
#

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

real sierra
#

ok

#

go for it

#

oh right you would need access to the api

nocturne olive
#

Yeah I would need to know what the API looks like

fast pagoda
#

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

real sierra
#

its markdown

#

if thats ok

real sierra
#

maybe gives you something to compare against

fast pagoda
#

i am a certified markdown enjoyer so thank u

midnight sigil
#

shibo where can I grab the C chessapi headers

fast pagoda
#

open vscode
4 annoyingly unfinished projects open from last run

it's so over

sage crag
sage crag
#

this is so cursed

fast pagoda
midnight sigil
midnight sigil
#

also bitboard.h

real sierra
#

even the header is providing quite a lot

midnight sigil
#

catdespair okie

opaque sigil
hollow spruce
#

K4VAF325ZC-SC32
GDDR7 VRAM
Each chips has 50ยฃ

#

5 piece purchase able

tender river
#

@fast pagoda update its now 46 lines long (and that's after superbox adding 11 lines)

fast pagoda
#

least efficient scala moment

fast pagoda
#

the repo has grown in size 11 kb though im out of hard drive space

tender river
fast pagoda
#

actually most of that is probably just git

#

lol

#

src is 1.7 kib

#

damn

real sierra
fast pagoda
#

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

sage crag
#

not even notice SMH

real sierra
#

dont care still bad MyHonestReaction

fast pagoda
#

gigabased

#

randombots playing against each other and one getting mate in 18 is pretty funny to watch

keen hatch
nocturne olive
#

It's fun stuff
Recently I got two comms from Aurum and that paid for my new AIO

fast pagoda
#

behold
agi level chess

real sierra
#

let the AB testing begin

real sierra
fast pagoda
keen hatch
nocturne olive
#

How silly

#

I just use LMMS because I'm broke

fast pagoda
keen hatch
fast pagoda
#

you can get it on steam and run it w/ proton apparently

keen hatch
fast pagoda
real sierra
#

lmao

tender river
fast pagoda
# real sierra wait what even did this

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;
}

mhm

tender river
fast pagoda
#

it's truly intelligent

tender river
#

you wouldnt need it for ableton neuroCatUuh

sage crag
#

nopy

fast pagoda
real sierra
#

0.25 and 0.75 were about the same

#

and 1.4 was clearly worse

#

maybe the best is at 0.5 Hmm

keen hatch
fast pagoda
#

oh that's just what the discord caterpillar emote looks like huh

#

that's crazy

tender river
#

๐Ÿ›

fast pagoda
#

i think atorin should be allowed to roam free in this server

sage crag
#

shimo

tender river
sage crag
#

why dont you just

#

apply genetic algorithm

real sierra
#

i dont want to write the god awful code to manage a cli chess tournament

fast pagoda
#

just write teh good code to manage a cli chess tournament then

real sierra
#

would not be fun

obsidian mantle
#

guys is it out? the api

real sierra
real sierra
fast pagoda
tender river
#

OhISee 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

fast pagoda
#

surely a 4 minute training run would be 3800

tender river
#

5700

real sierra
#

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

fast pagoda
#

use so much time that it's assumed your bot has exploded and you get kicked then sue the tournament for collusion against you

sage crag
#

i dont think you will win this trial

glass flower
#

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 neuro5head

real sierra
#

neuro5head (you will come in last)

sage crag
fast pagoda
#

what c formatter doesn't add 30000000 lines of empty space bruh

glass flower
sage crag
tender river
#

neuroCatUuh i looked into chess eval neural networks and they start from like 8mb

fast pagoda
fast pagoda
#

it's hybrid

tender river
#

no its too big for 1024 tokens

fast pagoda
#

well yeah i mean definitely

#

but

#

in general

tender river
#

i dont care about in general evilSlam

real sierra
#

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

tender river
#

rewrite deliv

real sierra
#

i could store lists of parents in the transposition table

#

but that doesnt work because im out of tokens perish

fast pagoda
#

isnt that normal

real sierra
#

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

#

sus no wait...

#

the parents are also in the transposition table

#

oh but they aren't necessarily transpositions perish

tender river
#

new strategy optimize for hash collisions

real sierra
#

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

hollow spruce
#

Chatgpt doesn't give ans straight and
And i want removed complete ffmpeg software

#

And I will make personal file runner

fast pagoda
#

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

keen hatch
#
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

stiff micaBOT
#

aww, thank you~ ( โ—กโ€ฟโ—ก *)

fast pagoda
#
if piece == PAWN and row == 0:
  print(f"๐ŸŒฑ {piece} promotes to QUEEN!")  # Surprise upgrade!

total clanker destruction

fast pagoda
hollow spruce
#

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

keen hatch
fast pagoda
#

i just wanted to see if pygame would enjoy the emoji

#

it didnt

hollow spruce
#

I will be pissed working on multiple projects at same time

fast pagoda
#

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

real sierra
fast pagoda
#

that's fine ill dm you for my ssh credentials

fast pagoda
#

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

real sierra
#

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

sage crag
#
#!/usr/bin/env python3
#

then chmod +x the file

#

then give it the file

real sierra
#

that worked

#

idk why nothing else i tried worked

#

but thanks

sage crag
#

ye me evil

tender river
#

evilSMH you konii

tender river
#

evilBwaa <-- evil
koniibwaa <-- konii
different ye?

real sierra
#

chayleaf whyd u send the same person twice

fast pagoda
#

i computed sha512 for both and they are the same

real sierra
#

i love java but

#

i dont think java can compete in a low tokens contest

tender river
#

scala might deliv

real sierra
#

its just not possible

#

scala sus

tender river
#

shiro have you seen the diff neuroKufufu

real sierra
glad path
#

YAYAYYAYAYAYA

#

I got my own implementation of RAG working!!!

#

took a few hours

fast pagoda
glad path
#

still needs tuning

fast pagoda
#

what did you use for the db or store

glad path
#

next up I gotta make a whole agent that runs on the side to manage memory writing

glad path
fast pagoda
#

damn right to mega rag

glad path
#

uses a really small qwen instruct model to summarize recent input into a query

#

queries

#

and adds into the existing context window integrations

fast pagoda
#

i feel like qwen 0.5 or something i would NOT trust to manage my context and anything larger has to be so slow

tender river
fast pagoda
#

but also i had echo doing his own memories

#

so

glad path
#

it literally just generates a query for the database

#

it runs often

glad path
#

im going to be using a larger model for writing to the db since that will likely require something with reasoning capability

real sierra
#

i go bed early tonight

fast pagoda
#

man's got vram to spare

fast pagoda
#

not querying, writing

real sierra
#

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

tender river
real sierra
#

transposition table will ruin me

tender river
#

rewrite rewrite rewrite

fast pagoda
real sierra
#

haskell when

tender river
#

ye i sleep

real sierra
tender river
fast pagoda
#

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

real sierra
#

salute tokens

fast pagoda
#

just the hashes

tender river
#

i also already have basic bindings that arent in any way idiomatic or usable

#

so yeah soon neurolingSlep

fast pagoda
#

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

real sierra
#

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

fast pagoda
#

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

real sierra
#

and pass it in

tender river
#

c++ deliv

#

huge stdlib

real sierra
#

i currently have uh

tender river
real sierra
#

...2 tokens free

fast pagoda
#

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 mhm

glad path
#

why is this such an annoying typo to look at

fast pagoda
#

=|

#

but =!

#

the typo is fed up with itself

glad path
#

they all end with ):

#

do you see it

real sierra
#

C function declarations all end in bclose YES

fast pagoda
# real sierra ...2 tokens free

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)

real sierra
#

to tell if a loop has occurred

#

you need to keep a list of only the hashes you've encountered during this particular backprop

sage crag
#

phrr

real sierra
#

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

fast pagoda
#

lmao

real sierra
#

oh man wait

#

found a ); to replace

#

+1 token

amber fractal
#

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.

sage crag
#
def bot():
  return get_board().get_moves()[0]