#programming

1 messages · Page 197 of 1

trim valve
#

mhmm, just kinda memeing at this point

#

yes

#

also somehow my formatter doesn't kill it

#

but the formatter does add a trailing comma

stray dragon
#

was wondering how i would get my token count down further and then you guys mention C macros lol

real sierra
stray dragon
#

nope

real sierra
#

feels like war crimes

stray dragon
#

do show

real sierra
#

#define bclose ) {

#

saved like 50 tokens

stray dragon
#

BRUH

real sierra
#

that's where I'm at

#

the code is completely illegible

#

half of the keywords are macros

stray dragon
#

so basically the solution is just "make your own tokens with macros"

#

i see

real sierra
#

there's some other weirdness to it

#

I only have one kind of loop now

#

a for loop from i=0 to some limit I set

#

that's basically the only loop in my entire code

stray dragon
#

oh that's super weird

real sierra
#

so I can macro it around

#

it means I reuse the exact same variable names for certain data types so I can bake them into macros too

stray dragon
#

i've been doing shit like this

real sierra
#

whitespace doesn't count as a token

#

but yeah that's something

#

I see a bclose on the right

#

👁️

stray dragon
#

yep

real sierra
#

bclose works on everything I love it

stray dragon
#

damn i could use macros everywhere

real sierra
#

surprisingly tricky to figure out which are useful

#

the macro definition also counts as tokens

stray dragon
#

yeah obv

real sierra
#

so it's not free

#

wait t

stray dragon
#

yes shiro

real sierra
#

oh right I posted the chess API header

#

nvm

stray dragon
#

yeah

sage crag
#
int main() {
    while(1) {
        Board *board = chess_get_board();

        int len_moves;
        if (Move *moves = chess_get_legal_moves(board, &len_moves))
            chess_push(moves[rand() % len_moves]), free(moves);

        chess_free_board(board);
        chess_done();
    }
}

could make that one smaller like this

#

probably

real sierra
#

then add macros TROLL

tender river
real sierra
#

chayleaf

#

am I gonna have 5 different tcount implementations

tender river
#

1

real sierra
#

if you make a working fork that supports Haskell alongside all the other langs

#

that works for me

sage crag
#
.{get_board, push, done} := @use("chess.hb")
.{rand} := @use("lily")

main := fn(): never loop {
  if mov := get_board().get_legal_moves().get_wrapping(rand()) push(*mov)
  done()
}

lack of glob imports really letting hblang down here

tender river
#

okeyge i'll also remove java

real sierra
tender river
sage crag
tender river
#

lily libc

sage crag
real sierra
#

not stdlib...

sage crag
#

libc

real sierra
#

how does that work

#

that's insane

sage crag
#

linker symbol

tender river
sage crag
#

ye

#

and i write it ReallyInnocent

real sierra
sage crag
#

anything i say is in there is in there

real sierra
#

OK allowed

sage crag
tender river
#

stockfish in stdlib

real sierra
sage crag
#

ye could ReallyInnocent

real sierra
#

my submission in my new language, JavaChess
stockfish();

#

4 tokens

#

source: trust me bro

sage crag
#

but not complete

tender river
#

we got silksong before 0.2.0

real sierra
#

"make binaries smaller for no reason" tracks

sage crag
real sierra
#

relevant skill

sage crag
#

yeet libc

sage crag
real sierra
#

holy bytes

sage crag
#

as in the binary

#

not the main function evilShrug

tender river
#

GOODONE shiro

sage crag
real sierra
#

chay liked it Stronge

sage crag
sage crag
real sierra
#

NOOO don't deprecate c

#

c is best

sage crag
#
lily.{target, config} := @use("../lib.hb")

@export("_start", fn(): never {
    main := fn(args: []^u8): uint @import("main")
    args: ^^u8 = @bit_cast(@frame_pointer())
    target.exit_group(main(args[2..2 + @bit_cast((args + 1).*)]))
})
@export("memcpy", target.memcopy)

ok but

#

look at this though

real sierra
#

my eyes

sage crag
#

yes its not pretty evilWheeze

#

also outdated

#

ye it reimplements the linux syscalls so it doesnt need libc

real sierra
#

wrrr I'm not creative enough to make an eye catching robot chess banner

#

someone beam creative power into me

#

it's literally just that and then I can launch the contest I think

sage crag
#

uh oh

real sierra
#

I'll fix API bugs as I go

sage crag
#

how long will it run for again

#

1 month?

real sierra
#

1 month ish ya

sage crag
#

ehe

real sierra
#

. OK . errr

#

aliases

sage crag
real sierra
#

my chess bot 1023 tokens

