Poker Copilot 2.58 Now Available

??Poker Copilot 2.58 is now available to download.

What’s changed:

  • Added starting bankroll. You can set this in the Preferences. Bankroll charts start at this level. 
  • Locating and dealing with problematic hand history files is much easier with the new “Hand History Problems” window. A link to this window appears when Poker Copilot has difficulty reading a hand history file.

What’s fixed:

  • Fixed a problem with Ongame hands where returned uncalled bets were sometimes miscalculated 
  • Added a work-around for a new Winamax hand history problem – if a hand is labelled simply “holdem”, Poker Copilot assumes it is no limit holdem. 
  • Export-generated tournament summaries with extra blank lines on end are now parsed correctly. 
  • PokerStars 20-100 BB tables now work correctly with the HUD 

?Update Instructions:

  1. Download the latest version here
  2. Open the downloaded file. 
  3. Drag the Poker Copilot icon to the Applications icon. If prompted to replace an existing version, confirm that you do want to replace. 

Now you’re done and ready to hit the tables.

Java + AppleScript

Java 6 introduced the ability to run AppleScript from within Java. For a long time I considered this a solution in need of a problem. However I’ve been working recently on making it easier to find and report hand history problems in Poker Copilot. With a little bit of AppleScript I can open the Mail application, create a message, and attach a file. Java supplies the recipient’s email address, the subject, the body of the message, and the attachment. Put it together and it looks like the following:

