This is not-a-success story about one of my projects, YaCE (Yet another Contester Engine). It’s a system, written in Ruby and Bash which can check ACM problems solution validity. It can be scaled on a number of nodes, accessible via network (VMs or real machines).
The main reason to create it was to rewrite existing system which we used to train for ACM contests. “ACM Contester” was not scalable enough and it didn’t have precise enough measurements of used memory and cpu time, which is crucial for testing our solutions.
I wanted to make it scalable and predictable. I wanted to write it in Ruby on Linux and for Linux.
YaCE has been started 2 years ago and last commit was made 11 months ago.
YaCE uses primitive yet effective message queuing system over file system. It is also web-oriented.
Here it is some basic workflow:
Connection between scheduler and all tasks queue is implemented using tcp connection, that’s why it can be placed on some other machine. Also, worker connects to node using SSHv2, that’s why cluster nodes can be anything with ssh access (e.g. virtual machine, physical server etc)
This project has a great start but now is not required. I look sometimes at a GitHub page and fix some issues. I hope it would be useful someday.Written on August 26th, 2013 by Taras Kushnir