#

can't shrink anymore

#

actually that lie

#

I can still

#

#define voidf } void

#

maybe saves me some if I'm lucky

#

wait konii question

sage crag
# sage crag
ProgramError := enum {
  .SkillIssue;
}

ermie := fn(): Result(i32, ProgramError) {
  return .err(.SkillIssue)
}

main := fn(): void {
  if erm := ermie.to_ok() {
    log.printf("hello {}", erm)
  } else die
}

result

tender river
real sierra
#
#define cond x
#define while_ while(cond) {

int main(int argc, char *argv[]) {
  int x = 0, y = 0;
  while_
    #undef cond
    #define cond y
    while_
      printf("hi\n");
    }
  }
}
#

?

sage crag
#

yeah sure

#

works

real sierra
#

nested loop macros unlocked

#

token savings incoming

sage crag
#

well actually

#

a strnage

real sierra
#

tho just having while_(v) probably cheaper

#

but wait it not cheaper

sage crag
#

what is #while_ evilWheeze

real sierra
#

because don't always need nested loop

#

I am slow

sage crag
#

technically you dont need to undef cond

real sierra
#

I fix

sage crag
#

you can just redefine it

#

it will give you warning though

real sierra
#

that's fine my code already gives me warnings

#

but I know the order of operations better

tender river
real sierra
#

wait

#

it's the same cat

#

?

#

how am I just now learning this

hollow spruce
real sierra
#

test

hollow spruce
#

d-bus connection

real sierra
#

rizzdal S_Discord cirSlain ☎️

real sierra
#

@stray dragon

#

in your experience of chess bot writing

#

are there any functions you feel are missing from the API

#

from a "this is common boilerplate that everyone will need" perspective

tender river
real sierra
#

?

#

it's an opaque struct

tender river
#

its a singleton internally

tender river
#

so it shouldnt even be accessible as part of the public api

#

you can just enforce the initialization invariants internally

real sierra
#

get board returns a clone of the board

#

not the actual internal copy

#

chill

tender river
real sierra
#

even if it didn't, it's all local to the bot so the only person harmed by corrupting the board is the bot user

#

you still can't submit illegal moves

#

the Gui will just disqualify you LOL

tender river
#

i wasnt talking about security

stray dragon
#

i have no idea how Board is structured

real sierra
#

including bitboard.h is legal YES

#

I don't think it makes sense to do bitboard manipulations through the API given the function call overhead would be slower than the computation

#

but I can include convenience functions for some of the weirder bitboard ops

sage crag
#

i just learned of something

stray dragon
#

yeah i feel it doesn't match the api that well either

sage crag
#

__VA_TAIL__

real sierra
#

bitboards are definitely kinda low level

stray dragon
#

mostly i just want the positions of the pieces

#

in a way i can use

real sierra
#

yeah

#

I can expose that somehow

stray dragon
#

maybe a function that just returns an array of ints, representing the positions 0-63 on the board for each piece

real sierra
#

would a bitboard_get_x and bitboard_get_y work

stray dragon
real sierra
#

yeah if I give you the index

stray dragon
#

0-63 is perfectly fine i feel

real sierra
#

you can calculate those yourself

#

x = index % 8

#

y = index / 8

stray dragon
#

yep

real sierra
#

that'll remove tokens from my bot too

stray dragon
#

win-win

real sierra
#

I'll add it to bitboard.h

#

and then maybe add some bindings for that to the py api

#

or reimpl it

#

@trim valve do you think bitwise ops would be faster in python or through bindings to C

stray dragon
#

maybe just the function to get the thing at the position

real sierra
tender river
#

would looking at existing apis help glueless

stray dragon
#

could just do a loop 12 times, one for each color of each piece, and then go positions 0 to 63 through the bitboard checking each position for a piece
would only need the thing to check if there's something at position or whatever

real sierra
hollow spruce
#

i cant sleep

stray dragon
#

i think?

#

hmm

real sierra
stray dragon
#

maybe both actually

real sierra
#

yeah the conversion is just

stray dragon
#

(bitboard, position)

real sierra
#

int index = highest_bit(bitboard)

stray dragon
hollow spruce
stray dragon
#

it's 12 pm here and i have not been to bed

tender river
#

it's something like __builtin_clz

real sierra
#

that's why bitboards are fast

#

it could technically be a one liner

hollow spruce
stray dragon
hollow spruce
#

4am to 7 am

real sierra
#
PieceType get_piece_from_index(Board *board, int index) {
return get_piece_from_bitboard(board, ((BitBoard) 1) << index);
}

