M0: debug messages as html Create a script that prints the python stderr of thea main script as html, so debugging the cgi becomes more easy. M1: user interaction thorugh images Completed, when a user can click on an image, and the image gets replaced as a result. m2: autogenerate images There are partly transparent images of black and white stones, center, border and hoshi squares, all available in png format. The Milestone is considered complete when the program can automatically generate combined images of all squares with all stones. The stones have to be on top ;> m3: display working 9x9 goban Completed, when the cgi script has an internal representation of a goban that can handle stones, and this goban is displayed on a html page. m4: handle player turns The program knows wether it is the turn of black or white, and prints the current turn color on the html page displaying the goban. If player white clicks on an empty square, a white stone will be layed onto that square. Same for Player black. m5: goban inside database Manage the goban inside a postgresql database, so all user input changes a table in the database. Includes a 'size' item that contains the length of on side of the board, so that gobans of size 9x9, 13x13 and 19x19 can be displayed. m6: manage users and game sessions inside database manage user accounts and the game(s) they currently play inside the data- base. each game has its own table, which contains players, current turn, size, the goban inside the database. users are managed in a different table. For each user the following data is stored: password, current games (up to 8 or so). So if the user calls the cgi script, she has to send username and password and is then given the choice of game to play. If there is only one active game, directly present the goban. . <--- YOU ARE HERE. m7: implement Go rules Do not accept player moves which violate go rules. Remove beaten stones. Count and display the score for each player. m8: make it pretty, make it fast. Create nicer images replacing the old ones which were just for testing Find bottlenecks and optimize them for speed. -- python profiler -- http://peter.mapledesign.co.uk/weblog/archives/python_is_slow.html create a set of images smaller than 50 pixels (for the 19x19 goban) m9: make it standards compliant w3c validation