frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Start all of your commands with a comma

https://rhodesmill.org/brandon/2009/commands-with-comma/
51•theblazehen•2d ago•10 comments

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
636•klaussilveira•13h ago•188 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
935•xnx•18h ago•549 comments

What Is Ruliology?

https://writings.stephenwolfram.com/2026/01/what-is-ruliology/
35•helloplanets•4d ago•30 comments

How we made geo joins 400× faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
113•matheusalmeida•1d ago•28 comments

Jeffrey Snover: "Welcome to the Room"

https://www.jsnover.com/blog/2026/02/01/welcome-to-the-room/
13•kaonwarb•3d ago•11 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

https://arcadeblogger.com/2026/02/02/unseen-footage-of-atari-battlezone-cabinet-production/
44•videotopia•4d ago•1 comments

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
222•isitcontent•13h ago•25 comments

Monty: A minimal, secure Python interpreter written in Rust for use by AI

https://github.com/pydantic/monty
214•dmpetrov•13h ago•106 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
323•vecti•15h ago•142 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
373•ostacke•19h ago•94 comments

Microsoft open-sources LiteBox, a security-focused library OS

https://github.com/microsoft/litebox
359•aktau•19h ago•181 comments

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
478•todsacerdoti•21h ago•237 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
278•eljojo•16h ago•165 comments

An Update on Heroku

https://www.heroku.com/blog/an-update-on-heroku/
407•lstoll•19h ago•273 comments

Dark Alley Mathematics

https://blog.szczepan.org/blog/three-points/
85•quibono•4d ago•21 comments

PC Floppy Copy Protection: Vault Prolok

https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html
57•kmm•5d ago•4 comments

Delimited Continuations vs. Lwt for Threads

https://mirageos.org/blog/delimcc-vs-lwt
26•romes•4d ago•3 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
16•jesperordrup•3h ago•10 comments

How to effectively write quality code with AI

https://heidenstedt.org/posts/2026/how-to-effectively-write-quality-code-with-ai/
245•i5heu•16h ago•193 comments

Was Benoit Mandelbrot a hedgehog or a fox?

https://arxiv.org/abs/2602.01122
14•bikenaga•3d ago•2 comments

Introducing the Developer Knowledge API and MCP Server

https://developers.googleblog.com/introducing-the-developer-knowledge-api-and-mcp-server/
54•gfortaine•11h ago•22 comments

I spent 5 years in DevOps – Solutions engineering gave me what I was missing

https://infisical.com/blog/devops-to-solutions-engineering
143•vmatsiiako•18h ago•64 comments

Understanding Neural Network, Visually

https://visualrambling.space/neural-network/
284•surprisetalk•3d ago•38 comments

I now assume that all ads on Apple news are scams

https://kirkville.com/i-now-assume-that-all-ads-on-apple-news-are-scams/
1061•cdrnsf•22h ago•438 comments

Why I Joined OpenAI

https://www.brendangregg.com/blog/2026-02-07/why-i-joined-openai.html
136•SerCe•9h ago•124 comments

Learning from context is harder than we thought

https://hy.tencent.com/research/100025?langVersion=en
178•limoce•3d ago•96 comments

Show HN: R3forth, a ColorForth-inspired language with a tiny VM

https://github.com/phreda4/r3
70•phreda4•12h ago•14 comments

Female Asian Elephant Calf Born at the Smithsonian National Zoo

https://www.si.edu/newsdesk/releases/female-asian-elephant-calf-born-smithsonians-national-zoo-an...
28•gmays•8h ago•11 comments

FORTH? Really!?

https://rescrv.net/w/2026/02/06/associative
63•rescrv•21h ago•23 comments
Open in hackernews

How many chess games are possible?

https://win-vector.com/2026/01/27/how-many-chess-games-are-possible/
85•jmount•1w ago

Comments

tromp•1w ago
> For the chess problem we propose the estimate number_of_typical_games ~ typical_number_of_options_per_movetypical_number_of_moves_per_game. This equation is subjective, in that it isn’t yet justified beyond our opinion that it might be a good estimate.

This applies to most if not all games. In our paper "A googolplex of Go games" [1], we write

