RockScroll is a handy Visual Studio add-in which replaces the text editor scrollbar with a graphic overview of the code, making it easier to navigate around large source files. We've been using it around the office for some time, but it has a few issues which start to get annoying after a while. Unfortunately the project seemed dead, so there was little hope that those annoyances will be fixed. Therefore, we set out to write a clone, thinking it can't be that hard. About a week later and after countless hours of disassembling rockscroll.dll and digging through the less-than-stellar Visual Studio Extensibility SDK and its accompanying documentation, MetalScroll was born. It's open source this time, so that the next guy won't have to start from scratch.

Compiler Shootout

This is a collection of random micro-benchmarks comparing the optimization capabilities of a few popular C++ compilers. It's not a rigorous or comprehensive test, just a few bits of code lifted from various projects or written to look like stuff which occurs frequently in day to day work. The latest run, featuring GCC, Visual C++ and Intel's C++ Compiler is here. A brief description of the tests can be found on this page, and there's even an older version which has data about Digital Mars, Borland C++ and OpenWatcom.

Epic Pong

This project started as a distraction from the day-to-day, serious development we do. The goal was to make something small, fun to write and fun to use. We picked Pong, the video game which started it all, and added a twist to make it more interesting: the players can rotate the pad. This means more control over the ball trajectory and speed (you can shoot the ball faster by hitting it with a quick rotation of the pad) and adds the "bounce" mechanic, where a player can make the ball ricochet several times between one of the playfield margins and his pad. To give these abilities more in-game meaning, we've added bonuses for scoring with a high-speed shot which doesn't hit the margins (called a "laser shot"), for doing bounces and for scoring after doing bounces.

Playing the game in the office resulted in screams and mice being slammed against tables, which was generally interpreted as "having fun", despite the symptoms being uncannily similar to a rather different condition, called "frustration". Therefore, we dubbed it Epic Pong and gave it its own spot on the website, in case anybody else shares our idea of fun. It can be played by two people on the same computer if two mice are connected, or over a network. It also has a solo mode, but the computer player is boring, as it doesn't rotate the pad (still, you can use this mode to sharpen your bounce and laser shot skills). You can play over the Internet, but you'll need a very low-latency connection because the ball moves so fast that even the smallest delays will leave you with too little time to react.

Click here to download the game (256 KB zip archive, requires Windows XP or Vista).

To rotate the pad, click and hold the left mouse button and move the mouse horizontally. The right mouse button locks the pad in its current position but still allows you to rotate, to help with precise shots. Most of the options in the menu should be self-explainatory. The "ballistics" setting controls if an acceleration is applied to the mouse movement, resulting in a non-linear relation between the distance covered by your hand and the distance covered by the pad on the screen; some people find they get more precision with this enabled, others don't, so experiment with it (hint: the mouse cursor in Windows has ballistics). The two speed controls influence the mouse sensitivity.

The game has some rough edges, but not too many. We've stopped working on it when it was good enough to be enjoyable. We're not actively developing it or fixing bugs anymore. Please understand that it comes with NO WARRANTY. If it doesn't work on your computer we're sorry, but we can't provide any kind of support for it.

We're also making the source code available, should somebody be interested in such a thing. It's not serious, high-performance game code, because this is not a serious, high-performance game. Remember, the emphasis was on "fun to write", so it's not extensible or terribly elegant. It doesn't have a single class. The network code in particular could be a lot better, but that would require more effort than we're willing to put into it. It is, however, pretty clean and easy to follow. It's roughly 4,800 lines long and it took about two weeks to write.