PieceType get_piece_from_bitboard(Board *board, BitBoard bb) {
  return (bb & (board->bb_white_pawn | board->bb_black_pawn)) ? PAWN : (...);
}
hollow spruce
#

bye im going sleepy 😴 sql to apacha pa

real sierra
tender river
real sierra
sage crag
#

are there any cases where
#define O_PAREN2 ((
#define C_PAREN2 ))
could save tokens

real sierra
#

chayleaf tcount fork saves the Haskell world

real sierra
#

I found big token saves came from eliminating array indexing

#

[x] is 3 tokens

stray dragon
#

how does get_piece_from_index act between white and black pieces, if at all?

real sierra
#

doesn't matter

tender river
real sierra
#

you can't have both a white and black piece on a square

#

if you want the colour that's a separate function

stray dragon
#

if the piece at a position is black, and my turn is for white, i want to make the black piece's position contribute negatively to the evaluation function

stray dragon
real sierra
#

but it might be easier to just have BitBoard get_my_pieces()

#

then you can just & them

#

0 means it's your piece

stray dragon
#

my solution before your api was a thing was to just have the pieces be + if white and - if black

#

white king = 6, black rook = -4, empty = 0

real sierra
#

mhm makes sense

stray dragon
#

easy to handle

real sierra
#

I only look at pieces involved in moves at the moment

#

so I always know that the piece being moved from is mine

#

and the one being moved onto, if a capture, isn't mine

trim valve
tender river
#

if you do pypy

stray dragon
#

my evaluation function checks for the piece at a position on the board, and if that piece's color is different from the current turn's color, it contributes negatively to the evaluation function

tender river
#

builtin would be faster

#

probably

stray dragon
#

if same color contributes positively

sage crag
stray dragon
#

i suppose could also just mask the other color's moves, sum the scores of the pieces on your side, then do the same for the enemy's side

real sierra
#

I think I have a macro popdiff or something

#

and its along the lines of

sage crag
#

by the way

#

int x = 0, y = 0; is a waste of tokens

stray dragon
#

my scoring function is uhhh

real sierra
#

#define popdiff(board, piece) count_ones(chess_get_bitboard(board, piece, WHITE)) - count_ones(chess_get_bitboard(board, piece, BLACK))

#

then for scoring I do

tender river
real sierra
#

score = 9*popdiff(board, QUEEN) + ...

sage crag
tender river
stray dragon
tender river
#

didnt know latter definitions can use previous ones on the same line

olive sable
#

I have to get up early tomorrow. Goodnight neuroWaveA NeuroSleep

sage crag
real sierra
#

clever way of getting bitboards tho

tender river
sage crag
real sierra
#

that factor line is crazy

stray dragon
#

yeah lol

sage crag
#

its uh

#

the same number of tokens

real sierra
#

this works?

sage crag
sage crag
#

a = b evaluates to b in c

real sierra
#

crazy

#

I knew a, b was b

#

but not equals

sage crag
#

that's why there is a difference between ++a and a++

real sierra
#

I'm still to scared to abuse ++ in expressions

#

I worry I'll do it wrong

sage crag
#
int main() {
    int x = 0;
    return ++x;
}

returns 1

#
int main() {
    int x = 0;
    return x++;
}

returns 0

real sierra
#

yeah but they're just such cursed operators

sage crag
#

btw this also works for +=

#

return x += 3; returns 3

real sierra
#

++x + x++ is undefined behaviour for example

#

according to the standard

sage crag
real sierra
#

RAGEY I don't like weird operators

#

order it

tender river
#

not weird

#

normal

real sierra
#

weird

tender river
opaque sigil
#

huh did they not fix this

real sierra
#

?

opaque sigil
#

they were bothered enough to make the eval order of function args ordered at least iirc

sage crag
#

there is no eval order for ++ but you can remedy it by using it in inside function or something

real sierra
#

wontfix classic

opaque sigil
#

the almighty committee is never wrong

tender river
#

Order of evaluation of the operands of any C operator, including the order of evaluation of function arguments in a function-call expression, and the order of evaluation of the subexpressions within any expression is unspecified

#

its a good standard

#

on some platforms left to right is better, on some right to left is better

opaque sigil
#

huh

#

was it just clang and gcc ordering them

sage crag
opaque sigil
#

why does that work

sage crag
#

it doesnt

tender river
#

, is ordered ye

sage crag
#

its a trick

opaque sigil
#

smh

real sierra
#

yeah that's unary +

sage crag
#

wait it does work

#

i thought it was tricking me by essentially return ++x;

#

nope MyHonestReaction

#

the x++ is the same as x though

#

for obvious reason

#

ok but this is cursed

