#programming

1 messages ยท Page 196 of 1

sage crag
real sierra
#

there

tender river
#

no

#

redefining is fine

dense kestrel
#

can we calc while the other side makes their move or no

sage crag
#

ok there's still a problem

tender river
#

for will refer to the original for after macro expansion

sage crag
tender river
#

tho other macros wont be able to use it anymore

sage crag
#

i ## __COUNTER__ does not work like you think it does

real sierra
#

๐Ÿ’”

#

it was such a good idea

#

would allow nested macro loops

#

without shadowing vars

sage crag
#

you need thi

#define concat_inner(a, b) a##b
#define concat(...) concat_inner(__VA_ARGS__)

#define for_(l) for_v(concat(i, __COUNTER__), l)
#

i dont know why it needs a second degree of separation

real sierra
#

HOLY macro machinery

sage crag
#

it just does

#

i checked the preprocessor

dense kestrel
#

simd vectorization?

real sierra
#

single threaded

dense kestrel
#

wow

real sierra
#

any parallel processing banned

dense kestrel
#

i will be abusing simd then!!

real sierra
dense kestrel
sage crag
#

for_(10)
expand to
for(int i0=0;i0<10;i0++)
but expand to
for(int i__COUNTER__=0;i__COUNTER__<10;i__COUNTER__++)
if i use concat_inner instead of concat

dense kestrel
real sierra
dense kestrel
#

incredible

real sierra
#

you do have a ram limit

dense kestrel
#

what is the mem limit

real sierra
#

tentatively like 4GB

#

if you crash every game you're in, you will probably lose the tournament

#

lets put it that way

dense kestrel
#

hmm

#

is it any language allowed?

#

or any LLVM language

real sierra
#

specific languages allowed but under the right conditions im willing to officialize supplied bindings to the chess api

#

currently C (C++ probably too?) and python supported

#

there's people working on or planning to work on C# and rust support tho

dense kestrel
#

incredible

real sierra
#

credit to them

dense kestrel
#

i don't even know if i will be able to l1 optimize this with so few tokens

real sierra
#

yea my code is barely under the limit with 189 lines

#

idea

#

the piece constants are currently 1 through 6

#

so I think I can just

#
int value = 0;
for (int j = 1; j < 7; j++) {
value |= chess_get_bitboard(color, j);
if (value & moveto) break;
}
#

because

#

by pure coincidence

#

the piece constants are roughly sorted by value

dense kestrel
#

what is the strength of the computing

#

for the bots

#

and what is the cpu arch

real sierra
#

I don't really have a number

#

it's running in a VM

#

it's x86_64

dense kestrel
#

alr

real sierra
#

are you plugging all these answers into an LLM or something

#

oh I see you're coding already

dense kestrel
#

also i think gpt is kinda too stupid to be of use in a token limited context

#

because it probably doesn't understand that you can make everything jank to save space

real sierra
#

you were just going silent for a bit between questions so I wondered if you were actually just shuttling messages between myself and an LLM

dense kestrel
#

anyways

#

back to the mines of vscode

tender river
#

neuro neuro you can call me neuro

real sierra
tender river
#

--> neweroALERT <--

dense kestrel
#

wow instead of writing ts from the ground up, i am going to cut things from an existing bot until i can make it fit

#

then i will add more heuristics

real sierra
#

need more tokens

#

its time

hollow spruce
#

Hmmm

dense kestrel
#

okay the stock minimax has

#

performance is only downhill from here

real sierra
#

ideally this goes without saying but

#

using anything outside the stdlib is also not allowed

#

aside from the provided chess api

real sierra
#

found a "sometimes" bug

#

out of 36 runs in gdb, it ran succesfully 35 of them

tender river
#

gdb

#

its probably a concurrency issue

real sierra
#

nah i found it

#

stupid bug

#

i set some variables = 0 outside of a loop instead of inside

#

this is so frustrating

#

my bot is just allergic to capturing pieces somehow

#

why

patent elk
#

everyday i thank god im not majoring in cs

real sierra
#

nor am i

patent elk
#

i couldnt imagine hinging my future on code

#

programmers are so strong

burnt ridge
real sierra
#

i am so confused

#

my bot keeps losing to the random one

#

how is this possible

#

like it just refuses to capture

#

re-fuses

#

why

jagged marsh
#

Bugs I have done myself, maybe related: > vs >= and unsigned vs signed comparisons

real sierra
#

profiling time

real sierra
#

WAIT

lament igloo
#

wondering why the lavalamp app is 150mb
someone extracts it to see
110mb of fonts
AINTNOFUCKINWAY

real sierra
#

why do i only check whose turn it is once

#

im playing like 200 moves in the loop that starts immediately after

#

this could be the breakthrough

#

it was not the breakthrough

#

i dont even know how this happens

#

i dont think i saw it take a single piece except when it was in check

#

ok i think i actually

#

have something backwards in the code

#

it's playing too perfectly badly

tender river
#

was it also like that pre-minification?

real sierra
#

i think its actually optimizing for the opponent's score

real sierra
#

but like

#

it's playing optimally badly

#

i think thats why its losing to random

#

like

#

its taking no pieces unless in check

#

and most of its moves place pieces on attacked squares

tender river
real sierra
#

its actually impressive from a point of view

#

i think the backpropogation is prob just inverted

real sierra
#

ok im doing another game

#

but this time im watching

#

i want to see if my bot makes a single capture

olive sable
#

I have gotten out of bed neuroHypers

#

