You are currently browsing the archive for the Projects category.

This is the story of an AK-47 and a dead man named Isaiah.  Because of Isaiah, I forged this AK-47 into a serving ladle.


Read the rest of this entry »

One way we can measure a company’s “evilness” is by how important litigation is to corporate strategy.  We’ll open this series by comparing today’s three tech giants: Microsoft, Google, and Apple.  Which company gets sued the most?  And more importantly, which company sues others the most?

To find out, I wrote a perl script called the litig-o-meter that searches google scholar for lawsuits involving specific companies.  It graphs how many cases the companies have been involved in every year; whether those cases were at the circuit, appellate, or supreme court level; and whether the company was the plaintiff or the defendant.  Essentially, it does a search for “allintitle: [company name]” of federal court cases and interprets the results.  It’s not yet ready for public release, but the results so far are fascinating.

Read the rest of this entry »

Robot playing cardsIn 2005-2006 I developed PokerPirate, a pokerbot. Pokerbots are software that play online poker without human interaction. PokerPirate successfully beat single table, no limit, Texas Hold’em tournaments. These are better known as sit-and-go’s. PokerPirate played the $5 tournaments on Royal Vegas Poker. After recouping my losses from the development process, I decided to turn the bot off. I am now releasing the source code and using it as a case study in artificial intelligence and software engineering.

Poker presents a particular challenge to the AI developer. Much like the real world, poker hands can have millions of variations, there is a lot of unknown information, and a lot of human interaction. AI techniques capable of winning at poker would be a significant advance because they could be applied to many problems that are currently unsolved.

A successful pokerbot, however, is intrinsically interesting apart from any potential advancement in AI. For example, it could provide the owner with an effort-free source of income. The AI in PokerPirate does not use any advanced techniques. Instead, I have carefully selected a game that simple techniques would be effective at beating. Most pokerbots specialize in limit table games, but PokerPirate specializes in no-limit sit-and-go tournaments. I don’t think there are many bots competing in these games yet. Read the rest of this entry »

Download the source code here. It is released under the BSD license. If you find it useful or do anything cool with it, I’d appreciate a heads up.

Other stuff you’ll need:

  • Microsoft Visual C++ Express Edition, available here
  • Royal Vegas Poker software and account, available here (You must have an account to log on to the software and observe a game. You do not need to have money in the account, unless you want to actually have PokerPirate play.)
  • (optional) VMWare player, available here
  • You will need a copy of Windows to run inside VMWare.

Read the rest of this entry »

My AI uses what I like to call the “manual” technique, also known as rule-based artificial intelligence. Basically, a human writes a list of rules that determine how the AI should act in any given circumstance. The advantage of this technique is it is relatively easy to implement from a programming perspective. From an AI perspective, however, it can be very difficult to determine what those rules should be. That is why most pokerbots suck.  These rules are much easier to generate, however, for sit-and-go tournaments. Read the rest of this entry »

PokerPirate has two main components: an interface with the Royal Vegas Poker software and the AI. This section describes how these components relate. Read the rest of this entry »

Before talking about how the AI actually works, I think it would be useful to talk about the program’s architecture. This section is mostly relevant from a software engineering perspective and can easily be skipped. Read the rest of this entry »

The key to winning at poker is finding a game you can exploit. As Matt Damon tells us in Rounders:

Listen, here’s the thing. If you can’t spot the sucker in the first half hour at the table, then you ARE the sucker.

To make money at poker, you must find and take advantage of your opponents’ weaknesses and minimize your own. This is true if you’re playing as a person, or a bot is playing for you. In this section, I will describe how sit-and-go style games are particularly easy to exploit as a pokerbot. Read the rest of this entry »