#

2?

#

not 3?

tender river
#

why would it be three

opaque sigil
#

you increment and then you increment again

tender river
#

konii neuroCatModeOn

sage crag
#

im adding them together

tender river
#

you arent

opaque sigil
#

no you're not

tender river
#

theres a comma

fluid junco
#

no

sage crag
#

right

#

comma

#

ye comma evilChipiChapa

tender river
fluid junco
sage crag
#

unary +

#

unary + so stupid

#

useless operator

faint sandal
sage crag
#

self promo

#

ban

tender river
sage crag
#

it useful like a chocolate teapot

faint sandal
#

ban this FRICK

stray dragon
sage crag
#

t pot

tender river
#

ban this koniibwaa

fluid junco
stray dragon
#

hi konii

fluid junco
#

got myself a 99% abomination

#

it's like eating cocoa powder

faint sandal
stray dragon
sage crag
#

azabwaa

rigid snow
rigid snow
faint sandal
#

bwaazaka

fluid junco
#

but it's like
solid

sage crag
rigid snow
real sierra
fluid junco
#

it no good

real sierra
#

thinking about all the things I'd add to my bot if I had tokens

sage crag
fluid junco
#

it's contents are: cocoa, low fat cocoa, and a pinch of vanilla

sage crag
#

no tokens

#

tokens are for me

#

not for any of you

real sierra
#

I have 1 token

sage crag
#

ye 1 token bot

#

metaphor for society

real sierra
#

can't even add a statement with 1 token

#

bonus semicolon

rigid snow
#

is 0 not a statement

#

oh

faint sandal
#

I have 4 tokens

fluid junco
#

sell tokens

sage crag
faint sandal
#

to play a single round of rhythm game at an arcade

real sierra
#

azaka you should join the chess contest

rigid snow
real sierra
faint sandal
#

wtf is a chess contest

sage crag
#

basically

#

everyone gets a chess board

#

and you have to be the last one standing

fluid junco
faint sandal
#

mhm ???

real sierra
#

I'm planning to host a chess bot tournament

rigid snow
sage crag
#

so do everyone else

real sierra
#

bots will have a source code limit of 1024 tokens

sage crag
#

you have to be the last one

tender river
fluid junco
faint sandal
#

I can just smack others with the wooden chess board

real sierra
#

I heard you're good with obfuscated or shrunken code

faint sandal
#

easy

real sierra
#

so I feel like it'd be up your alley

sage crag
#

why would give wooden chess board if not intending to hit people with

faint sandal
#

idk you should have given a metal one

real sierra
sage crag
#

only i get a metal one

stray dragon
faint sandal
#

cheating

sage crag
#

not cheating its in the rules

fluid junco
sage crag
sage crag
#

like me personally

fluid junco
#

how does konii versioning work

real sierra
#

to both?

sage crag
sage crag
fluid junco
#

how long does this leaf stay damn I've been here for three days nonstop

real sierra
#

rules didn't say to follow the rules mhm

rigid snow
real sierra
#

rite of passage

real sierra
#

never forget your roots

fluid junco
#

guys remember 3d tvs

#

have you ever seen one

sage crag
#

that means im an exception

real sierra
#

I'm amazed the Zobrist hashing code actually works

#

there are more magic numbers in that feature than I've ever used before

fluid junco
real sierra
#

its literally just random xor ops

#

inserted throughout the move function

tender river
#

thats like... every hash neuroCatUuh

real sierra
#

and it mostly worked first try

sage crag
#

ye

#

zobrist hashing not hashdos resistant smh

real sierra
#

Zobrist hashing fast

#

array of 700 random numbers

fluid junco
#

It has also been applied as a method for recognizing substitutional alloy configurations in simulations of crystalline materials.
Erm

sage crag
#

i can also do that

#

zobrist hashing isnt special

real sierra
#

smadg it special

#

you can't hash like Zobrist does

sage crag
#

1

#

2

#

3

#

4

#

5

real sierra
#

NOOO STOP

hoary lion
#

erm

sage crag
olive sable
#

To win just make your bot random, and if you lose you go back in time to change the seed. You only have to do it once to do it a million times

tender river
olive sable
#

Ok now back to bed

sage crag
real sierra
sage crag
real sierra
#

you just play a random series of moves on the local board

tender river
sage crag
#

takes about 20 token

real sierra
#

and if you lose you unwind back to start and try again

#

it's like what I'm doing but with less brainpower

sage crag
fluid junco
#

shouldn't the whole board be like 256 bits?

#

4 bits per piece, 64 places

sage crag
real sierra
#

the board is stored as 64-bit bitboards, one per piece per color