It only took uh, 4 hours

real sierra
#

gm sam!

hollow spruce
real sierra
#

my chess bot is under 1024 tokens EZ

wide flicker
#

hi canvas chat has turned to nn but worse so i'm seeking refuge here. in other news i finally got git correctly set up in my new bazzite setup

hollow spruce
real sierra
#

no probably not lol

hollow spruce
blissful geyser
hollow spruce
hollow spruce
amber fractal
faint sandal
#

you'd fit right in

blissful geyser
#

The crank window now explodes when overcranked beyond 100

#

and then another window pops up where you have to replace the crank with a spare one by dragging it to the volume crank window

real sierra
#

fixed a bunch of tiny logic bugs in the chess api

#

Pointless never ending

fluid junco
blissful geyser
#

plays the loudest explosion.mp3

#

since its also at 100%

#

for full immersion xdx

fluid junco
#

hell yeah

real sierra
#

@tender river

#

i put a - on the backpropogation function

#

just to see what wouldhappen

#

it's playing the best damn chess ive ever seen

#

it actually was optimizing for worst play

fluid junco
#

isn't not taking a piece an illigal move btw?

olive sable
#

why would it be?

real sierra
#

OH

#

it finally clicked

#

the reason why my backpropogation is reversed

#

the moves coming out of the root node of my tree are mine

#

but that means the position they're coming from is the opponent's

#

i actually want max losses not wins i guess

fluid junco
#

such a me-coded story
trying to maximize wins, maximizes loses instead

blissful geyser
real sierra
#

im so proud

#

all this work wasnt for nothing

#

my bot now plays a really mean, really aggressive chess

blissful geyser
#

i have a stupid suggestion to make if you dont mind

#

what about a negative ELO rating chess bot

real sierra
#

a bot that loses as much as possible is hard because it's solving the exact same problem as a bot that wins as much as possible, just for the other player

#

like its an identical problem

blissful geyser
#

like calculating the fastest way to get their own piece checkmated

real sierra
#

yes

#

that involves figuring out the fastest way for the opponent to checkmate you

#

which is what every chess bot tries to do, but for themselves

#

its the same thing OK

blissful geyser
#

but no one's done it before no?

real sierra
#

i just did accidentallyglueless

fluid junco
blissful geyser
#

wait fr kekpat

real sierra
#

i was missing a minus in my code

#

oopies

#

i was wondering why it was so bad

#

i think i need to adjust my bot's time budget

#

it's burning through too much time in the early game

blissful geyser
#

there's actually two ways to win a regular chess game

  1. checkmate
  2. waste your opponents time by making them stressed out and anxious from random and stupid moves
fluid junco
#

if you flip the board and only your pieces land standing, you win

real sierra
#

the time is so tight

#

idk how to improve my performance too much

#

time management hard

fluid junco
#

time management so hard I'm afraid i'm losing my job to it neuroSad

#

how do I explain to people that I cant do coding non stop without looking at some "epic wombat facts" or whatever
then sitting here trying to estimate how much time I actually wasn't looking at wikipedia

amber fractal
real sierra
#

my bot is definitely better than random now

#

makes a lot of questionable moves but

#

progress

#

i think the future for this bot is finding a way to reduce the tree width

#

if i can optimistically trim branches early that would help a lot

olive sable
#

aight i compiled renpy

#

now i can start modifying the engine code

real sierra
#

wtf my bot is way below the limit now

#

fun fact this is my fav number

olive sable
#

why?

#

explain yourself

real sierra
#

idk i like it

#

thats like asking why my favourite colour is what it is

olive sable
#

i mean, i do put thought into stuff like that

#

explaining why you like certain things is interesting

fluid junco
real sierra
#

i dont

#

i just like what i like

#

i can associate reasons of it that i thought up afterward

#

but i definitely didnt come to like things like my favourite colour for particular reasons

#

such is true with my favourite number

#

once day i just decided it was my favourite

#

never changed my mind about it so i guess i was right

olive sable
real sierra
olive sable
real sierra
#

salute have fun with that

olive sable
#

i wont

fluid junco
olive sable
#

lemme vibe code this

fluid junco
#

how can you like a color

olive sable
#

i like blue

#

but thats cuz im red-green colourblind

fluid junco
#

how do you know you like a color

olive sable
#

i view it more favorably than other colours i guess

real sierra
#

I just like blue

#

you offer me a choice between two colours

#

I pick the blue one

#

whether that's because it's my favourite, or whether that's why it's my favourite, is a valid question though

fluid junco
#

if I had to pick a color I would select a random one
which is kinda how I landed with red

ivory plinth
#

#cba6f7 neuroTroll

real sierra
#

that better not be

ivory plinth
real sierra
#

sorry I thought it was a different colour

olive sable
#

???

ivory plinth
real sierra
#

that's what I thought yours was at first

ivory plinth
real sierra
#

๐Ÿฅ€

amber fractal
#

THATS CRAZY

fluid junco
#

Amazing color

olive sable
#

i dont get it

fluid junco
#

we now have jerma-bacteria, shiro-color

#

what else

amber fractal
ivory plinth
#

forwarding that to gen brb

amber fractal
#

Forgot to like the name

olive sable
#

huh

real sierra
#

there's a feature I wanna implement into my bot mhm I was considering it a while ago but figured I wouldn't have the tokens

#

currently the tree it builds is discarded and rebuilt each turn

fluid junco
#

follow your dreams and deadlines

real sierra
#