"Estimates on the number of ‘practical’ n × n games take the form b^l where b and l are estimates on the number of choices per turn (branching factor) and game length, respectively. A reasonable and minimally-arbitrary upper bound sets b = l = n^2, while for a lower bound, values of b = n and l = (2/3)n^2 seem both reasonable and not too arbitrary. This gives us bounds for the ill-defined number P19 of ‘practical’ 19x19 games of 10^306 < P19 < 10^924 Wikipedia’s page on Game complexity[5] combines a somewhat high estimate of b = 250 with an unreasonably low estime of l = 150 to arrive at a not unreasonable 10^360 games."

> Our final estimate was that it is plausible that there are on the order of 10^151 possible short games of chess.

I'm curious how many arbitrary length games are possible. Of course the length is limited to 17697 plies [3] due to Fide's 75-move rule. But constructing a huge class of games in which every one is probably legal remains a large challenge; much larger than in Go where move legality is much easier to determine.

The main result of our paper is on arbitrarily long Go games, of which we prove there are over 10^10^100.

[1] https://matthieuw.github.io/go-games-number/AGoogolplexOfGoG...

[2] https://en.wikipedia.org/wiki/Game_complexity#Complexities_o...

[3] https://tom7.org/chess/longest.pdf

jmount•1w ago
Nice stuff, thanks for sharing that.

I remember from a lot of combinatorial problems (like cutting up space with hyper-planes or calculating VC dimension) that one sees what looks like exponential growth until you have a number of items equal to the effective dimension of the system and then things start to look polynomial.

BTW: I was going through some of your lambda calculus write-ups a while ago. Really great stuff that I very much enjoyed.

qsort•1w ago
I wonder if/how that interacts with the new draw rule. (For the uninitiated: the formal rule to adjudicate games as draws automatically or on time is that the game is a draw if there exists no sequence of moves that could lead to checkmate. Interestingly, although this has almost no strategic implications, it means that... it's almost impossible to write a program to detect draws that's technically correct. A similar corner case is draws in Magic the Gathering, which is literally undecidable in general.)
Sesse__•1w ago
Is that a new rule? I was under the impression that it had been the case for a very long time that if you went out on time but there was no possible sequence of moves leading to checkmating you, it was a draw instead. (Meaning, of course, that having more pieces could be a disadvantage in such situations, which feels a bit unfair. E.g., KvKB is a draw, but KPvKB can lead to a mate if both sides cooperate, and thus would be a time loss for white even if black would never win in practical play.)
jmount•1w ago
I just updated the article. I did use Python's insufficient material detection, in addition to the ability to call for a draw (3-fold repetition, and 50 move rule). I think the "75 move rule" that doesn't require a player to call is one of the more recent rule changes.
qsort•1w ago
That's not new, but how it formally works has changed. There used to be a number of explicitly enumerated cases (i.e. bare king and king with a minor piece,) now the rule instead just says that there must exist a sequence of moves to mate. Some positions, even with pawns (imagine a completely closed position with only pawns and kings) wouldn't have been automatically drawn under the previous system but now would be. I think USCF rules, unlike FIDE, still have the enumerated cases?

The difference is extremely minor and has almost no strategic implications, it's just an interesting corner case.

TZubiri•1w ago
Does it depend on elo as well?
lmm•1w ago
No. How could it possibly depend on elo?
TZubiri•1w ago
Well it can depend on Referee discretion, and the referee can evaluate whether a position is obviously a draw or not.

Something in high elo may obviously be a draw, like KRPPP vs KRPP, or KRN vs KR but not necessarily in lower elo.

Sesse__•1w ago
What if the players are both much higher-rated than the arbiter?

Basically, once you've lost on time, you're giving up the right to any sort of agency, and thus the Elo doesn't matter. The rules are charitably giving you a rating of minus infinity and allow you to attempt salvaging half a point with that.

Sesse__•1w ago
The oldest rules on FIDE's pages are the ones for “before 2014”. They state:

  The game is drawn when a position has arisen in which neither player can checkmate the opponent’s king with any series of legal moves. The game is said to end in a ‘dead position’. This immediately ends the game, provided that the move producing the position was legal. (See Article 9.6)
And 9.6 just states:

  The game is drawn when a position is reached from which a checkmate cannot occur by any possible series of legal moves. This immediately ends the game, provided that the move producing this position was legal.
And similarly 6.9, which governs loss on time:

  Except where one of the Articles: 5.1.a, 5.1.b, 5.2.a, 5.2.b, 5.2.c applies, if a player does not complete the prescribed number of moves in the allotted time, the game is lost by the player. However, the game is drawn, if the position is such that the opponent cannot checkmate the player’s king by any possible series of legal moves.
So it's at least ten years old, but possibly quite more. I know I have a copy of the 1984 rules (or possibly even older) somewhere on paper, but then I'd have to go into the attic :-)
Someone•1w ago
> the game is a draw if there exists no sequence of moves that could lead to checkmate. Interestingly, although this has almost no strategic implications, it means that... it's almost impossible to write a program to detect draws that's technically correct.

I don’t see what makes that technically difficult. The number of possible positions is finite, so just enumerate the game tree and check whether it contains a checkmate situation.

I also don’t see why it would be almost impossible in practice. Aren’t the only weird situations ones where there are pawns that could be promoted to queens if they weren’t blocked by other pawns, and those pawns prevent all other pieces on the board from taking pawns and from checkmating the king?

BobaFloutist•1w ago
>there are pawns that could be promoted to queens if they weren’t blocked by other pawns, and those pawns prevent all other pieces on the board from taking pawns and from checkmating the king?

I'm having a hard time picturing this scenario. Is it that any move to take a pawn places the mover in check?

Someone•1w ago
I have a hard time envisioning that, too, but I think one can construct boards with rook or two bishops being closed in behind a setup with all 16 pawns still on the board, with the opposing king on the other half of the board.
program_whiz•1w ago
You're approach seems straight-forward in theory -- just check every possible move and make sure that none lead to a checkmate. The only issue is that "checking every possible move" is a huge state space (way above what is computable). Not only that, but there are cycles (so you need to deduplicate). And if the game is a draw, then that means the number of moves is technically unbounded (since there would always be a move that makes the search tree deeper), as by definition, there is no way to end the game. So the question is 'when do you stop searching?'. It could be that checkmate is possible, but you haven't searched the 1 in 1 billion part of the strategy tree. In practice, its probably down to some heuristics and a reasonable depth search, but its not formally verifiable. Its a variant of the halting program -- prove that there is a stopping point for this game.
qsort•1w ago
In the overwhelming majority of situations including almost the totality of those you care about in practice, it's trivial to say "draw" or "no draw". I mean "technically correct" in this sense: imagine you're a programmer writing a chess game. At some point, you have to write a function "isPositionDrawn()" that takes as input a board position and says "true" if the game is over as a draw, false otherwise. What do you do?

- Trivial material checks don't work: even if you're sophisticated (light color vs. dark color bishops) there exist positions, even with pawns, that are drawn as per the rule as stated.

- Enumerating the game tree is obviously correct but it's too large to do in practice, we want an answer before the heat death of the universe.

So, what code do you put inside that function? If I'm not mistaken there is an "official" algorithm to do it, but it's very complicated, and in practice in computer chess a simplified version of the rule (a list of cases with "insufficient material") is used.

Again, it's mostly nerdy navel gazing, the consequences on actual play are minuscule, but it's interesting that many games have nontrivial termination if we follow the letter of the rules.

lxgr•1w ago
For 7 remaining pieces or less, there are actually tablebases of all possible positions showing whether there's a possible win or loss for either side: https://en.wikipedia.org/wiki/Endgame_tablebase
eszed•1w ago
Huh! I don't follow chess closely enough to have known the tables go that deep. Do high-level players memorize (enough of) those that their strategy in a losing position shifts to creating a drawing piece combination? Or do the tables only formalize something was that always done intuitively?
lxgr•1w ago
I don't think human players memorize tables in the same way that they memorize opening lines. The number of possible endgame position values is astronomical; "Syzygy" for 7 pieces is a few TB of data, for example.

Heuristics get them very close, but I vaguely remember hearing that sometimes the tables will find an obscure move sequence to turn around a draw to a win 15 or 20 moves in that a human has no chance of spotting.

These tablebases do have something eerie to them, as they represent the phase transition from heuristics to the "solved" part of chess. Lichess will automatically swap to them once it's feasible, and instead of a position evaluation, you'll just instantly see whether it's winning, losing, or drawing. Ken Thompson called it "playing chess with God": https://en.wikipedia.org/wiki/Endgame_tablebase#%22Play_ches...

That said, this can happen with chess engines as well; if a position can be exhaustively analyzed, it'll show you "winning/losing/drawing in n moves" just like the tablebases. The tablebases just guarantee that they'll find that solution in constant time.