import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ApplescriptEmailer {

    public void createEmailWithAttachment(String recipient, String subject, String content, String attachmentFilename) throws ScriptException {
        final String script =
                "tell application \"Mail\"\n" +
                        "    set theMessage to make new outgoing message with properties {visible:true, subject:\"" + subject + "\", content:\"" + content + "\"}\n" +
                        "    tell theMessage\n" +
                        "        make new to recipient at end of to recipients with properties {address:\"" + recipient + "\"}\n" +
                        "    end tell\n" +
                        "    tell content of theMessage\n" +
                        "        make new attachment with properties {file name:\"" + attachmentFilename + "\"} at after last paragraph\n" +
                        "    end tell\n" +
                        "    activate\n" +
                        "end tell";

        new ScriptEngineManager().getEngineByName("AppleScript").eval(script);

    public static void main(String[] args) throws ScriptException {
        final String filename = "/Users/steve/Documents/problem file.txt";
        final String subject = "Poker Copilot Problem Hand History File";
        final String content = "Dear Poker Copilot Support\n\nPoker Copilot is having problems with the attached hand history file.\n\n";
        final String recipient = "";
        new ApplescriptEmailer().createEmailWithAttachment(recipient, subject, content, filename);
Here’s the result:
Screen shot 2010-08-12 at 1.30.16 PM.png

A very Mac addition to a build script

I create an update of Poker Copilot by running a build script in Terminal. It takes a couple of minutes to complete, so I often start it running then go do something else. If only I could be easily notified when the build script is complete…like if the computer could speak to me and say “build complete”…
On Mac OS X this is easy. From Terminal you can type

say "build complete"

and your obedient Mac will do just that.
So the last line of my build script tells the Mac to speak to me.
Perhaps better would be:

say “Hey Steve. Time to stop slacking off.”

Poker Copilot 2.57 Now Available

Poker Copilot 2.57 is now available to download.

What’s changed:

  • Added FulTiltPokerFR support (France-specific Full Tilt Poker)
  • Winamax tournaments now have the HUD

What’s fixed:

  • Strange player names like “Andy calls” or “He mucks” or “checks raises calls” are now less likely to confuse Poker Copilot
  • Posting of a dead small blind is now handled correctly.
  • The total buy-in of PokerStars Bounty Tournaments is now calculated correctly.


Update Instructions:

  1. Download the latest version here.
  2. Open the downloaded file.
  3. Drag the Poker Copilot icon to the Applications icon. If prompted to replace an existing version, confirm that you do want to replace.

Now you’re done and ready to hit the tables.


Full Tilt Poker for France Players – Please Help!

Here’s the problem: To use FullTiltPokerFR (the France-specific Full Tilt Poker) you need to have an address in France. Which I don’t have. So I’m unable to test whether the FullTiltPokerFR support I’ve added this week works.

Will you, friendly FullTiltPokerFR users, like to help me here? If so, then download this unreleased update of Poker Copilot and try out the FullTiltPokerFR support.

Here’s what I have been able to test: importing hand history files and tournament summaries.

Here’s what I haven’t been able to test: auto-detection of hand history files, and the HUD.

So please tell me, when you select from the Poker Copilot menu “Tools” -> “Detect Casinos…”, does it find your FullTiltPokerFR hand history folder correctly? (It will be listed under Full Tilt Poker).

Does the HUD work, for cash games and/or for tournaments?

Many, many thanks. Merci beaucoup.


On Being Wrong

From Slate’s interview of Peter Norvig, director of research at Google on being wrong:

If you’re a politician, admitting you’re wrong is a weakness, but if you’re an engineer, you essentially want to be wrong half the time. If you do experiments and you’re always right, then you aren’t getting enough information out of those experiments. You want your experiment to be like the flip of a coin: You have no idea if it is going to come up heads or tails. You want to not know what the results are going to be.

And on errors in computer programs:

No matter how good you think you are, the industry standard is that if you write 100 lines of program, there’s probably going to be one error in it.

I found out a few days ago that a heavily-used computer system I helped develop 11 years ago had a bug all that time, but which only revealed itself last year. I suspect the bug lay in code I wrote. For 10 years, the particular feature worked as expected, and was used every day. And yet it was broken all along.

Okay, that’s my example, but I am a mere mortal at programming. What about the immortals? Well there is Joshua Bloch, Java guru, who literally wrote the book on effective Java, and who wrote significant parts of the Java libraries. A couple of years ago he discovered that Java’s binary search method was broken. This method, which he wrote, had a bug which lay undiscovered for 9 years. Bloch’s conclusion:

The general lesson that I take away from this bug is humility: It is hard to write even the smallest piece of code correctly, and our whole world runs on big, complex pieces of code.

Once you accept that your code is almost certainly wrong, you become a better programmer. Instead of feeling insulted when someone finds a bug in your code, you feel grateful that you get the chance to fix the bug and make your code stronger. You try to make it easy for bugs to reveal themselves with as much useful information as possible. You code more carefully, you use static analysis, you believe in code reviews, you appreciate comprehensive testing, and you encourage people to report problems.

FullTiltPokerFR bleg

To my customers in France and Madagascar who play on FullTiltPoker’s France-specific software: could one of you please send a couple of FullTiltPokerFR tournament summary files to me to help with my testing? You’ll find them in your FullTiltPokerFR hand history folder – should be in Documents/HandHistory I think.

Please send them to



Rakeback in Poker Copilot?

Adding rakeback stats to Poker Copilot is next on my list of things to do. The question is: how should this work?

I’m thinking that the detailed bankroll chart should show a rakeback line and optionally include rakeback in the total winnings.

My initial investigation shows that you may have different rakeback percentages at different poker rooms so you’ll need to be able to configure this.

Your suggestions are appreciated.

Customer Suggestion: Better Odds for the Hand Replayer

Loyal Poker Copilot customer Matt took a look at Poker Copilot’s odds calculation in the hand replayer. He has this suggestion:

Is there a way this can be set up to run against ranges based on stats?  We know the villains VPiP and PFR.  In some cases we have sample size issues, but we have the information so we’re not really playing against 4 random hands.  We’re against 4 ranges that can be applied to villains based on known stats.

Nothing is perfect (aside from seeing hole cards lol).  And some villains are more positionally aware, etc.  Every is dealt a random hand.  But once they make a decision pre-flop, it would be great if the replayer odds were calculated on a more accurate limp, and PFR hand range based on the stats we have. Would be like a built in Stove or Poker Cruncher iPhone app odds calculator.

Again, not sure if this is possible.  But the odds calc in the replayer as it is now, while cool, isn’t taking advantage of the stats info we have.  And I still have to run Poker Cruncher calcs with the player to estimate something much closer to my real odds/equity in the hand.  It could also be misused by a player who doesn’t understand “Stoving” ranges based on stat percentages.  Odds in the replayer may be closer than they appear lol.  Say we’re in the hand with all villains VPiP under 15 and PFR under 10.

When they limp they aren’t playing a random hand.  The biggest problem is players who are positionally aware.  But I still feel like we’re getting a lot closer to our real equity in the hand by applying a 15% limp range for that villain vs. a random range.  Likewise when that player raises with a PFR of 5% we’re against a much tighter range.

Your thoughts? Is this feasible? Is this desirable?