LCA04 Tux logo
LCA04 Main Logo
Call for Papers
Media Centre
Partner Programme
Works in Progress
Event Record
Dymocks Books
Inetd LiveCD
Speaker Coaching
About SA
Linux Australia







Sun Microsystems


The University of Adelaide


NetCraft Australia










Australian Developer Magazine

Other LCAs

2005 Canberra
2003 Perth
2002 Brisbane
2001 Sydney
1999 Melbourne


LCA 2004 started at Wed Jan 14 08:00:00 2004.

The IBM HackFest

Update - 14/Jan/2003

The HackFest server is online now --

What is a HackFest?

The Jargon file lists a few definitions of what a hacker is, but the most appropriate ones in this case are:

  • A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. RFC1392, the Internet Users' Glossary, usefully amplifies this as: A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular.

  • One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming.

  • A person who is good at programming quickly.

The HackFest is a competition where hackers get to demonstrate their programming abilities.

What is the goal of the HackFest?

The aim of the HackFest is to write a program that runs on Linux which can play the cookies version of Tetrinet. Tetrinet is a multi player network version of the famous tetris game. The cookies version of the game introduces the concept of special blocks which allows you to do extra things such as clear lines off the bottom of your field, or switch your playing fields with another player.

If you're not yet familiar with the game, its probably best to download gtetrinet which is a linux client, and have a few games (or a lot of games :-) on a Tetrinet server.

How will this work?

Prior to the start of the conference we will be releasing a client library which allows your program to communicate with the Tetrinet server. It provides a simple API that allows you to see what your playing field currently looks like, move or rotate the current piece, or use a special block.

During the conference (and probably before too) we will have a Tetrinet server that you can use to test your bot against other people's bots (or people). You will have to submit the source code for your program and an explanation of how the algorithms you used work. On Friday and Saturday we will run the programs against each other. The winner will be decided based on how well the program plays tetrinet as well as on the ingenuity of the algorithms used.


The prize is an awesome IBM pSeries deskside server model p615 with Dual 1.45GHz Power4+ CPUs, 4GBRAM, 2x146.8GB Ultra 3 SCSI 10,000 RPM Hard Disks, DVD ROM drive, 21" Colour CRT Monitor, and SuSE Linux Enterprise server 8.2.

The retail value of the prize is over AU$39,000.


  1. Your program must be able to play a game of Tetrinet, using the client library interface which is made available to you when you register for the Hackfest.

  2. Your program must be released under an Open Source Licence.

  3. We will be compiling your program from source. If we can't work out how to compile it you'll be disqualified, so make it easy (see the next rule)! Also since we'll be reading the program source code, it will be to your advantage to format it well to make it easy to read.

  4. A Makefile must be supplied with the package and by default must generate a program called "tetrinet_ai" in the current directory. The program should by default generate no output to standard output or standard error. Writing a small amount of information to a log file in the current directory is acceptable.

  5. The tetrinet_ai program should at least take the argument "-h <hostname>" to specify which tetribot server to connect to.

  6. Your program is not allowed to cheat (including, but not limited to, using methods apart from the supplied interface to communicate with the Tetrinet server or clients). If the judges see that your program that is cheating you'll be disqualified.

  7. Tetrinet Server configuration. We will be using tetrinetx, a Tetrinet server which runs on Linux. The relevant option settings will be:

    • level_increase=1
    • lines_per_special=1
    • special_added=1
    • special_capacity=18
    • classic_rules=1
    • sd_timeout=180
    • sd_secs_between_lines=2

  8. Individual or team entries are permitted. There is no limit to the size of a team.

  9. Only one program per HackFest registration may be submitted, but an individual or team may register multiple times if they want to submit more than one program.

  10. If a team entry wins the HackFest, splitting the loot is up to the members of that team.

  11. All entrants must be registered paid-up attendees of Linux.Conf.Au 2004 and must be present at the conference. Mini-conf only attendees may not enter.

  12. Linux.Conf.Au 2004 speakers, organisers, and helpers may enter the HackFest, subject to the next rule.

  13. HackFest judges and their immediate family may not enter.

  14. Your program source code and explanation has to be submitted by 12pm ACDT (GMT+10:30, Local Time in Adelaide), Friday January 16th 2004 (that's midday on the second-last day of the conference).

  15. The winner will be decided by the judges based on how well the program plays Tetrinet and based on the ingenuity of the algorithms used by the author(s). The method of evaluation and weighting of these factors will be chosen at the judges' discretion.

  16. We reserve the right to change the rules, especially if it would make the competition more interesting/competitive.


What programming languages am I allowed to use?
The client library will provide a C interface, but you're allowed to use anything you want to. If you use something other than C it's up to you to work out how to talk to our client library, but remember, since we have to build your program you don't want to make it too hard for us.

You say you might change the rules. What do you mean by this?
An example of this might be to add a new special block a few days before the end of the competition. This would be a good test of how flexible your AI code is and how good you are at doing some last minute hacking. If the games go on too long, we might tweak the sudden death settings.

What sort of resources can I expect when my program is running - eg how much memory, number of CPUs, etc.?
This will depend a bit on what sort of computers we end up with. I'd recommend you make your program tunable. For much of the testing during the week people will be using whatever they can get their hands on - most likely laptops. When running multiple AIs on the same machine they will be limited for fairness.

Do I need to know how to do any GUI programming?
No. The program should by default generate no output nor generate a user interface (textual or graphical) of any kind. It is of course acceptable to have debugging modes for your program and during development you may well want to have a UI to observe what your AI is doing.

How will we monitor the games during the competition?
We will use the gtetrinet client in spectator mode to observe the games.

I've got more questions about the HackFest; who should I ask?
You can email the HackFest judges at


Fill out our registration form to register for the HackFest. When you register you'll get access to the client library.

Software Client Library

The client library (at least, an alpha/beta version) has now (28/Nov/2003) been released. To get access to it, register for the HackFest.

Linux® is a registered trademark of Linus Torvalds.
The original Tux penguin is Copyright © by Larry Ewing.
All material on this page is Copyright © "Linux Australia" unless otherwise noted.