but ideally it re-roots it to the traversed move sequence

fluid junco
#

ooh easy perf win

real sierra
#

yup yup

#

I can reuse parts of the tree I've already explored

#

with how it's coded, the move I make will be the most explored move in the tree

fluid junco
#

just stick a global var in there neurOMEGALUL

real sierra
#

so it should be a significant speedup

#

well it's not that easy

#

the trouble is that even if I know what move I made from the last tree, I don't know what move the opponent made

#

there's no feature to get that info so I would have to work backwards to figure it out myself

fluid junco
#

you probably can make the board drom those moves

real sierra
#

I think I take the hash of the current board, undo the last move on the board, get legal moves of that and see which move produces the hash I want

fluid junco
#

then compare boards

#

yeye

real sierra
#

yesh

#

but I only have 23 tokens to add all of that and the reroot code

#

so I'm not sure it fits

fluid junco
#

need to minify other code then?

#

does the tokenizer count whitespace? neurOMEGALUL

stray dragon
#

FUCK!!!!

#

was probably the stupid fractal pattern of search stages that i gave colorful function names to

#

i do wonder if there's a better way to do that

obsidian mantle
#

But arena app gives full list of moves from the game every turn?
With opponent's move being last

#

And i think it also restarts the bot every turn so you cant remember last move calculations. Maybe this one is wrong i cant remember how i got this info

obsidian mantle
#

Yeah i thought its strange

#

But i tried to check something with global variable being changed and the next move it got reset. So i assumed it goes like that.

#

Iirc

#

Maybe there are some settings in the arena app for this

stray dragon
#

wait so then i don't need a while loop running the thing, and only need a main function that runs once?

obsidian mantle
#

It has to be checked

stray dragon
#

it's so close

obsidian mantle
#

If im right then yes but it will make it inconvenient to debug cause you'll have to restart it every time

#

Not like wrapping it all in while costs a lot of tokens but

stray dragon
#

yeah only saved me like 4

obsidian mantle
#

If its like that then it can save some

obsidian mantle
#

Does it work like that?

stray dragon
#

this code hasn't run once

obsidian mantle
#

Ooh

stray dragon
#

i don't think it'll need much reworking once i do start troubleshooting it, but i'm sure it'll need some

obsidian mantle
#

You'll also need to process commands from the app, if we are using UCE

#

Or maybe shiro will allow us to do it "outside of the token limited area"

stray dragon
#

shiro's api should have me covered

#

any function with underscores is from that api

fluid junco
#

disables inlining
does inlining via const propagation
thanks gcc

#

I'm trying to figure out if stuff crashes if you cast a function into a function that has more parameters

#

it shouldn't, probably, right?

stray dragon
#

no clue

fluid junco
#

at worst this should just waste some stack space, but it should cleanup after

obsidian mantle
#

I feel like it must crash

stray dragon
#

same

fluid junco
#

need to lookup if that's ub

obsidian mantle
#

It will just override alligned shit in function and its going to collapse
Or something

hollow spruce
#

Hmmm

obsidian mantle
#

I dont know assembly very well though

hollow spruce
obsidian mantle
#

Why couldnt they name their operators normally

hollow spruce
obsidian mantle
#

I meant the assembly syntax

#

Maybe i used wrong word saying "operator"

stray dragon
#

yippee

fluid junco
#

ops

obsidian mantle
#

Basically i wanted to say any keywords

hollow spruce
obsidian mantle
#

Yes like that

fluid junco
#

never read any code from the 90's

obsidian mantle
#

Jmp doesnt look bad

fluid junco
#

their vars be like
b
a
jm

obsidian mantle
#

Yeah i have a bunch of old people in my company who name all their variables like bool_1 bool_2 int_15

fluid junco
#

movups

hollow spruce
#

Unclear code

fluid junco
wicked vale
fluid junco
hollow spruce
#

.asciz "lol"
.size .L.str, 4

    .type   .L.str.1,@object                // @.str.1

.L.str.1:
.asciz "%d %d\n"
.size .L.str.1, 7

    .ident  "clang version 20.1.8"
    .section        ".note.GNU-stack","",@progbits

Hmm

obsidian mantle
#

So it worked?

#

Maybe lucky nothing got broken

#

Or depends on functions themselves

fluid junco
#

it is undefined behavior to call a function through an incompatible function pointer type FRICK

#

so it may break at any point

stray dragon
#

surely it'll be fine glueless

#

only takes 4 tokens to define the ints

#

sure

#

at least that's everything it needs in 991 tokens, just need to actually run it and fix it

olive sable
#

I was thinking "i wonder wjen my package arrives cuz i kinda need it rn" and roght then the delivery driver appeared infront of my house

#

I manifested him

fluid junco
#

manifesting

#

people knew of manifesting when they invented "speak of the devil"

olive sable
#

This calibration mic is a lot smaller than expected

fluid junco
#

hold on let me check the rules

#

messages should be 13+ appropriate neuroSadge

olive sable
stray dragon
#

lol

cobalt sigil
midnight sigil
#

name removed to comply with dmca inc. is a good company

rigid snow
#

discord dmcaing apkmirror AINTNEURWAY

#

gm

cobalt sigil
#

up to down only have the latest one

#

well it seems only apk mirror have the old apks
but need to install apkmirror installer which is a bit weird, but at least it works

stray dragon
amber fractal
#

Let me ask, is it another UI update or is it new features

cobalt sigil
# amber fractal Let me ask, is it another UI update or is it new features