sage crag
#

its actually more neuroPogHD

#

because its easier to compute with

real sierra
#

^

#

there's actually a few bonus bitboards too pogs for efficiency

tender river
#

optimizing for space is only useful when you have lots of data

fluid junco
real sierra
#

you can definitely store the board in smaller amount of memory

fluid junco
#

stupid be fast though, 256 bits can compare in one clock cicle

sage crag
real sierra
#

but chess bots are a compute bound task

sage crag
tender river
#

how much NeuroCorpa

fluid junco
#

or 2 if you double pump

real sierra
tender river
#

actually i dont feel like it sorry

sage crag
tender river
#

you dont have to answer

real sierra
#

for example, all pawn moves for white can be obtained by shifting the pawn board north one square

tender river
#

hmm

olive sable
real sierra
#

which is just a left shift by 8 bits under the hood

tender river
#

doesnt sound that cheap

real sierra
#

blazing quick

tender river
sage crag
#

wake up chat wake up wake up wake up wake up wake up wake up wake up wake up

real sierra
sage crag
tender river
#

eliv queue wake up

olive sable
#

???

sage crag
#

eliv queue goto &&eliv queue

real sierra
olive sable
#

Wth is an eliv queue?

sage crag
#

english have adjective before noun

fluid junco
sage crag
#

the queue is of eliv

real sierra
sage crag
#

nouns can be adjective

fluid junco
#

eliv is the friends we made along the way

sage crag
#

red is a noun referring to a colour

#

its also an adjective

real sierra
#

nouns technically can't be adjectives but we removed the feature of hyphenating noun sequences

#

ragey

olive sable
sage crag
#

so shiro was never your name

#

your name was ~ this whole time

fluid junco
#

brains don't brain logically is one of the best threads I've seen on the internet

real sierra
#

bit flip

sage crag
#

ye

#

bitwise not

real sierra
#

~Shiro ⚫

sage crag
sage crag
#

shiro xor shiro

#

fluid junco
sage crag
tender river
#

shiro i have your brain scan neuroCatModeOn

stark needle
sage crag
#

that's only because the microcode has a built in fast-path for a xor a

real sierra
#

I zero with my eq_0_sc macro EZ

fluid junco
sage crag
tender river
fluid junco
sage crag
#

you can also & 0

#

the only reason its used is convention

tender river
fluid junco
real sierra
#

my stack computer project SCHIZO

sage crag
fluid junco
sage crag
#

they are loaded from cpu cache evilNod

olive sable
#

Everytime i see "asm" i read it as my name but then i realize i readn't AINTNOWAY

real sierra
sage crag
#

especially with & 0, it has the same specialisation as a ^ a

#

the dispatch cost for the instruction is more than any actual work it does

#

which is why pipelining is good FOCUS

tender river
#

erms

sage crag
#

erms

real sierra
#

koniiiiiiii

#

need token

sage crag
#

you cannot have my token

real sierra
#

need token need token

#

so many feature

olive sable
#

Prayge hail the almighty pipeline

real sierra
#

can't fit

sage crag
#

send me code me make smaller

real sierra
#

but if steals then I lose...

fluid junco
#

give me all your trade secrets i can be trusted

sage crag
#

lose anyway

#

future unchanged

real sierra
#

to my knowledge I have the only actual chess bot so far

#

other than t's

#

but idk how T's performa

sage crag
#

i have the api ReallyInnocent

olive sable
#

Why do you hail something when hail is ice rain?

real sierra
#

yeah I'm not really supposed to have one yet

#

but I figure I'll be fixing bugs during the contest so

#

I figured it fair

sage crag
#

it so nice to have

ebon basin
#

a chess NN nostalgic

real sierra
#

I'm excited to see if anyone tried a neural net

sage crag
#

i.e. logarithm weighting

#

or sqrt

ebon basin
#

I treid once to do reinforced NN with chess

real sierra
#

my method doesn't really need an evaluation function, I wonder if I should just throw it out

sage crag
#

try disabling it and playing it against the version that has it

real sierra
#

it only uses it for breaking ties with stalemates

ebon basin
#

evalation isn't the probleme it the 4096 diffrent moves you can make on a chess board

fluid junco
real sierra
rigid snow
sage crag
#

dumbot

#

touhou

real sierra
real sierra
#

actually super impressive to compress 2 min of video into a bot

ebon basin
sage crag
real sierra
#

ouch size

sage crag
#

225 kb

fluid junco
real sierra
#

assuming you can store max 64 bits in one token uncompressed

sage crag
#

each frame can be 1 bitboard

fluid junco
#

