Return to Travis Wilson's resume


Available at

The technology

  • Browser app: Javascript, jQuery, Backbone.js
  • Browser game rendering: Processing.js
  • Webserver: Django (Python)
  • Game servers: written in Java, served by Tomcat in secured JVM
  • Agent execution engine: Java
  • The story

    Mostly I'm proud that I published this at all. It's too young to be any good or to indicate whether anyone is interested, but building it gave me interesting problems to solve. An interesting problem is great – as long as the user gets enough out of the solution to warrant its extra complexity. It also invokes the old maxim in software development: don't do anything stupid, and don't do anything clever.

    The site offers two games; the user can write agent software that plays the games. I wanted people to be able to write game-playing strategies without any of the overhead that comes with writing software. You can read more in the mission statement. I hope you appreciate my product intent there.

    I'm really happy with the attention I paid to the game APIs. My top priority was the readability of my customer's code. I wanted the customer to write against an API that was powerful but didn't complicate the agent code. The result was an API style that blended coroutines with event-driven programming: interruptible coroutines.

    The game engine is designed for parallel execution of multiple untrusted agents in real time, and I feel like I invented (or reinvented) a lot of tricks. I didn't invent coroutines, of course, but since Java didn't have them I had to implement them.

    The product of all this was a fair amount of multithreaded programming, which may even contain one or two clever things. Concurrency and cleverness both make the product harder to understand and maintain. But the benefit is that Microbattle's customers can write cleaner, simpler software. And finding ways for that to happen certainly qualifies as an interesting problem.