Poker Copilot 1.1 – with HUD – Almost Ready

I’ve put a freeze on further development for the next release of Poker Copilot. After a few days of testing it’ll be ready for release.

The biggest new feature in Poker Copilot 1.1 is the heads-up display (HUD). If you have been using Windows products with a HUD, such as Poker Tracker, then you’ll be surprised by how different – and very Mac-like – the Poker Copilot HUD is.

The Poker Copilot HUD is a small window that accompanies your Full Tilt Poker table. It uses bar charts to help you instantly compare players on the table. You can instantly answer these questions: Is my opponent a calling station? Ultra-tight? Super-aggressive on the raises? Am I the tightest or loosest player on the table?

The HUD works in tournaments, cash games, and even with play money.

While I’ve been trialing the HUD, I’ve noticed a marked improvement in my winnings. If only because I can now judge better whether to fold or raise the dreaded A-K hand!

First Tech Support Call

After 600 downloads of Poker Copilot, I received my first support request. Although I’ve made Poker Copilot as bullet-proof as I can, there’s going to be some cases where things just don’t work, and this was one of them. As I started asking the user some questions in an e-mail to-and-fro, I realised:

  1. this is a painful way to solve a problem, for me and especially for the user
  2. this is going to happen often as more people download and install Poker Copilot

So I took a break from the computer, put on my thinking hat to make this process easier, then promptly forgot all about it. Some time later, while having a shower, my subconscious self came up with a solution to reduce the pain: a console.

Now I’ve added a simple console to which a continual flow of helpful information is dumped. For example, the files being parsed, the number of games found in each file, any parsing problems encountered, unsupported game types found, and so on. This console is normally hidden from view. To show it I’ve added a new menu item: Window -> Console. When the user has a problem, I can now ask them to copy the contents of the console into an e-mail and send it to me.

Question for a Unix Command Line Tool Expert

Unix command line tools have never been a strong area for me. Who can suggest a solution to the following problem?

I have many text files in a folder. I would like to list a count of how many lines a certain regular expression matches within each file. The output would be something like this:

file1.txt: 23
file2.txt 0
file3.txt 37

I’m sure there must be a way using grep, sort, wc, and so on, without resorting to a for loop in a script file. However I haven’t found it yet.

Big Download Boost

Until today, I was aiming for 20 downloads of Poker Copilot for July. Poker Copilot was released on June 30th, so it seemed a modest goal. And until today I’ve been achieving a modest download count. Until today.

Yesterday I submitted Poker Copilot to Apple’s Mac Downloads site. Within 12 hours of my submisison being approved, I had about 100 extra downloads sent my way from Apple. 100. extra. downloads. I’m blown away by this.

Using Java for a Mac OS X Desktop App

I developed Poker Copilot in Java on Mac OS X Leopard. This was the first time I created a Java-based Mac OS X app. In all, it was a positive experience, and preferable to doing the same with Windows.

Not all was good though. Currently Mac OS X Java apps must use Java 5. Although Java 6 has been released for Mac OS X it is not the current default JVM. It’s frustrating having to write code or import code that is included with Java 6. Table sorting is a good example. In Java 6 adding sorting to a table is as easy as this:

table.setAutoCreateRowSorter(true);

In Java 5 – and therefore for Macs – you need to do a bit of hackery.

Now the praise starts. On Mac OS X you always know that your user has the correct JRE. Under Windows you never know what JRE version (if any) a user has. From time to time releases of Java have regression bugs that cause support nightmares, and it may be that your user has such a JRE version. For example, a beta release of Java 6 didn’t show toolbar icons under Windows. I wonder how many support engineers from various companies tore their hair out trying to solve that one. Eventually most Java-based Windows products start shipping with a private JRE to avoid these problems.

On Mac OS X this is unnecessary. Java is distributed with every Mac and updated as part of Apple Update. I can be certain that my users have the correct version of Java on their machine.

Integration between Java apps and Mac OS X is superb. Apple has put plenty of effort into ensuring that a Java app can access much of OS X’s underlying system functionality, and can emulate the other parts. For example, want to make you window a floating palette? Simply set the appropriate client property and it is done. Even better the integration is documented and supported by Apple.

Distributing Java apps on Mac OS X is a joy compared to the awkward process on Windows. You don’t need any additional software to make your Java app install and run like any other Mac app. The instructions and tools to do this are included with the Xcode development tools found on the Leopard installation DVD.

My final praise is for Apple’s Java-dev mailing list. Apple staff and volunteers seem to quickly and willingly answer most questions. When I posed a question to this mailing list last Sunday, an Apple Java engineer gave me far more help than I expected to find the optimal solution for what I was trying to do. Within two hours we had nailed it and he wrote some sample code for me. On a Sunday!

Mockup for Analysing Full Tilt Poker Tournaments

Currently Poker Copilot silently ignores tournament hand history files. The reason: until recently I haven’t been playing tournaments on Full Tilt Poker. More than anything, Poker Copilot is a tool designed to help me in my poker playing. Now I’ve switched to tournaments, it is time to add tournament analysis.

Yesterday I praised Balsamiq Mockups. I’ve been using it today to help me draft ideas for Poker Copilot’s upcoming “Tournament” section. Take a look:

The idea is to quickly get an understanding of the playing styles of the people I find myself sharing a tournament table with.

I’ve also been considering other ways of showing the data. For example, as bar charts instead of numbers:
There’s no doubt in mind that this looks nice. But does it help more than raw numbers? Should the chart be divided into three charts, one for each series? I’m not too sure.

Here’s the same data with numbers:

Great Example of Data Visualisation

NFL Player IQ by Position Played

I’m not a North American. I understand close to nothing about that funny type of football they play there. Yet I understood the graphic shown at the linked page with almost no conscious thinking.

Now to invent such clever visualisations for Poker Copilot. Suggestions appreciated.

Impressive Tool for Creating User Interface Mockups

I stumbled upon Balsamiq Mockups on the web a few days ago. It seems a clever tool that makes a common task for me easier, so I made a mental note to give it a try when the right time came. Yesterday that time came. At work, I need to create a couple of mockups to help ascertain exactly what my users required. So I fired up Balsamiq Mockups and gave it a go. I was extremely impressed. Without having to read any instructions or go through a tutorial I was able to quickly do what I wanted.

It’s not a perfect product, which is to be expected of a recently released version 1. It is slow and has some bothersome – but not critical – bugs. On the positive side, the appearance of the finished mockups makes them look like they were sketched on note paper which prevents users from thinking that they are only one step away from a finished product. It also had plenty of nice touches – try it and you’ll see what I mean.

Highly recommended. Doubly so because Balsamiq is, like Poker Copilot, a one-man show.

Adding PokerStars Support

Poker Copilot currently works with Full Tilt Poker, one of the most popular online poker sites. Today I began work on adding support for PokerStars, which is apparently the number one site. Here in Germany, PokerStars uses Boris Becker in their advertising, which may add to their allure.

Fortunately I designed the hand history parser in a flexible way. It stands almost completely alone from the GUI. This allows me to easily plug in support for more online poker sites. Again fortunately, the PokerStars hand history files are similar to the Full Tilt Poker hand history files. So this task shouldn’t take too long.

To do the PokerStars support correctly, I need to generate lots of hand history files to test against. There are some unusual situations in Poker that occur seldomly, and I need examples of these situations in my PokerStars test data. Two such unusual situations are split pots, and disconnection and/or reconnection during a hand.

The best way I have of generating lots of hand history files is to play lots of hands of poker on PokerStars. So if you are a PokerStars player, look out for me on the micro stakes tables playing as “stevoski111”.