Someone•1w ago
I do not see how that’s a good estimate. For example, take a game length of, on average, 4 and a branching factor of 10. That gives an estimate of 10,000.

Chances are there are games of lengths 3 and 5, too. With that branching factor, there are 1,000, respectively 100,000 of those, for a total of 111,000. That’s over ten times as many games as estimated.

The larger the spread in game length towards games that are larger than average, the more the proposed estimate underestimates the actual number.

tromp•1w ago
> That’s over ten times as many games as estimated.

That's still a pretty good estimate of an exponentially large quantity; the exponent being off by only 1. With these estimates you cannot hope to do better than estimating the exponent.

Someone•1w ago
But for chess, the spread in number of moves is a lot larger, and the branching factor is higher. 20 more half moves and a branching factor of 35 isn’t unreasonable, and gives you an underestimation of over 10³⁰.

And these tweaks do not complicate the math.

GMoromisato•1w ago
One thing I always wondered is how many moves, on average, do you have to play before reaching a position that has never before seen on Earth?

Or maybe the question should be what percent of games reach a position that has never before been seen?

tromp•1w ago
I think that the average chess game played between humans contributes between 20 and 40 new positions (note that a 30 move chess games has 60 plies).
bdamm•1w ago
You'd probably need to make a determination of the skill of the players. A very strong player vs a novice could be scholar's mate most of the time.
reassess_blind•1w ago
Yes, the stronger the players, the more often they will both go deeper into established theoretical lines that have been played before.
dpc050505•1w ago
A very strong player would show the novice the scholar's mate once and then move on to hanging tactics and pieces on purpose so that the novice starts seeing things, probably leading to positions that are a lot more rare.
recursivecaveat•1w ago
Apparently ~75% of the positions in the lichess database (as of 6 years ago) have only been seen once ever. Average game length is 30-40 moves, so for the completely average player it would be like 10+ moves I suppose. The stronger the players the longer it will take: I found some comments suggesting 20+ for high level players.
empiko•1w ago
I don't think the math is correct here. The 25% of positions that have been seen more than once represent more than 25% of the occurrences. Even if all of them would be seen only twice, you should already see them in 40% occurences.
squidbeak•1w ago
It depends totally on the opening. You can be out of book and database far quicker than that for offbeat stuff, or in book far longer for popular openings.

Another distinction needs to be made between positions seen and positions played. Almost every viable position will have been seen in preparation well beyond 10 moves. But seeing them on the board is rarer.

RA_Fisher•1w ago
Infinite. :) Chess is strictly unbounded.
Mordisquitos•1w ago
That was also my intuition. Unless there's a rule that can stop two immortal but dumb-as-bricks players from indefinitely cycling through the same non-capturing moves surely the answer is 'infinity'.
eulgro•1w ago
Well there is. The three/five fold rule. And 50 moves rule.
DSMan195276•1w ago
It depends what rules you're using, but there are the three-fold repetition and 50-move rules which allow a player to force the game to end in a draw. The catch is they both require one of the players to claim a draw under the rule, otherwise they can keep playing.

There is additionally the 75-move rule where the the game is forced to be over without either player claiming the rule (the arbiter just ends the game), that rule would give an upper bound regardless of the players knowledge of the rules.

LegionMammal978•1w ago
How I'd put it is that there are two sets of stopping points under FIDE rules:

- After threefold repetition or 50 moves, either player may claim a draw.

- After fivefold repetition or 75 moves, the game is automatically drawn.

Most modern counts of the longest possible chess game, or the total number of possible chess games, are based on fivefold repetition and the 75-move rule.

Meanwhile, threefold repetition and the 50-move rule are still relevant in endgame tablebases, since they rule out certain forced mate sequences.

Sesse__•1w ago
Endgame tablebases don't take into account threefold repetition; if so, you would have to basically be able to exclude any arbitrary position from the tree, which would seem impossible. The 50-move rule is respected by the Syzygy tablebases, though with the concession that they do not generally give the fewest possible moves to mate (they would rather delay the mate than delaying a pawn push or a capture).

Here's an example (adapted from the URL below): https://syzygy-tables.info/?fen=3R4/5R2/8/8/8/1K6/8/4k3_w_-_... — if you asked pretty much any player, even a child, how to win this, they'd show the staircase mate starting with Re7+ (mate in 4). If you asked a computer or the older Nalimov tablebases, it would say Kc2! (mate in 2). However, if you ask the Syzygy tablebases, they would argue that this is not optimal if we are extremely close to the 50-move rule, so the safest and thus best move is Rf2!! which forces Black to capture the rook on the next turn (they have no other legal moves), resetting the counter and giving a mate in 18.