tbh I should be dumb and press the update button on Google play, and after I updated it it runs poorly on my phone, when I selected a channal the screen will suddenly went blank and after swapping different channels again then it will become normal
this is the only reason I switch back to slightly older discord ver

stray dragon
#

but in case you were wondering what they've done recently:

#

arrows

midnight sigil
#

my discord hasn't update

amber fractal
#

I got sniped by a discord update on PC that I couldn't deal with because immutable. Glad to have options in that case

midnight sigil
#

do you guys meant the android discord?

amber fractal
#

Android discord is the current discussion yep

obsidian mantle
#

My android discord looks unchanged so far neuroMonkaOMEGA

#

Is there some mega update ahead again neuroMonkaOMEGA

#

Or do you mean very old versions

amber fractal
midnight sigil
#

seems fine nwero

#

I can extract the apk for backup NeuroClueless

stray dragon
#

click on a channel and wait for the messages to load

obsidian mantle
#

Where do i find these arrows

stray dragon
#

never used to do that

#

i still have the old version and have tried both, it's very noticeable and i don't know how they think it's ok

amber fractal
#

I at least am still staring down an update button

midnight sigil
stray dragon
#

app has barely changed appearance or functionality they just push awful updates and never fix issues

midnight sigil
#

that's why it's been grey screens so much while loading a channel

stray dragon
#

yep

amber fractal
#

My experince has already been suboptimal the last couple of days.

fluid junco
#

i just want my streams to not be blocky as hell is that too much to ask for

stray dragon
#

you will get ui updates just to fuck with you

#

and ads

#

and nothing more

olive sable
#

A new one is like 70 bucks WHAT

fluid junco
#

proper sound costs A TON holyyy

#

i just use headphones

olive sable
#

Most of the tweeter is fine, its just the dome is dented and the really tiny copper wires are broken

#

So the part that actually makes the sound is dead basicly

fluid junco
#

if you really care abt that it's money well spent i guess

olive sable
#

Ill just try to find the cheapest possible replacement

#

I guess for 5 2ndhand speakers with 15 total drivers, having only 1 broken is not too bad

faint sandal
olive sable
#

I bought a replacement, 80 bucks with shipping AINTNOWAY

midnight sigil
#

is this thing new in vs2022 FOCUS

hollow spruce
opaque sigil
#

Ghostty indeed

sage crag
faint sandal
trim valve
#

just updated and this still crashes Erm

#

on the C bot too

#

wait what

#

is it randomly crashing neuroPogHD

olive sable
#

Room correction be crazy. It gave right height -7dB

stark needle
#

Bruh

olive sable
#

It also gave a really weird EQ to the right surround cuz the tweeter is broken

rough bloom
stark needle
#

I hope u have fun with ur surroundneuroPogHD

olive sable
#

I will NeuroBounce

#

Once everything works

#

But it doesnt

#

New tweeter if they still have them in stock should be here in 2 weeks. Im expecting my order to get cancelled tho

stark needle
#

bwa

trim valve
#

how

cobalt sigil
covert bane
#

What did I just approve?????
Ts crazy (Adding and removing the same thing is crazy)

hollow spruce
#

Ping is very high

#

122000 ms

#

Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds

error: failed retrieving file

Operation too slow. Less than 1 bytes/sec transferred the last 10

crystal sleet
#

Incresed the gap ig

covert bane
#

I... had that same reaction too. I was, going through approvals. and didn't notice this, until I was re-reviewing them for the approval message

covert bane
#

Literally, the rest of the lines

opaque sigil
#

extra space(s)?

rough bloom
#

YEP formatting change, comments were shifted more to the right

covert bane
#

