So it's been a few months since I posted . I've have a very successful summer and I'll be joining Microsoft next year after I graduate. What's new? Well first things first my senior design project has changed from language design to a programming contest website... Pretty drastic, I know. I've been active with my school's ACM programming contest team for the last 3 years and we thought it would be cool to host an "Online Judge" at our school. So what exactly is an "Online Judge"? Sites like Topcoder, SPOJ, and ACM TJU that have automated judging software; users sign up and submit problems, compete in online contests, share knowledge of algorithms, design etc...
We aim to have a mixture of features from the sites mentioned above, but also have a stronger community. The site is currently live at http://fudge.fit.edu, but is password protected for now, we plan to have open beta testing in a few months.
We currently accept submission in the following languages:
- GNU C\C++
- Java 1.5
With plans to add Haskell, Ruby, Perl and PHP in the near future.
We have, 3 computers that support the fudge framework and website, MILK, SUGAR and BUTTER, the compilation machine, web server and database respectively. The database is SQL Server 2005 running on Windows 2003 server. Fudge is developed in Visual Studio 2008 Beta 2 using ASP.NET and C# 3.0. For source control we are using TFS 2008 Beta 2.
The Fudge website uses the Fudge Framework. The framework acts as a service provider to pluggable modules. It handles uploading source code, remote compilation, and remote execution. The judging module, for instance, provides a bridge between the website and the framework. Source code are update the to the database, and a judge request is sent to the module. The module then uses the framework capabilities to compile the code, and runs test cases. The results are the saved to the database. In the near future, the framework will also provide a database interface, allowing modules not to establish specific connections and execute queries.
So where does the Silverlight come in? Topcoder has a java applet, which can be used to do practice problems and is used in actual contests. The applet allows users to code directly in the online arena, submit problems, run sample test cases, and chat.
In the last 2 weeks I've been working in Silverlight 1.1 alpha to try to make an online IDE for the fudge website. With the current bits in the alpha, this is a pretty tough to task to achieve, i.e lack of textbox control, and many other useful controls.
The first version of the IDE control was an attempt to get it working initially, so the code was pretty disorganized:
you can view a demo here.
The second attempt was to create a base textbox control and derive other controls from it so I could find bugs when trying to use the textbox in other scenarios. Here is a demo of a command prompt control that derives from the TextBox control.
The control is still being refractored and optimized but you can take a look at its current state here.
Features missing are:
- Page up
- Page down
- Copy and Paste in firefox