Preview of Poker Copilot Update

You can download Poker Copilot 2.18 here: http://pokercopilot.com/downloads/pokercopilot2.18.dmg.

Quite a lot has changed internally, so there may be some problems I haven’t discovered yet. So I’d like to ask my loyal customers to try this out before I make this release official.

What’s changed:

  • Tracking of hand history files for the current tables is cleaner and quicker. Less CPU usage spikes.
  • Community cards for the previous hand are shown for a few seconds with the mucked cards.
  • Table stats are shown: vpip, pre-flop raise, and aggression.
  • The order in the position summary has changed.

What’s fixed:

  • No more “Out of memory exceptions” when dealing with extremely large hand history files
  • Poker Copilot now co-operates with custom PokerStars themes.
  • The take for uncalled blind steals in Ongame clients is now correctly calculated.

Update Instructions:

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

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

Poker Copilot Sales Breakdown

My sales breakdown for October:

By CPU:

By Operating System:

How do I know this? I don’t really. The data I have is data sent by your browser from the computer you used to purchase Poker Copilot. It’s as close as I’ll get to the real data.

Is it worth still supporting PPC users and Tiger users? At 7% and 8% respectively, I think it is.

Japanese Launch of Windows 7

http://www.youtube.com/watch?v=sYZH-6lyJhU

It almost made me want to ditch my Mac and go back to Windows.

Highlights: the corporate guy whose multi-touch demo just doesn’t work. And the triceratops-like creature that snorts steam.

What I Really Hate…

…when playing Poker, is this: I’m the big blind, I get dealt pocket aces, and everyone folds to me.

UltimateBet Support Coming to Poker Copilot

First, I feel I should make sure you are aware of the UltimateBet scandal. I’m surprised UltimateBet managed to survive the scandal, trust being paramount when playing online poker.

I recently investigated adding UltimateBet support to Poker Copilot. The good news is it seems feasible. The UltimateBet client is HUD-able. The hand histories are stored locally. I can’t determine from hand histories whether a table is full-sized or 6-max, though.

Rococoa – Bringing Cocoa to Java

In my opinion, Objective-C’s big strength is the awesome Cocoa libraries. So as a Java programmer I was pleasantly surprised to discover the Rococoa project. Rococoa allows any Java program on Mac OS X to (sort of) easily access any Cocoa library.

If you want to use Rococoa I recommend learning how to code in Objective-C first. That will make it easier to understand what’s going on and why you need to do things like creating an auto-release memory pool.

The hardest part of Rococoa’s learning curve was getting a small but useful program working. Once I achieved that the other parts fell into place. So to help others, here is a working example, in two classes. The first class, NSWorkspace is an access point to Cocoa’s NSWorkspace class. The second class uses NSWorkspace to dump to the console a list of all applications currently running on your Mac.

You’ll need to add the Rococoa libraries to your classpath.

package com.barbarysoftware.pokercopilot.jna;

import org.rococoa.NSClass;
import org.rococoa.NSObject;
import org.rococoa.Rococoa;
import org.rococoa.cocoa.foundation.NSArray;

public interface NSWorkspace extends NSObject {

public static final _Class CLASS = Rococoa.createClass("NSWorkspace", _Class.class);

public interface _Class extends NSClass {
// class (aka static) methods go here
NSWorkspace sharedWorkspace();
}

// instance methods go here
NSArray launchedApplications();
}

---

package com.barbarysoftware.pokercopilot.jna;

import org.rococoa.Foundation;
import org.rococoa.NSObject;
import org.rococoa.cocoa.foundation.NSArray;
import org.rococoa.cocoa.foundation.NSAutoreleasePool;

public class HelloRococoaWorld {

public static void main(String[] args) {
final NSAutoreleasePool pool = NSAutoreleasePool.new_();
try {
showRunningApplications();
} finally {
pool.drain();
}
}

private static void showRunningApplications() {
final NSWorkspace nsWorkspace = NSWorkspace.CLASS.sharedWorkspace();
final NSArray nsArray = nsWorkspace.launchedApplications();
final int size = nsArray.count();
for (int i = 0; i < size; i++) {
final NSObject nsObject = nsArray.objectAtIndex(i);
// dump object to console the Java way
System.out.println("nsObject = " + nsObject);
// dump object to console the Cocoa way
Foundation.nsLog("%@", nsObject.id());
}
}
}

Oh to Have His Problems

In Joel Spolsky’s latest column in Inc. magazine he laments the dangers of his company’s ‘slow’ growth. How slow?

We’ve gone from two to 25 employees in about a decade by growing, on average, 54 percent a year.

According to Joel’s other writings, he achieved and maintained this growth without a cent of debt or outside funding. I’d call that high growth. Impressive even. Maybe I’d go as far as stellar.

Community Cards

Poker Copilot 2.18 will complete the on-table Mucked Hands display by also showing the community cards from the the previous hand:

community cards.png

The mucked hands and community cards display for five seconds.

This feature can be turned off in the HUD preferences.

Table Stats

Table stats are coming in Poker Copilot 2.18:

table stats.png

I asked for suggestions about this feature 3 weeks ago. There were 3 main types of feedback: “Awesome!”, “Just something else cluttering the screen”, and “Make this be based on the historical averages of the players at the table.

I hope I’ve managed to find a way to make this discreet enough for the anti-clutter camp, while making it easy to access for others.

Customers Over Competitors Recanted?

I wrote yesterday’s post late at night while tired. On re-reading it today, I realised that it seems arrogant and doesn’t say what I wanted to say. So here’s my second attempt to get my message across.


An anonymous poster asked a good question yesterday on the Poker Copilot discussion forum. To paraphrase,

“Why doesn’t Poker Copilot have feature X that some Windows products have?”

The reason is this: Poker Copilot is a one-person operation. I have a finite amount of time and need to prioritise. He specifically asked about more filters, which is something that’s been on my list of things to do for some time.

This got me thinking about the wider question of competitors in software development. I believe in general that a software development team should not obsess over their competitors. It’s natural to want to keep tabs on the competition, but one should not add features simply because the competitors have it. One should add features because customers want it. And because it helps customers achieve their goals.

My mantra could be: Don’t obsess over competitors. Obsess over customers.

I call it a mantra because I have to repeat it to myself over and over to follow it. It’s natural to obsess over competitors and I have to fight the temptation to do it. And I do sometimes (but seldomly) in my moments of weakness browse through the screenshots of Poker Tracker or Hold’em Manager.

It’s hard to determine if a particular feature your competitor has is one that adds value to customers. If I follow my competitors closely, I’ll become preoccupied with the wrong things. I’ll start obsessing over the features they have. I believe I should be obsessing over the features my customers ask for instead of the features my competitors have.

Some features competitors have are highly valuable. Some are not. It is hard for me to tell the difference.

I’m finding that people tell me what important features Poker Copilot is missing. I try to focus on the most highly requested ones. Sometimes I’ll suddenly get an avalanche of requests for a specific feature. I interpret that as a sign that a) a Windows poker analysis product has added that feature; and b) people like it. And therefore it becomes high priority.