Poker Copilot doesn’t recognise the new tables in today’s PokerStars’ update. If you are playing on the 100-250bb, 40-100bb, or 20-55bb tables, Poker Copilot won’t co-operate.
I’m working on a fix and hope to deliver in the coming hours. Stay tuned.
PokerZebra is the working name for a Texas Hold’em Poker Odds Calculator for Mac OS X. You can download PokerZebra 0.4 here. Leopard or Snow Leopard required. I suspect it will only work on Intel macs, but I could be wrong.
You can now evaluate a hand against an opponent who has any two cards, by using the word “random”.
This was the hardest part of this little project. It required me getting familiar with running a cancellable task in the background in Objective-C. I usually program in Java, so my Objective-C skills are basic. Cancellable background tasks that provide ongoing feedback in the GUI is an advanced topic in any computer language I’m familiar with, so it has been a steep learning curve for me. (Note to self: maybe it shouldn’t be an advanced topic? Maybe language designers need to make this easier?)
Once I’ve fixed any issues that arise in this update, I can add specific ranges, such as AA (any two aces), 77+ (any pocket pair 77 or higher), or K3+ (any hand with a king and a 3 or higher).
There’s also an app icon, created by Rob from the Netherlands:
Here’s what you need to know:
This works on Intel Macs running Leopard (Mac OS X 10.5) and Snow Leopard (Mac OS X 10.6). Perhaps I’ll be able to add PPC and Tiger support soon. No promises though.
Specific hands (eg “Ah Kh”) are supported, as is random hands (“random”). Currently other ranges of hands are not supported. This will come soon.
Send feedback and bug reports to pokerzebra@pokercopilot.com
A friend wrote me a desperate email, asking if I can help her work out how to use the special features in her new Samsung mobile phone. You see, I’ve long been the go-to geek for my family and friends. But I couldn’t help this desperate woman. Sadly, I’ve never had much luck mastering mobile phones until I got an iPhone. I think what I love about my iPhone the most is finally I can find and use the nifty features packed into modern phones.
My 10-year-old niece has started posting really silly and entertaining videos on facebook. I figured you needed third-party software to do this stuff, so I asked her how she did it. “Photo Booth”, she replied, which she uses on her nanna’s MacBook . (Actually she said “Photon Booth”, which I think is also a cool name.) Ri-ight. She’s telling me that a stock-standard Mac has all the software she needs to do this. I didn’t know Photo Booth made videos that you could upload to facebook so easily. But a 10 year old figured it out. Figured out the whole thing.
The next time I get a new computer I’m going to find a kid to show me how to use it. I don’t mean, how to do the normal things like editing a file, playing some music, and coding. I mean, the cool gimmicky features that make computers fun. I bet she knows how to use your Samsung mobile phone, too.
Want to develop an iPhone app? Here’s a section of the updated iPhone Developer License Agreement that has gained instant infamy:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
I _want_ to be an Apple fanboy. But Apple makes it hard for me when they pull stunts like this. Apple is dictating what computer languages you can use to develop an iPhone App. You can’t code in your favourite language unless that language is Objective-C, C, C++, or JavaScript. You can’t write in another language, even if you use an automated tool to convert your code into one of Apple’s happy languages. Dear Apple, I – and hundreds of other developers – are not happy.
This is not an official Poker Copilot update. This is a preview release for those who are keen to see the new features: All-in Equity Value Chart, and the first two Leak Detectors.
I’ve spent a good part of today manually going through hands from various poker rooms, calculating what I think the all-in equity value should be, and comparing it to what Poker Copilot calculates. There are a couple of known problems still with unusual situations. Split pots also need to be handled better.
I often need to test a specific aspect of Java’s Swing GUI toolkit to reproduce a problem. In order to help me and others avoid having to rewrite boiler-plate code to make the smallest possible reproduction case, I’m posting the basic code I use here. Consider it an easily-found memo to myself:
import javax.swing.*; import java.awt.*;
public class SwingTestFrame {
public static void main(String[] args) { createAndLaunchGui(); }
private static void createAndLaunchGui() { // UIManager.setLookAndFeel throws "nothing we can do about it" style exceptions. Best thing to do is // to wrap as an unchecked exception try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { throw new RuntimeException(e); }
// using invoke later avoids possible obscure phantom timing issues // as (almost) all GUI code should be run on the Event Dispatch Thread SwingUtilities.invokeLater(new Runnable() { public void run() { final JFrame frame = new JFrame("Java Swing Test Frame");
// when the close window control is clicked, we want the app to exit frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// using a panel as a top level component to hold all other GUI controls is a flexible approach final JPanel panel = new JPanel(); addComponentsToPanel(panel); frame.getContentPane().add(panel);
frame.setPreferredSize(new Dimension(600, 400)); // pack layouts the frame according to the current LayoutManager frame.pack(); // setLocationRelativeTo(null) centres the frame frame.setLocationRelativeTo(null); frame.setVisible(true); } }); }
// modify this to build your GUI private static void addComponentsToPanel(JPanel panel) { panel.add(new JLabel("Hello cruel world")); panel.add(new JButton("Do Stuff")); }
}
Once more without most comments:
import javax.swing.*; import java.awt.*;
public class SwingTestFrame {
public static void main(String[] args) { createAndLaunchGui(); }
Loyal Poker Copilot customer Noah suggested I post the problem on the 2+2 forums. So I did. And I received not one, but two excellent answers. Both answers were from the teams behind other poker tracking software. In both cases their software calculated the same value as my software. Nobody got Hold’em Manager’s result.
This has me concerned. Based on some forum discussions I had read, I assumed Hold’em Manager was the gold standard in All-in EV calculations. Now I suspect this is not the case. I have found a significant rate of what I believe to be errors in Hold’em Manager’s All-in EV calculations. This makes the “All-in Equity Value Chart” useless as a tool.
It also raises a problem for testing Poker Copilot. Without a reliable source to measure all-in equity value calculations against, I can’t be sure that Poker Copilot’s calculations are reliable.
So here’s what I am going to do: Tomorrow I’ll release a Poker Copilot update “for the brave only”. It won’t be an official, full release. It will be only for seeking feedback from the “early adopters” on new features such as the “All-in Equity Value Chart”. Meanwhile I’ll measure my All-in EV test cases more widely against a bunch of other poker tracking tools.
EDIT: In reading this back, I think I seem too hard on Hold’em Manager, which, by all accounts, is an excellent product. All that happened is I uncovered some possible calculation problems in one small section of Hold’em Manager.
Hold’em Manager thinks the All-in EV Diff is -58 cents. Poker Copilot thinks the All-in EV Diff is -65 cents.
Here’s the hand:
Full Tilt Poker Game #17777514296: Table Mach 10 - $0.05/$0.10 - No Limit Hold'em - 5:30:33 ET - 2010/01/21 Seat 1: 17Rob98 ($9.90) Seat 2: Eeevie ($1.44) Seat 3: rafalek007 ($7.84) Seat 4: lataupe28 ($19.36) Seat 5: Nadejde ($20.40) Seat 6: stevoski111 ($2.35) Seat 7: PKRshiva ($3.55) Seat 8: Representive ($8.34) Seat 9: jigglypuff64 ($4.55) 17Rob98 posts the small blind of $0.05 Eeevie posts the big blind of $0.10 The button is in seat #9 *** HOLE CARDS *** Dealt to stevoski111 [Jc Js] rafalek007 raises to $0.35 lataupe28 folds Nadejde calls $0.35 stevoski111 raises to $0.60 PKRshiva folds Representive folds jigglypuff64 folds 17Rob98 folds Eeevie folds rafalek007 calls $0.25 Nadejde calls $0.25 *** FLOP *** [4h Qs 6h] rafalek007 checks Nadejde checks stevoski111 bets $0.65 rafalek007 folds Nadejde raises to $3.90 stevoski111 calls $1.10, and is all in Nadejde shows [Th Td] stevoski111 shows [Jc Js] Uncalled bet of $2.15 returned to Nadejde *** TURN *** [4h Qs 6h] [7d] *** RIVER *** [4h Qs 6h 7d] [Jd] Nadejde shows a pair of Tens stevoski111 shows three of a kind, Jacks stevoski111 wins the pot ($5.09) with three of a kind, Jacks *** SUMMARY *** Total pot $5.45 | Rake $0.36 Board: [4h Qs 6h 7d Jd] Seat 1: 17Rob98 (small blind) folded before the Flop Seat 2: Eeevie (big blind) folded before the Flop Seat 3: rafalek007 folded on the Flop Seat 4: lataupe28 didn't bet (folded) Seat 5: Nadejde showed [Th Td] and lost with a pair of Tens Seat 6: stevoski111 showed [Jc Js] and won ($5.09) with three of a kind, Jacks Seat 7: PKRshiva didn't bet (folded) Seat 8: Representive didn't bet (folded) Seat 9: jigglypuff64 (button) didn't bet (folded)
About six months ago I started work on a series of “leak detectors”. These analyse different aspects of your play, helping to find places where you are leaking money in your poker game. The leak detectors are aimed at beginner to intermediate level players of Full Table No Limit Hold’em. For various reasons I shelved this development in a half-finished state.
In the coming update of Poker Copilot, the first two of these leak detectors will be available and working: Preflop Aggression and Positional Awareness: