← Back to the workshop

The engineering challenge

Sol Hold'em

A poker project I built with my brother to see how far we could take it. Free play and a Solana devnet experiment; nothing of real value at stake.

Play Sol Hold'em
Sol Hold’em’s app mark over a schematic poker tableA game. An engineering experiment.

Why I built it.

My brother and I built Sol Hold’em to explore how far we could take an online poker game. The appeal was as much the engineering as the game: rules, shared state, real-time play, and a version whose hands can be checked afterwards.

I keep it available as a free game and a record of the development challenge. Its scope here is play money and devnet, with nothing of real value at stake.

Inside the project.

No-limit Texas Hold'em, dealt at a public cash table for play money. You take a table from the lobby, buy in, and play hands until you decide to stand up — there is no tournament to survive and no bracket to climb, which is what makes it the version of poker you can sit down to for ten minutes.

Real players sit alongside bots, which take any seat nobody else has so a lone player always has a game. The bots are written to three difficulty tiers so a table is not one personality repeated eight times. They are rule-based rather than learned, which is a deliberate choice and not a placeholder: a bot whose reasoning can be read is one whose bad calls can be fixed.

The rules engine was written twice on purpose — first in Go, then ported to TypeScript — and the Go version is kept as the reference the port is checked against, hand for hand. Poker is a game where an edge case in the side-pot maths is a real bug rather than a cosmetic one, so two implementations agreeing is the cheapest way to know the port is right.

The second lobby, at /chain, is the same game with the money and the dealing taken out of the operator's hands. It runs on Solana's devnet: a browser wallet — Phantom, Solflare or MetaMask — escrows the buy-in in test tokens and signs for its seat, the players shuffle and deal the cards between them, and each finished hand can be read back and re-checked on a public verifier page. Devnet is enforced by the program itself, which refuses a mainnet deposit; there is no version of it played for real money.