18 Sep 2010
About a year ago I started working on a poker odds calculator, improving it every few months, it had been sitting in a 95% complete state for quite some time now. Today I finally finished off the last little graphical bugs and uploaded it to a new domain:
- Simplicity (help text will be avoided in favour of making the interface intuitive)
- Fast loading (as you can see, no ads or useless crap to get in the way, calculation code heavily optimised)
- Accurate: exact odds (no simulations) rounded to nearest 0.01%
- Pleasing interface (click, drag/drop, animations etc)
- Shareable - the link at the bottom creates a 'permalink' to the results
One useful feature is that you can type in your address bar something like: pocketodds.benjoffe.com/aa67 which will redirect straight to the results for Aces vs 67. To enter community cards in the url add a slash, eg: pocketodds.benjoffe.com/aa67/45k. Suits are chosen automatically but these can also be specified in the url by adding a S,H,C or D after each card (Spades, Hearts, Clubs, Diamonds).
In order to ensure the results are delivered as fast as possible, two things happen when a calculation is to begin: 1. the web browser starts solving the odds and 2. a request is fired off to the server to solve the same thing; they then race to the answer and as soon as one gets it the results are displayed and the slower method is aborted. This means slow networks benefit from solving the odds localy, and slow computers benefit by the server solving the odds much faster. Node.js was used to be able to use the same code in the browser and on the server.
Supported: Safari, Firefox, Chrome, Opera, IE6+ (IE6 will be a bit ugly though, I don't see any use in optimising for it).
Shortcomings (hope to improve soon):
- Drag/drop only works with cards already in play, not cards from the deck.
Features for another day:
- Ranges (ability to select a player as having any possible hand from a range. eg. pocket 10s or better)
- Ability to display odds in more ways (equity, specific decimal places, as a ratio etc.)
- More hand info, eg outs on turn, flop equity graphs etc.
- Other cool stuff...