30fps too high, 10 will be enough for everyone

sage crag
real sierra
#

max 8192 bytes of data

sage crag
#

if you use run-length encoding im sure you can get that down to basically nothing already SMH

real sierra
#

gives you 68 bytes per second of video

ebon basin
#

Anyway it not my project I want to but Neuro inside of a 3D printed human

rigid snow
sage crag
real sierra
ebon basin
real sierra
#

then you no need store per frame

fluid junco
#

how to store that though

real sierra
#

byte array

#

with clever indexing

#

track time since last flip

fluid junco
real sierra
#

load bearing word

ebon basin
#

It a an asteroid simulation from the makers of "Don't Starve " and "Don't Starve Together"

sage crag
#

you can just pack it into a struct

real sierra
#

I'll pack you into a struct

#

struct konii *

fluid junco
real sierra
#

struct Shiro has a pointer to brain which is always null

#

do not use

fluid junco
tender river
#

The original 121 seconds with 30 fps consist of 121 * 30 * 64 = 232.320 bits being displayed.
This gets compressed to 52.873 bits, so it fits in 827 ulongs = 827 tokens.

#

just uses rle

real sierra
tender river
real sierra
#

repeat until it gets bigger

sage crag
#

you can probably pack a pixel and its duration into a single u16

sage crag
#

u8 too small

#

255 frames

#

3600 frames of video

fluid junco
#

128 frames, one bit color

sage crag
#

there's a better way of doing it than that im pretty sure

#

but i cant remember the method

fluid junco
#

need to compute if most pixels stay one color for more than 128 frames or not

#

i think they dont

tender river
#

negative elo

real sierra
#

gotta fit RLE decompressor + video decoder into the rest of the tokens

tender river
real sierra
#

one goal

tender river
#

WorstBotEverMade

sage crag
#

is it better to stream the video directly while you decompress or decompress then read from an array

#

if you are just doing RLE the first is pretty easy

real sierra
#

I think stream while decompress

#

have to wait between frame anyway

#

time for compute

fluid junco
sage crag
#

it does not

real sierra
#

did bred find API issues or were they rust

#

I don't remember

fluid junco
#

i couldn't find this morning

real sierra
#

memory Dentge

tender river
#

@trim valve

fluid junco
#

i was interested what happened

real sierra
fluid junco
#

i think you just moved topics neuroSadge

real sierra
#

oo

#

soz

fluid junco
#

or whatever

real sierra
#

ooo

#

I think I fixed

#

I forgot to init a mutex

sage crag
real sierra
#

now there new issue I think with double check legal moves

#

finding too few

sage crag
#

store 64 bits that encode the colours at the beginning of the video

#

and then the video data can just be the frame length until the colour toggles

#

then you get the full width of the integer for frame length

fluid junco
#

ooooh

real sierra
#

there so many edge cases with chess rules TheVoices

fluid junco
#

see storing it is cool

real sierra
#

like how not all attacked squares are legal moves

sage crag
#

not that it matters since its better to use a u16 than a u8 anyway colonthree

tender river
real sierra
#

and not just for check reasons

fluid junco
#

u16 for time, u8 for color

#

aligning issues 😨

sage crag
#

64 bits only required

#

for the colours

fluid junco
#

why so many bits though

sage crag
#

64 squares

fluid junco
#

for black/white colors?

real sierra
#

bitmap

fluid junco
#

but can't really use a bitmap here, because all the temporal stuff no?

real sierra
#

yea I don't understand using a bitmap either

#

I would store array of bytes

sage crag
#

first 5 bits can encode the pixel number

real sierra
#

where byte (i+64*j) stores the ith delay until flip for pixel j

fluid junco
#

arm so cool, arm handles aligment stores and loads magically

#

although still slow

real sierra
#

then have a 64 byte array of pointers into that, one per pickle

real sierra
#

advance pointers as delays expire

sage crag
#

pointer

#

pointer is 8 bytes

real sierra
#

oops

fluid junco
#

pointer too big

real sierra
#

it fine

sage crag
tender river
#

factorio

real sierra
#

not many token

tender river
#

video decoder

#

video data

real sierra
tender river
real sierra
#

factorio mod with bindings to chess api

tender river
#

(grey spots are clouds)

real sierra
#

send moves to the chess comparator

fluid junco
#

my brain isn't ready to handle factorio memory bank logic

#

not talking about video decoding

tender river
#

thats why there are 2 video circuits in the decoder

#

with a unified timing loop

fluid junco
sage crag
#

hm

#

instead of storing the numbers of frames

#

no that's stupid idea

real sierra
#

store time as floats

