I’m a big fan of Zach Gage’s games. He recently released a game called “Sage Solitaire” in which solitaire is played with poker hands. You can make a Full House, Straight, Straight Flush, etc, to clear cards from the board. To choose what hands to make, it’s pretty important to know what cards remain in the deck, much as it can be in poker.

I wrote Cardsharp to help me keep track of remaining cards in a Sage Solitaire deck. It’s helped improve my score quite a bit, and gave me some recent Python experience before I started looking again for backend engineering jobs.

Cardsharp is build on npyscreen, an ncurses library for creating interactive Python terminal applications. It’s got some great basic layouts like “Simple Grid” and a easy-to-understand interaction model, with Action and Data Controllers that interact with shell input.