Why Windows is Better than Mac OS X for HUDs

Since switching from Windows to Mac OS X, I’ve become a rabid member of the “Mac OS X is soooo much better at everything” camp. Zealous, raving, irrational, and happy. So it causes me great pain to acknowledge that developing a poker Head Up Display (HUD) is easier under Windows.

Here’s why: On Windows, it’s straightforward to write software that hooks into another application’s window. I can write software to draw whatever I want within the application window. It’s startingly easy to do.

On Mac OS X, there is no documented way to do this. Any attempt leads to great pain. Poker Copilot deals with this by keeping track of the currently-focused poker window’s position and size and attempting to align a HUD window with the poker window. The HUD window belongs to Poker Copilot and is not really connected to the poker room. It only seems to be. This is the reason why Poker Copilot only shows the HUD for one poker table at a time. This is a fragile approach.

As a general principle, it’s good that Mac OS X makes it difficult to hook into another application. It prevents possible security and stability problems. (I did warn you that I’ve become a rabid Mac fanboy!) It’s not good when trying to make a good HUD though.

Enter Mac OS X 10.5 aka Leopard. It provides a new Apple library for developers that lingers somewhere between documented and undocumented. Let’s call it sub-documented. The documentation largely consists of a demo app. This new library allows Poker Copilot to closely monitor any changes to all poker tables, and finally allows a HUD as good as the ones used by our endarkened Windows brethren. Including a HUD on multiple tables at once.

And so I get to my point. Due to these HUD issues, there is a good chance that Poker Copilot 2 will only work with Leopard (Mac OS X 10.5) upwards. That _was_ my plan. But the #1 feedback I’ve received from the first Poker Copilot 2 early access program is, “Hey, it doesn’t work with Tiger? What’s gives?” Oh boy… I’m going to have to give this some thought…