There were a set of experimental DTM50 tablebases made at some point (though not made public); they store the shortest mate for all 100 possible zeroing counters in any position. See https://galen.xyz/egtb50/ for some discussion.

jonah-archive•1w ago
In this lovely paper: https://tom7.org/chess/longest.pdf

The author points out that:

"This rule only applied to games started after its introduction, so it is possible that some pre-1561 games are still in progress and may never end."

drpixie•1w ago
As I understand it, the 50-move rule must be invoked by one of the players, lets assume our immortal players agree not to invoke that rule.

The 75-move rule is automatic, so that would be the limiting factor.

Note, that 75-move rule is only applicable after no pawn has moved or a piece has been captured. So our immortals can do a lot of shuffling things around.

I'm thinking that the number of moves of the longest game is going to be (16 pawns * 7 moves each + 16 pawns being captured + 14 other pieces each being captured, not the kings) * 75 moves for shuffling around = 10650 moves.

That's only 1 week at 1 move per minute! But given the permutations, it might take much longer to calculate the actual moves required to get to the end state :)

Sesse__•1w ago
Here's an actual constructed game that is presumably as long as possible (with explanation): https://www.reddit.com/r/chess/comments/168qmk6/longest_poss...
DSMan195276•1w ago
Pawns only get 6 moves :) But also they can't all make 6 moves because they can only move past each-other via capture, so half of them would get 5 moves instead (if you're counting all the captures), so that gives a maximum of ~8850.
erehweb•1w ago
This link https://wismuth.com/chess/longest-game.html from the article talks about the 2014 changes (75-move rule and draw by 5-fold repetition) that make it no longer infinite.
paulpauper•1w ago
meh. I think it would have been more interesting had the author discussed more granular estimates. Mathematicians have narrowed it down more by considering the properties of the pieces and bijections.
LegionMammal978•1w ago
Assuming you're referring to [0], that's a statistical estimate of valid chess positions (based on clever methods of uniform position sampling + fast validity testing), not valid chess games (based on estimating branching factors for very long games).

[0] https://github.com/tromp/ChessPositionRanking

jonas_kgomo•1w ago
I watched a movie a few days ago and they basically said there are more states in the game of chess than atoms in the universe? https://www.youtube.com/watch?v=xfMQ7hzyFW4
adonovan•1w ago
Sure, but in combinatorics the number of atoms in the universe (say 1e80) is not a large number. For example, the factorial of 59 is larger. If you own 30 pairs of shoes, there are factorial(60) ways to arrange the individual shoes in a sequence.
BobaFloutist•1w ago
To be fair, that's atoms in the observable universe.

The total size of the universe is unknown, and could (and likely does) have way more atoms than that.

Actually, that's a fun thought: assuming homogenuity of matter between the observable and unobservable universe, how much bigger would the unobservable universe need to be to render some of these claims no longer true?

Because you're right to point out that factorials grow absurdly quickly. It's entirely possible my caveat straight up doesn't matter.

Edit: Ok, I'm seeing Wikipedia has a (disputed) estimate for the diameter of the total universe as 10^10^10^128 megaparsecs. Then, radius cubed should be 1/2(10^10^10^128^3)=1/210^10^10^131, as opposed to the radius of the observable universe being a nice, clean 14 billion parsecs = 1410^3 megaparsecs, making the radius cubed 1410^4 megaparsecs. I don't think I have a big enough calculator for this, but for fun, let's say 128^3 is roughly 2,000,000. Then we can rewrite T, the relative volume of the total universe, as 1/210^10^10^2*(10^ 6). I guess if we call 14 close enough to 10, then our density is 10^80/10^6=10^74 atoms for every pi megaparsecs cubed.

Going off the heuristic that n!<n^n, and the total universe can trivially produce (10^10)^(10^10), we would need to rearrange >10^10 objects just to even start to think about the number of (megaparsecs cubed)/pi it might have, let alone the 10^74 those each have.

We might not have enough decks of cards for this one.

(Feel free to criticize/tear down my math or logic anywhere in this one, it's very much off the cuff and I'm sure I made at least as many egregious errors in computing exponents as I did computations. No math class I've taken yet really prepares you to handle exponents raised four deep.)