Ooooh, I did not see that. (I'm stupid, lmao)

rough bloom
#

it's weird though, is it tabs not spaces? usually you'd only do this to align the comments in one column

opaque sigil
#

if it was going to do this it could've also lined them up properly smh

#

lazy bot

covert bane
#

It is, an automated agent tho. Idk what it was thinking, ngl

rigid snow
#

so the editor aligns them

covert bane
#

Ahh

rigid snow
#

the renderer i guess

covert bane
#

I guess

hollow spruce
#

I will use python to asm compiler

#

In upcoming project

covert bane
hollow spruce
#

I have in planning ones my right hand fix soon

#

For now i will need help from chatgpt or claude

trim valve
#

ok today's fun game

#

the arena chess gui keeps segfaulting

#

and idk why

covert bane
#

code?

rigid snow
#

nuh uh no code

covert bane
#

kaaaay. Then idk how to debug that either ๐Ÿคทโ€โ™€๏ธ

real sierra
#

and when the arena chess gui segfaults, it doesn't close the bots

#

which then ensure that my terminal is utterly unusable to close them

#

couldn't tell you why your bots are segfaulting, they genuinely don't on my end

trim valve
#

my bots stopped segfaulting for some incomprehensible reason

trim valve
real sierra
#

OK perfect

real sierra
trim valve
#

a lot faster

#

yeah

real sierra
#

oh wow

#

I'll look into cute chess

#

it does look like it wasn't made in 2007

trim valve
real sierra
#

oh bred I have big news

#

my chess bot is now under 1024 tokens

#

and it works really well

trim valve
real sierra
#

it turns out

#

I had the evaluation flipped

#

and it was optimizing for worst moves

#

now it plays a mean chess

trim valve
#

that sounds ideal clearly

real sierra
#

it only captured while in check and almost always moved pieces to attacked squares

trim valve
real sierra
#

what's an appimage

trim valve
#

like a bundle of dependencies and the app

#

so to run it all you need is just $ ./Cute_Chess-1.4.0-x86_64.AppImage

real sierra
trim valve
#

just don't be british ez

#

gonna go illegal move hunting to farm bug reports

sage crag
#

interesting

trim valve
#

huh?

#

the previous gui also allowed bot tournaments

#

this just speeds it up massively if you have lots of bots and want to do several rounds for each pairing

real sierra
#

illegal moves again

#

make sure you rebuilt bots since pulling new api ver

#

i fixed a bunch of issues

trim valve
#

I pulled pretty recently

#

what are you cooking chess bot

real sierra
#

i like thiz

#

bye bye arena

trim valve
#

once again ???

real sierra
#

is it always pawn moves

trim valve
#

gonna hunt some more but its looking like its imagining pawns

real sierra
#

can you check if theres any weird moves in these games consistently

#

e.g. en passant or castling

#

those have historically been troublesome

sage crag
#

phrr

real sierra
#

even if it imagined a pawn that doesnt make sense

#

its in check

sage crag
#

bot bot bot bot

#

ye shiro api SMadge

real sierra
#

Shruge i never hit these issues

trim valve
# real sierra those have historically been troublesome
1. Na3 d5 2. g3 c6 3. f4 b6 4. c4 g5 5. Qb3 h6 6. Qf3 Bg4 7. Qg2 a5 8. Rb1 Bd7
9. Qxd5 Bg7 10. Nc2 Bc8 11. Nh3 Rh7 12. Kd1 h5 13. d4 Ra7 14. Qe6 Ra8 15. Qf5 b5
16. Rg1 Bf6 17. Qxb5 Bd7 18. Qb4 Rg7 19. g4 Qc8 20. Qa3 Qa6 21. gxh5 Kf8 22. Qb3
Bf5 23. Qa3 Bxc2+ 24. Ke1 Bxd4 25. Qf3 Qb5 26. Nxg5 Bxb1 27. Rg2 Nd7 28. a4 Qxa4
29. c5 Qa1 30. Qh3 Ke8 31. Qb3 Nb6 32. Qb5 Nd7 33. Nxf7 Be5 34. Qb6 a4 35. b3
Be4 36. h6 Kf8 37. Qb7 Bc7 38. h3 Qb2 39. Rxg7 Ke8 40. Rg5 Be5 41. Bd2 Bc3
42. Qxc6 Bxd2+ 43. Kd1 Ra6 44. Qg6 Rf6 45. Qxf6 Qa1+ 46. Kxd2 Bd3 47. Qb2 Nb6
48. Qf6 Bb1 49. c6 Nc8 50. Ke1 Qb2 51. Qg6 Bc2
52. Nd6+ {Black makes an illegal move: b1c2} 1-0
#

this one doesn't seem to die

#

lemme try the C bot and see if it dies here

sage crag
#

phrr

trim valve
#

tbf its only a ~6% per game in my experience

tawny wren
#

I can't fucking stand these random jumps in IDA's disassembly.

trim valve
sullen marsh
#

LOSS! LOSS! LOSS!

trim valve
#

shiro the c bot is imploding with no error logs

sage crag
tawny wren
#

Just... Why?!

trim valve
#

worse yet

#

I can't replicate the issue

real sierra
sage crag
sage crag
#

i suppose thats all that matters

sullen marsh
hollow spruce
sullen marsh
hollow spruce
#

Im making activities in
Using ###### js

trim valve
real sierra
#

currently running stock c bot vs my own bot and it hasnt imploded

#

ill try stock vs stock in asec

sage crag
real sierra
#

i have been ticking the box "recover crashed engines"

trim valve
#

oooh wait

sage crag
trim valve
#

this might be a quirk of the 500 moves thing

real sierra
#

500 moves HOLY ?

trim valve
#

I think its using the same instance of the bot for every tournament round?

sage crag
#

still using static buffer

sage crag
trim valve
#

yeah then the example C bot will only play 500 moves in total before dying

real sierra
#

sus why

trim valve
real sierra
#

OH

#

lol

#

makes sense

#

well usually matches wont last that long

#

ill have 50 turn rule draws enabled (if possible)

trim valve
#

nono

real sierra
#

wdym no

#

i was always gonna do that

trim valve
#

the problem is it was using the same instance of the program for each match

real sierra
#

OH

#

right

#

each match only has to play like 100 moves

#

to hit the limit

trim valve
#

ragequit

real sierra
#

this is frustrating

#

my bot can clear the random bot in taking material

#

but its just

#

not fast enough to solve mates

#

and it keeps blundering RAGEY

trim valve
#

now to figure out how to debug this

real sierra
sage crag
#

iterative deepening also help solve checkmates better

real sierra
#

doesnt apply to my approach nuhuh

#

all i need is improved heuristics

#

and maybe a blunder protector

trim valve
real sierra
#

i have big speedup idea

#

but i need hashing to work

trim valve
#

but is uh, nonideal

real sierra
#

restart bot when die

#

jkjk ill try to find whats crashing

#

nice

#

hashing working

#

idk if i can fit hashing tho

olive sable
#

Replacement xbox i was meant to remove the capacitor off weeks ago is apparently a 1.6 model

#

So doesnt even need new caps

chilly maple
#

is neuro's LLM local ?
or is it using a cloud based model using Lora's to assist it ?

#

if local i'd be super curious about the hardware used.

real sierra
#

local, almost certainly

trim valve
molten flame
#

what is programming like?

#

im just beginning to go in CS

real sierra
trim valve
#

fair, just thinking that might cause some funky logic when it comes to caching tree traversals / timekeeping

sage crag
#

ye

#

should restart bots between games

trim valve
#

idk if cute-chess can do that directly

olive sable
#

New batch is in

nocturne olive
trim valve
#

nice shipping label

nocturne olive
#

I don't see it saying so, Neuro and Vedal's streaming PCs have the same amount of VRAM

maiden geyser
real sierra
#

these are the specs vedal gave me

nocturne olive
#

I'm confident there's a 3rd PC somewhere with either multiple 3090s, or one of the enterprise AI GPUs

real sierra
#

then vedal's lying bruh or it's a recent change

nocturne olive
#

Or he just hasn't told anyone about it

#

24GB for an LLM at the level of Neuro sounds too small

rough bloom
trim valve
#
$ ./example_bot
uci
id name My Chess Bot
id author Author Name Here
uciok
isready
readyok
ucinewgame
position fen 6r1/8/8/7r/3b4/8/1p1k4/6K1 w - - 32 142
go wtime 300000 btime 300000 winc 0 binc 0
Floating point exception
real sierra
#

you do sound a little SCHIZO

real sierra
#

fpe

#

I'm not home for another like

nocturne olive
real sierra
#

7h so

trim valve
olive sable
nocturne olive
trim valve
#

ah wait

rough bloom
real sierra
#

so Len moves is 0

trim valve
#

smh shiro

real sierra
#

?

#

wdym smh

trim valve
#

there are legal moves

real sierra
#

legal move finder bugged again

trim valve
real sierra
#

classic

trim valve
#

admittedly

real sierra
#

how does it not see that

nocturne olive
real sierra
#

that's a super rare situation actually

#

it's double check

#

I don't think I've had a test case for double check yet

nocturne olive
#

Well, who knows anyway, in my head it seems likely but my head is also full of pixels so I don't know

trim valve
#
1. a4 Nc6 2. b3 h5 3. d4 d6 4. Kd2 e5 5. e3 Rh7 6. Qg4 g6 7. Qf4 Qf6 8. Be2 Be6 9. Qf3 Bh6 10. g3 Ke7 11. Qxh5 Bd5 12. Nf3 Bg7 13. Bb2 Ke8 14. Na3 Qf5 15. Ba6 Bf6 16. Rhd1 g5 17. Rab1 Nd8 18. Rh1 Bc6 19. Rhe1 Qh3 20. g4 bxa6 21. b4 Rb8 22. Kd3 Qxg4 23. Qh3 Bb5+ 24. Kc3 Qxd4+ 25. Kb3 Rb7 26. Qc8 Qc3+ 27. Kxc3 Rxh2 28. Nxb5 g4 29. Ba3 Rb6 30. Ng1 c6 31. f4 Rd2 32. Bc1 Be7 33. Qxc6+ Nxc6 34. Nf3 Nb8 35. Kxd2 Nf6 36. Nxa7 Kd8 37. Kd3 Nc6 38. Nxc6+ Kc7 39. Rb2 a5 40. Kd2 Nd7 41. Ng5 Nb8 42. Nxf7 exf4 43. Nd4 Rc6 44. Ne6+ Kb6 45. Ke2 Ka7 46. e4 Kb6 47. c4 Rc5 48. Ra2 Rg5 49. Nd4 Bf8 50. Rf1 Rb5 51. Nf3 Rd5 52. Rd1 Kc7 53. Nd4 Kb6 54. Re1 axb4 55. Nd8 Re5 56. Nb7 f3+ 57. Kf1 Rxe4 58. Ree2 Nc6 59. Bf4 Re7 60. Bh2 Nxd4 61. Kg1 Re8 62. Bg3 Ka6 63. Re5 Ka7 64. Ra5+ Kb8 65. Re2 Re6 66. Ra2 Nb3 67. Rc2 Nd2 68. Bf2 Kc8 69. Nxd6+ Kc7 70. Ne4 Rb6 71. Rb2 Bd6 72. Ra8 b3 73. Rg8 Nb1 74. Ra8 Na3 75. Ra5 Be7 76. Rc2 Bf6 77. Rd2 Bc3 78. Ra8 Bh8 79. Bc5 Rd6 80. Kf1 Kd7 81. Ra5 Kc8 82. Re2 fxe2+ 83. Ke1 Kd7 84. Ng5 Kc7 85. Ra7+ Kb8 86. Bf2 Be5 87. Rh7 Nc2+ 88. Kxe2 Ra6 89. Rh2 Bb2 90. Rg2 Ne1 91. Nf3 Rxa4 92. Nh2 g3 93. Bd4 Kb7 94. Kxe1 Kc7 95. Kf1 Kd7 96. Bh8 Ra3 97. Bf6 Kc6 98. Rc2 Ra6 99. Bh4 Ra3 100. Bg5 Ra2 101. c5 Ra6 102. Bd2 Kb5 103. c6 Ra5 104. Rc5+ Kxc5 105. c7 Kd5 106. Bb4 Kc6 107. Kg1 gxh2+ 108. Kh1 Rc5 109. Bc3 Bc1 110. Bg7 Ra5 111. c8=N Kb5 112. Bh8 Kc6 113. Bg7 Kc7 114. Na7 Kb7 115. Bf8 Ka6 116. Bb4 Bg5 117. Be7 Rc5 118. Nc8 b2 119. Bf6 Bc1 120. Kg2 Rc3 121. Kf1 Kb5 122. Be5 Rxc8 123. Bb8 Kb4 124. Ba7 Rg8 125. Bg1 hxg1=R+ 126. Kf2 R1g3 127. Kf1 Rb8 128. Ke1 Kc3 129. Kd1 Rd3+ 130. Ke2 Rh8 131. Kf1 Rd4 132. Kf2 Rh2+ 133. Ke1 Rh1+ 134. Kf2 Rh8 135. Kg1 Rd5 136. Kf2 Bh6 137. Kg1 Kd2 138. Kf2 Rh5 139. Kf1 Bg7 140. Kf2 Rg8 141. Kg1 Bd4+``` is the pgn
#

which uh

real sierra
#

almost looks like

#

random moves...

trim valve
#

gonna watch through that game

real sierra
#

random move double check is crazy tho

#

max win

trim valve
#

oh even more cursed

#

that rook providing check was a promoted pawn from a capture

real sierra
#

the rook-promotion-xray-bishop-double-discovered check

trim valve
#

(it did move before providing check a fair bit, but worth pointing out)

real sierra
#

oh also how is the rust API looking

trim valve
#

it crashes less than the c api

real sierra
#

how

trim valve
#

simple

#

I lie

real sierra
trim valve
#

it just panics instead of segfaulting

#

but like the only thing I had to fix was my handling of empty move arrays

sage crag
#

phrrr

#

internet bad

#

ban internet

real sierra
#

Internet banned

#

against chess contest rules

sage crag
#

!ban internet

real sierra
trim valve
#

even if its len 0

real sierra
#

makes sense

trim valve
#

just pushed changes

real sierra
#

the null check probably happens before any length arithmetic

trim valve
#

ye I basically had to do it here

#

previously that unsafe bit would panic

#

at some point I kinda wanna make it so that if you build in release it also builds the C api in release

#

but thats a soonโ„ข task

restive badger
#

omw to make a blockhead out of stockfish

real sierra
#

yeah once you have this all together if you could write some short build instructions

#

so I can verify that I can build it on my end

tender river
real sierra
#

the chessening approaches

#

I still need a banner of some kind

restive badger
sage crag
real sierra
sage crag
trim valve
real sierra
#

can I have gcc and clang

trim valve
#

in what way

real sierra
#

I already have gcc

trim valve
#

like configurable

#

oh installed together

real sierra
#

I don't want to uninstall to get clang

trim valve
#

I have both

tender river
#

you can

#

bin/c[c,++} -> default compiler (usually gcc or clang)
bin/g{cc,++} -> gcc
bin/clang{,++} -> clang
neurolingSlep

real sierra
trim valve
#

is there a convention for which I'm meant to call or nah

real sierra
#

meant to call what

trim valve
#

like should I be running cc instead of clang

sage crag
real sierra
#

idk

sage crag
#

cc is a c spec compliant compiler

trim valve
#

pretty sure I'm not doing anything clang specific shruge

sage crag
#

gcc and clang both support most of each other's features

#

if you dont know if its safe to use cc, use a specific compiler

#

ideally the one you are testing with

real sierra
#

either way

#

it doesn't really matter that much

#

someone using rust can surely install clang

trim valve
#

thank you bot this is incredible move

real sierra
olive sable
#

after 3 weeks of my sisters tablet being stuck in customs, i have received a bill of 90 bucks import costs TurboGranny_Dead
thank god im not the one paying

trim valve
sage crag
trim valve
#

wtf

olive sable
trim valve
#

how did defender not pick you up

sage crag
#

tehe

real sierra
#

koniibot NOWAYING

olive sable
#

ban konii for cheating

real sierra
#

I'm tempted to send my compiled bot to bred so she can find bugs in it

#

but what if he reverse engineers it

olive sable
#

im sure she wouldnt NeuroClueless

sage crag
real sierra
#

oh dear I apologize

#

I middle of class

sage crag
trim valve
real sierra
sage crag
real sierra
#

ty konii

trim valve
#

glueless surely I would have no need to reverse engineer the bot as it would be worse

olive sable
#

i dont see a reason to recreate flawed design

real sierra
#

I actually don't think I can beat my bot on 1 minute time

#

I always lose

#

it doesn't play super genius but it plays way faster than I can

#

and the moves average out to sensible

olive sable
#

i have my first day of school tomorrow bwaadow

#

hopefully ill have time to chess

sage crag
real sierra
#

I haven't tried on 15 minute

#

it prob scary MONKA

sage crag
#

can it beat magnus carlsen yet

tender river
#

ye

sage crag
tender river
#

1 second

sage crag
#

in 1 second chess mayb

#

what about in classical game

trim valve
#

there's a couple touches I wanna add to the rust api so its a little less awful to use

#

like adding bitwise ops back to the bitboards

trim valve
#

huh actually now I think about it coroutines could be very fun if they're not banned

#

actually nvm they probably wouldn't give the benefit I was thinking of because done() blocks

sage crag
#

coroutine allowed

#

threading not

#

mpc not

trim valve
#

also random thought

#

is it theoretically possible to misuse signals so I can ponder whilst the enemy is thinking

#

like theoretically if I alarm(0) and have a signal handler registered

olive sable
#

ive been thinking about more path pruning stuff, but the problem with thinking about the opponents intentions is that the opponent might be the dumbest fuck in existence hmm

#

assuming they only do smart choises is a gamble

trim valve
#

i mean if they're purely bad then they just lose no?

#

its more a risk if they can bait you into wasting all your time

real sierra
#

if you assume the opponent plays well and are wrong, it usually improves your position

#

not that many cases where your success is fully reliant on the opponent playing well, but it can happen

olive sable
#

well, what if i prune a branch that looks bad at depth 1 but is actually good at a further depth hmm

real sierra
#

that's why you go deeper than depth 1

trim valve
#

then you had a bad pruning metric I think?

real sierra
trim valve
#

that too

olive sable
#

hmmm

real sierra
#

but yeah pruning early is hard

#

often it's just a heuristic to prune moves that are probably bad

olive sable
#

how much time do we have again?

real sierra
#

1 minute

olive sable
#

per round? enub

real sierra
#

1 minute per game

#

for each bot

olive sable
real sierra
#

no increment

olive sable
#

so fast code is a concern too

real sierra
#

there's a tradeoff between looking at better moves and more moves

#

the more heuristics and logic you use, the longer it takes to process a line of moves

olive sable
#

maybe ill do dynamic depth, fewer legal moves means we can search deeper that round

#

and ofcourse we cache that

real sierra
#

don't forget the quiescence search

olive sable
#

the what

trim valve
trim valve
#

tbh for how unstreamlined the rust version is

#

I'm actually kinda proud of that token count

sage crag
#

this is how humans play too

#

you assume that the opponent will make the optimal move

#

if you dont, you lose the zero sum game

olive sable
#

ok

trim valve
#

like I could probably cut a few by just doing a use chess_api::*;

sage crag
olive sable
#

offload as many tokens into the chess api as possible ReallyInnocent

trim valve
#

I'm trying to make it as 1:1 as possible

#

but uh

sage crag
trim valve
#

I am also very likely to add some cheeky deref impls

sage crag
#

as well as all operators

trim valve
#

exactly

sage crag
real sierra
#

there's no issue with implementing functionality that exists in the original

olive sable
#

hmm

#

if we cache previous depth searches, than we already know for the next search which paths are unoptimal, which gives us more time for even more searches

tender river
real sierra
#

does the token counter support haskell

tender river
real sierra
#

if

  • the token counter supports it
  • I can figure out how to build it
  • someone makes the API bindings
    I'll support it
#

generally those are the requirements

nocturne olive
#

Unfortunately Kotlin fails part 1

real sierra
#

I really tried

#

it was hell

tender river
real sierra
tender river
#

it is

real sierra
#

any commented out packages have dependency hell that prevents them being uncommented

#

though admittedly I didn't try only uncommenting one language at a time

#

and rebuilding

#

that could work

opaque sigil
#

you can switch to 0.23.0 and comment out a couple (iirc bash,markdown,ocaml and another one) and then it builds

#

but pointing it to a kotlin file blows up when trying to instantiate something

real sierra
#

Sadgi kotlin

trim valve
#

glueless surely a 0.23.0 fork wouldn't be too hard

real sierra
#

glueless !

sage crag
opaque sigil
#

0.23 was the newest version that doesn't break the program for me

#

there's 0.25 but that broke pretty much everything in tcount

real sierra
#

surely if I email the developer they'll update it

opaque sigil
#

besides half the languages don't support that it seems

sage crag
#

buket

trim valve
tender river
#

my brain is a bucket

hoary lion
#

oddly philosphical

trim valve
#

honestly rust might have less silly syntax shenanegans than expected

real sierra
trim valve
#

two random move bots

#

top one is C, bottom is rust

real sierra
#

oooo

#

I see

trim valve
#

just kinda suprised at how close their token count is

tender river
#

no you shr

real sierra
#

but you're using rand

trim valve
tender river
trim valve
#

I am too lazy to manually do rand at this very moment

olive sable
trim valve
#

also ReallyInnocent surely I won't need it in my actual bot

real sierra
#

surely

#

well if you do want to

#

i think a good way is to get the Zobrist hash of the first board as a random seed

#

then LCG

trim valve
#

fair

tender river
#

shr

#

you only need token count for supported languages

#

right

#

right

#

?

real sierra
#

actually a Fibonacci lfsr would work

real sierra
tender river
trim valve
#

tbf that C example could probably lose some tokens with minimal effort too

real sierra
#

I mean it's an example

#

it was meant to be easy to understand

sage crag
real sierra
#

it's not near the token limit

#

I think it being easy to read is more important

#

there might be beginners who wanna try the challenge YES

sage crag
real sierra
#

they can worry about shrinking it on their own

trim valve
#

if I implement some cheeky clones

sage crag
#

i obviously cant compile it

trim valve
#
use {rand::{*, seq::*}, chess_api::*};

fn main() {
    loop {
        if let Some(mov) = Board::get().get_legal_moves().choose(&mut rng()) {
            chess_api::push(*mov);
        }
        done()
    }
}
#

this compiles

sage crag
#

lord

#

does it work

#

64 tokens

#

also is it possible to remove the semicolon

real sierra
#

the rust bots are going to be hard competitors to beat

#

more macros is the only way

sage crag
trim valve
#

seemingly yes

real sierra
#

I'm running out of things to macro

sage crag
#

hblang will be biggest competitor

sage crag
real sierra
#

not that many of my code segments are repeatable

sage crag
trim valve
sage crag
#

can you remove semicolon

real sierra
#

again the C example bot is not trying to be tiny

#

it's trying to be easy to understand perish

#

but rust looks very competitive if it shrinks this nicely