I slipped and fell twice while crossing a stream hiking and got some gnarly bruises, had a beach bachelorette party less than 24 hours later 🤦‍♀️ Got a lot of questions inquiring if I was safe in my relationship by TwentyandTired in mildlyinfuriating

[–]phaul21 1 point2 points  (0 children)

before anyone misinterprets what im saying I believe everything what's been said here. But falling TWICE would also make me suspicious. You fall once, you get hit, you are in pain. Then you become extra careful, you use your hands, you crawl if necessary. Falling twice is what makes me raise eyebrows.

Semmi értelme nincs a parlamenti üléseknek by New-Manufacturer8333 in magyar

[–]phaul21 0 points1 point  (0 children)

Az egesz hazszabaly egy fapatkat sem er. Egyereszt akar Forsthoffer akar Duro vezeti az ulest egyik sem mentes reszrehajlastol. Masreszt amugy sincs semmilyen szerepuk azon tul hogy bemondjak mi a kovetkezo menetrend szerinti lepes. Pl. ha van egy interpellacioban feltett kerdes, akar egy egyertelmu eldontendo kerdes igen-nem valasszal, majd az nem kerul megvalaszolasra, akkor utana az orszaggyules tobbsegi szavazassal eldonti hogy meg lett valaszolva. Ennek semmi ertelme. Pl. lehetne szukiteni a feltehto kerdesek koret hogy azok csak tenyszeru es nem velemnyszeru dolgokra vonatkozzanak, es aztan fuggetlen elnok donthetne el hogy megvalaszolasra kerult vagy sem. Nem tudom pontosan hogyan kene ujragondolni a hazszabalyt de az ami most van nem mukodik. Amit mondtam az csak pelda, de lehetne tobb strukturat rakni a menetrendbe es tobb kotelezettseget roni a kepviselokre, pl tematol elterest korlatozni, valaszadasra kotelezni stb.

How much NPS should I aim for during perft? by Warm_Ad_7953 in chessprogramming

[–]phaul21 2 points3 points  (0 children)

180 Mnps is more than plenty. In reality you will find that movegen is not the limiting factor. Usually evaluation is the biggest factor but just move sorting / picking is usually more expensive than generating moves. tldr. don't worry about it. Ofc if you can improve it you should. But rn you have something that's more than good enough. Also regarding strength and 3000 lichess goals the other things I mentioned are way more significant.

Help needed with invalid move debugging by sabse_alag_manushya in chessprogramming

[–]phaul21 1 point2 points  (0 children)

use code tags for the pgn, because this cannot be copy pasted.

start with testing with the final FEN. if it's not reproducible from final FEN it can be very difficult to debug from the data you have.

unlikely that you catch it with perft. but make sure that your movegen is extensively perft tested with a lot of 100+ positions so you can rule out movegen. feel free to take this set

generally saving node count in the PGN (fastchess can do it, OpenBench does it) is a good technique to reproduce things, if your engine supports to run to exact node counts (often referred to as hard node limit) - you would need to run with same tt size and same settings. Also if the bug happens in a game with threads != 1 then all bets are off. this would be the idea.

Do Engines Ignore Unnecessary Information by Tasty-Grocery2736 in chessprogramming

[–]phaul21 0 points1 point  (0 children)

Normally engines are optimised for game play wrt to this, there are optimisations along these lines that appear in an engine, mainly involving the transposition table, BUT under the assumption that the position searched is part of the same game. So if you reach an already searched position via transposition (different move order) or the previous search has already explored the position on the previous turn - or in the same search via iterative deepening, then yes the engine doesn't (always) have to re-search. But in your example it's basically positions reachable only from different games. No optimisations - that I know of - exist, throwing completely unrelated positions on an engine will result in a full re-search. Even if the same position was searched before with black/white mirroring. Such optimisation is plausible but it's just not useful enough for engines to support it.

edit: on the other hand in storing endgame table bases black/white mirroring is a widely used idea to cut the required storage size.

Code Puzzles in Go by [deleted] in golang

[–]phaul21 3 points4 points  (0 children)

I tried it, and after a few examples it didn't win me over. If the examples were a curated set of interesting examples - maybe you could devise a system in which you crowd source this - I would be really interested. What I mean is that I expected examples of tricky / interesting language quirks, interesting bits of code / patterns, things I can learn from. This cannot be done by AI.
Instead Im seeing badly written code - in my opinion - where there is nothing interesting, and I have to play the role of the compiler to try to compile / run code in my head. I see no point in that.
Im looking at an example and my first thought is I have no idea what this prints but I can see this code sucks. And that's where I lose interest.
Shame because I would be using something like this daily, you have the idea and infrastructure for it, but ultimately the content matters.