tender river
fluid junco
real sierra
#

I wanna go home cryign

#

I wanna make token

#

and fix api

#

I think actually I get many free token if upgrade API neuroYay

fluid junco
#

and not find a car on its side preferably

real sierra
#

yeah ideally no cars have undergone a rotation

#

we'll see

fluid junco
#

oh hi bred

trim valve
ebon basin
#

Okay nearly everything ready 🪛 (will take some weeks)

real sierra
ebon basin
#

Actually how do I see what mods are alreaedy made for Neuro

real sierra
#

no idea

#

lol

tender river
real sierra
#

they might be pretty far down but yeah

#

searching that is probably your best bet

tender river
#

tag

fluid junco
#

neuro car in factorio

trim valve
#

not really but a lot of them were to do with nonexistent pawn moves

tender river
real sierra
#

do you think ved would join the chess contest

tender river
#

rest is easy evilNodders

#

no

trim valve
#

I might try and do a minimal repro of some in a bit but have to do some other stuff first

ebon basin
trim valve
#

here is the output of 10k games

sage crag
fluid junco
#

modify the game sprite a bit, sprinkle some pink

ebon basin
#

I'm scared to look how many hours I have on it

tender river
trim valve
#

search for illegal move: and it should tell you exactly what move prompted the game to explode

real sierra
#

@real sierra note to self investigate this pgn

trim valve
#

everything before the curly braces is the pgn leading up to it

#

you can kinda just ignore the square bracket stuff, its just metadata

fluid junco
#

oooh do you want to make a neuro crewmate?

real sierra
#

I love oxygen not included but I always get to the same point in the game and stop playing for some reason

#

I think I just solve all the immediate challenges and then run out of things to do

ebon basin
fluid junco
#

seems a bit too complex with all the options for llm

#

?

#

go place a block, pick up resources, run on a wheel, etc etc etc

ebon basin
#

I let her control the priority queue for the task and set her own schedule

fluid junco
#

she'll be runing out of air like every two minutes

ebon basin
#

Only if she set free time while in carbon dioxide and idle there

fluid junco
ebon basin
#

But it is chaos she won't go to the toilet or to her bed etc

fluid junco
#

idk seems fun at least

#

even if won't work

real sierra
#

I hunger for chess

ebon basin
#

What is also fun on this are the reversed roles Vedal plays as the player the almighty AI and Neuro get a taste what a human is.

chilly maple
#

neat im happy he's so keen to share specs

#

admirable
Ive been working on my own vision LLM (ofc lora training) trying to go for the highest token output .

Been quantizing my own gemma Abliteration :)
Running it on 2x 3090.

#

not with twitch in mind though. I started off with it being a "it joins discord calls and remembers voice/accents and tries to isolate out individual users.

#

i basically have whisper-x, and TTS all running on the 2nd gpu (for vram reasons) to not shard.. then running an EXL2 to have a higher token output for faster responses

fluid junco
#

a giant of a project for a discord bot
TWO WHOLE 3090 DAMN

chilly maple
#

haha yeah

#

it started with a 3090

#

but i was having so much fun i wanted it to grow

#

originally it was a old 9700k as well but i was like.. lets upgrade mobo etc etc.
I have no game agents or anything that front is new to me..

My idea was really just.. hey it can join friends and give people a great day. That part seemed to work so far!

#

Originally i was even driving voice inefficiently using RVC but yeah i wouldnt wana do that anymore!

fluid junco
#

that's great

chilly maple
#

i can post it somewhere. let me see if there is a channel that lets me

stark needle
chilly maple
#

Let me check! I mentioned it before but Again this is from memory it was in the near 300's?

#

per second

stark needle
#

Wtf

#

That's crazy

chilly maple
#

the original one was very like.. bad because i wasnt streaming in and chunking tts properly and like.. it caused gaps in response

#

i dont wanna make a project. any place i can dump a conversational video?

stark needle
#

Idk how long but not that long

rigid snow
#

you can still send links

#

it just won't embed

chilly maple
#

ok ill do that! moment i posted it somewhere

#

doesnt embed.. oh well but yeah remember this was BEFORE proper chunking and streaming of TTS. voice needed work too but its getting better now

fluid junco
#

good latency also

chilly maple
#

i started properly retraining!
Latency should be far far far lower

fluid junco
#

does it do smart stuff like internet search

#

i guess it does kv for remembering users

fluid junco
chilly maple
#

I'm using gemma 3 but abliterated. and then i will re-add restrictions based on people being bad to it and encouraging it to be bad.

Gladly im using discord so im not under scrutiny!
yes! Ive started turning to more assissant hybrid so its also a lil bit more useful!