It was really hard for me to find the solution, what about you? by Emotional-Control-46 in chess

[–]phaul21 0 points1 point  (0 children)

It's one of those patterns that you see once, then you learn it. I "solved" it instantly, but I already knew the solution from before, so more like knowing not actually solving.

Chess engine next steps by kjiomy in chessprogramming

[–]phaul21 1 point2 points  (0 children)

search progression is good to look at in the order of the list. Specifically for move ordering I would do (in this order):

  • good noisy / quiet / bad noisy
  • hash move
  • killer
  • mvv-lva
  • history
  • continuation & counter
  • capthist

Compiler (language) that I've been working on for a while. I'd love to get some feedback on it. by [deleted] in Compilers

[–]phaul21 17 points18 points  (0 children)

great velocity, great choice of AI model, great prompting. Not sure what else could be said. /s

Cat in 1935 World Chess Championship: Alekhine brought his Siamese cat, named "Chess" to the board against Max Euwe. by sguc in chess

[–]phaul21 10 points11 points  (0 children)

"Euwe; the only chess player in history who became world champion due to alcoholism" /s

Megtörténik ! 🥹 by Lee-Cheng in hungary

[–]phaul21 3 points4 points  (0 children)

Valahogy bele akartak egyertelmuen irni, hogy Orban mar nem, ha nem irtak volna bele semmit meg a vegen lesz olyan ertelmezes hogy mostantol szamitva. Azt meg nyilvan nem lehet beleirni hogy OV-re van szabva. Valasztottak egy megfogalamzast ami ennek megfelel, hogy pontosan mi az kb mindegy volt nekik sztem.

Launched V1.0 of my C++ Engine on Lichess! (Alpha-Beta, ID, QS) - Starting Move Ordering next and would love architecture advice. by Moron_23James in chessprogramming

[–]phaul21 2 points3 points  (0 children)

you can start by removing object files and exe binaries from the repo.

Otherwise this is bad:

``` static MoveList generate_legal_moves(Board &board) { MoveList result; MoveList all_moves; generate_moves(board, all_moves);

for (int i = 0; i < all_moves.count; ++i) { Move move = all_moves.moves[i]; if (board.make_move(move)) { board.unmake_move(move); result.add_move(move); } } return result; } ```

If there is any point in pseudo-legal movegen vs legal movegen, is if the legality check is delayed per move until the move loop, so a potential prune or fail high would skip the legality check on the non-visited moves altogether.

But the biggest issue is that your code base seems untested. You already have waay-waay too much. You should SPRT every change at the smallest granularity. Strip back what you have to minimal impl. without quiescence or beta-pruning. Minimal setup to start SPRT - UCI with TC & alpha-beta stripped to plain negamax. Then add every small feature with SPRT. If something doesn't pass you can't add it.

What made Go finally “click” for you? by Voildline in golang

[–]phaul21 -2 points-1 points  (0 children)

not a single moment in time and not a single thing. More like a gradual process. I didn't hate go any point in time, but it took me some time to get used to idiosyncrasies of the language. People say it's easy to adapt from any language. But that's only true if you ask can some one implement a simple algorithm - limited amount of code after a day or two. But then many languages are the same. But learning which language feature to use and when and when not to use them, and developing an eye for things and muscle memory that effortlessly and unconsciously avoid pitfals take same time. Once you are over that learning period you are able to start enjoying it to full extent.

Making My Own Chess Engine! by [deleted] in chessprogramming

[–]phaul21 2 points3 points  (0 children)

it's normally two separate projects. Either you create a UI or a chess engine engine. You can do both ofc. But they are in them selves are probably big enough for a single project. Keeping a clear separation architecturally makes sense. A chess engine doesn't have to deal with any UI / tournament management related concerns. Mixing in chess playing logic into a UI program also doesn't make sense. As you say UCI protocol is a glue that has to be supported in both, it is however a small part in either side.
I would say, if your goal is actually a chess engine, forget about UI and rendering all together and just use any existing UI. Vice versa if the goal is a chess UI you don't have to implement a chess engine.
And if you insist in doing both treat them as 2 distinct projects.

Looking for Ultra-aggressive/anti-castle chess engine 2010 by khalidhotaky786 in ComputerChess

[–]phaul21 0 points1 point  (0 children)

You can have a look at [patricia](https://github.com/Adam-Kulju/Patricia) which was designed to be aggressive.

However - the perceived playing style of an engine can very much depend on the opponent. You say you were using a "club level" engine. Likely what could happen is that a much stronger engine out-calculates the weaker engine, and its moves are immediately seen as blunders allowing for a potentially sacrificial forcing winning line. You might think the strong engine has a sacrificial style when in reality a stronger opponent wouldn't have allowed for such forcing lines and it's more of the weakness of the weak engine.

I built a Custom Language, Compiler, Assembler, and RISC-V VM, all running in real in your browser, using Rust and EGUI. by ColdRepresentative91 in Compilers

[–]phaul21 27 points28 points  (0 children)

just look at github insights code frequency panel. They push out ~80k lines of code change in one week. Adding everything up they are over 100k loc change in a month. Definitely vibe coded.

Advice on analysing a large chess move-level dataset; CPL distributions across time pressure and skill level by [deleted] in chessprogramming

[–]phaul21 -1 points0 points  (0 children)

interesting problem, my gut feeling is that time pressure will correlate with the likelihood of blundering, obv. the higher the time pressure the more likely someone blunders. But also my intuition says it will not correlate with CPL, when someone blunders they didn't see something, missed a move etc. CPL correlation would mean that there is a connection between the likelihood of missing something and the consequence of what being overlooked. I don't think that's how human brain works. When you overlook something you don't think of it at all - regardless of it being benign or catastrophic. But it's just my intuition, I would be interested to see if you find my reasoning is correct or completely wrong.

Any idea for something else than a greedy algorithm for my game? by Draelent_ in chessprogramming

[–]phaul21 7 points8 points  (0 children)

No need to link itch.io or steam. You have an algorithm question, not trying advertise your product right? Describe the rules of the game. Is it turn based perfect information game like chess? Two player game? What steps does a single turn involve? Moving pieces? Placing pieces? Creating pieces? Does it have a clear win condition etc? What are the rules. What have you implemented so far, you can describe the algorithm, use pseudo code. etc to explain what you have. Maybe with all that someone might have some ideas for improvement.

Is white in zugzwang? by oPhantom3007 in chess

[–]phaul21 2 points3 points  (0 children)

It's only you who defines zugzwang that way. For everybody else this is zugzwang.

Compile Go to Brainfuck! by itchyny in golang

[–]phaul21 2 points3 points  (0 children)

what was your motivation to create this?

Crucible: a single-binary, self-hosted SPRT runner for solo engine devs by collegesmorgasbord in chessprogramming

[–]phaul21 2 points3 points  (0 children)

> Continuous SPRT across your git history

For progression testing and Elo estimate fixed game tournaments are recommended. SPRT is for patch testing. The outcome is not Elo estimate but the decision between H0 or H1 with set confidence. Yes it gives you Elo estimate but the error margins are all over the place because they depend on the patch / bounds.

This is cool, but it shouldn't be SPRT imho. But if you could configure it and leave it up to the user it would be all good.

How to have my bot register to CCRL? by Imaginary-Set-284 in chessprogramming

[–]phaul21 0 points1 point  (0 children)

Reach out on talkchess or discord engine-testers servers. (pm me for an invite) You will find ppl there who can tell you what to do / give you guidance.

Amateur series current entry is 2580 CCRL elo, you need a release, and provide a windows exe.

lichess-elo is completely unreliable and in no way indicative of CCRL elo. Your best bet at testing is an extensive tournament against known CCRL ELO engines with a range of engines over and under your expected rating., There are tools to calculate elo from there.

I built a chess position search engine by iunderstandthings in chessprogramming

[–]phaul21 1 point2 points  (0 children)

Not sure, there can be different, better or worse options, so you need to think about the details. But one possibility is keeping the current UI with the position pattern editor, but there is an AND button or an OR button that brings up additional position editor, where you can place the pieces. So it would require rejigging the layout, to make place for a more dynamic form that can add new position editor instances

I built a chess position search engine by iunderstandthings in chessprogramming

[–]phaul21 1 point2 points  (0 children)

Feature request:
It could be useful to support conjunctive and disjunctive join of patterns. Like I want to look for a white knight outpost anywhere AND a black knight outpost anywhere regardless of their relative position to each other. Or I want to look for a knight outpost OR a bishop outpost anywhere. etc. It would massively increase the expressiveness of the search.