tender river
fluid junco
#

crazy good

rigid snow
#

so others don't have to download

stark needle
#

That's crazy

rigid snow
tender river
#

you said latency is better too now OhISee

stark needle
#

Chat

rigid snow
#

shadow

stark needle
#

I need your opinion

rigid snow
stark needle
chilly maple
# rigid snow

ive been working on it off and on for a month i believe

fluid junco
chilly maple
#

constantly migrating because the AI toolset is changing so fast and it leaves me wanting more

tender river
sage crag
#

ye

chilly maple
#

im def not wanting to capitalize on it. i work in entertainment so making people happy is kinda my job and i see it can give people some fun so

sage crag
#

lawsuit

chilly maple
#

maybe i should eventually make it not believe she is korone and just give it her own backstory system prompt

chilly maple
#

it has a vector db and a deep memory! pc has 64GB ram but i can expand it to 96gb like my other pc's

#

not !

#

i didnt mean now lol

#

there.. how 1 typo can completely change the message lol!

#

im just running lots of freelance jobs to like.. maybe allocate more money to it as it grows.

stark needle
#

Now get her to sub 1 second latencySCHIZO

chilly maple
#

she can! the issue at the time was about the chunking of TTS

stark needle
#

Fair enough nice

chilly maple
#

the vision is also really really fast. about 50~80 milisecond per snapshot it generates tokens.. altho like token generation slows down in vision to probably a low 50's ? im not sure i havent benchmarked

#

i learned it to recognize humans and remember their names

#

but yeah most people use GGUF for their AI.. i use exl2 but not many people quantize EXL2~3

EXL2 relies on a full vram load of an LLM but because of it its 9% faster then any GGUF

#

(of the same model)

stark needle
chilly maple
#

its kinda funny i went from .. anti AI to kinda falling in love with it some months back and been studying up hard hard hard during my breaks

#

mine can break out in spontanious singing btw

#

during sentence!, laugh and cough too!

sage crag
# sage crag ```rust struct Video { col_bitmap: u64, data: Box<[u16]>, } ```
typedef struct {
    uint64_t bitmap;
    uint16_t *delta;
} Video;

void video_unpack(Video *video, uint64_t *bitmaps) {
    Video vid = *video;
    bitmaps[0] = vid.bitmap;
    uint64_t frames[64] = {0};

    for (uint16_t delta; (delta = *vid.delta++);) {
        uint8_t px_idx = delta & ((1 << 6) - 1);
        uint64_t frame = frames[px_idx] += delta >> 6;

        if (vid.bitmap ^= 1 << px_idx) {
            bitmaps[frame] |= (1 << px_idx);
        } else {
            bitmaps[frame] &= ~(1 << px_idx);
        }
    }
}

i wrote the decompression algorithm

#

i think

chilly maple
#

im still figuring out how i wanna deal with being interrupted though..

sage crag
fluid junco
#

we simple people, we forget to init variables

chilly maple
stark needle
#

Here they are like 700 used

chilly maple
#

its when you get in the 5090 territory it becomes expensive.. but the issue is well... 32gb vram 2x.. its a boost but for the cost..

Netherlands. Only catch: Power costs are high

fluid junco
chilly maple
#

but i have a large home solar farm so i can sustain mine using it

fluid junco
#

damn bro

stark needle
rigid snow
#

joke

#

security question

stark needle
#

tax agency doing ANYTHING to fish information to tax me more

chilly maple
#

Actually since im here.. does anyone know more about the game agents?
I found one for minecraft ofc.. i think neuro probably uses it too since it moves in a similar fashion.. but i found projects like lmgame..
I didnt like the games they have trained on though

sage crag
# sage crag ```c typedef struct { uint64_t bitmap; uint16_t *delta; } Video; void v...

@real sierra

void video_unpack(Video *video, uint64_t *bitmaps) {
    Video vid = *video;
    bitmaps[0] = vid.bitmap;
    uint64_t frames[64] = {0};

    for (uint16_t delta; (delta = *vid.delta++);) {
        uint8_t px_idx = delta & ((1 << 6) - 1);
        uint64_t frame = frames[px_idx] += delta >> 6;

        if (vid.bitmap ^= 1 << px_idx) bitmaps[frame] |= (1 << px_idx);
        else bitmaps[frame] &= ~(1 << px_idx);
    }
}
chilly maple
#

so its something im exploring.

sage crag
#

i do not care to try it MyHonestReaction

#

should work

stark needle
#

For a while

chilly maple
#

things get messy when training.. training outside of loras is where things actually get expensive.

sage crag
#

why did i accept *video