Multi-line List Control

When displaying tabular data in an application, the standard windows list control in report mode (what you see in explorer when you switch to the "details" view) usually works well. One limitation which has irritated me off and on over the years is the inability of the standard list control to handle multi-line data. What I wanted was something which would word wrap, respect embedded line breaks, and use dynamic row heights. The idea is that you just set the column widths, put whatever text you want in the control and it "just works" and provides multi-line text in the cells.

I finally decided to give custom control creation a try and created a control to do this. It was a bit more of a headache than I originally anticipated, but its at least functional now, so I posted it as an article over on The Code Project site.

You can read the article, which includes source code with a demo project here.

A screenshot of the control in action is shown below.


FalconLobby v1.1 released!

Just released a new version, which addresses a couple issues which have been reported. You can download the latest version from www.falconlobby.com. Note that it should eventually be up on the LP downloads page, but until then, just grab the latest from the FalconLobby home page.

List of Changes

  • fixed handle/memory leak which could cause active servers to eventually drop from the list, despite still being active. this could also cause the client to stop being able to download the active server list. the fix was to replace the internal HTML viewer used for the "View Active Servers" tray icon menu with a call to view the URL using the user's default browser. this issue wouldn't occur if you just ran FalconLobby and never picked that item from the tray icon menu; anyway, it should be fixed now.
  • the server publishing dialog wasn't always updating the checkbox correctly based on the settings.ini file value. the app logic used the settings.ini file value, its just the UI that didn't correctly display the check.


FalconLobby v1.0 released!

FalconLobby is an authorized AddOn for Falcon 4.0 Allied Force created to support the multiplayer experience. FalconLobby retrieves the list of currently active game servers and imports that list into the Falcon "phone book" (the list of game servers shown on the MultiPlayer/Internet screen). This avoids the need to "fat finger" in the IP addresses of the servers and provides a quick way to see what online games are currently available. The list of active game servers is populated from machines running game servers and FalconLobby.

To get started, check out www.falconlobby.com


Shadowbane Trebuchets in Action

I happened upon some unattened trebs and decided to have some fun with them. Video is at the below link.

Shadowbane Trebuchets in Action


TSDisp v1.13 available (Ventrilo support added)

I wrote TSDisp some time ago which provided a stay-on-top window showing the name of the current speaker in TeamSpeak.

I've now added support for Ventrilo as well. When you install, you'll get 2 shortcuts. Launch either TSDisp (for TeamSpeak) or VentDisp (for Ventrilo). See the below link.

TSDisp Home Page


WebArena initial check-in

WebArena is a web-based game which provides a casual multi-player battle environment. See the below link for more info. At this point, I've just checked in some very initial, pre-alpha code.

It has a client system requirements check, the ability to create chars, login, and see who else is online.

WebArena Home Page

You can grab the latest from CVS and use doc/README.html to setup a server if you're interested, just realize it doesn't do a whole lot at this point.

There are web-based single-player RPGs out there (AdventureQuest for example), however, this is shooting instead for a multiplayer PvP battle experience.


TrackerAssist v1.15 available

The label under the minimap now dynamically sizes to the text avoiding unnecessary "dead spots" where you can't click through. Also added a setting to control text alignment in the label.

You can download the latest from one of the below.

Curse Gaming
UI World of War


TrackerAssist v1.13/v1.14 available

I posted v1.13 of TrackerAssist, which fixed some more settings bugs and added a window which can be used to adjust the settings (see below).

Image hosted by Photobucket.com

I then posted another version v1.14 which makes the label under the minimap draggable.

You can download the latest from one of the below.

Curse Gaming
UI World of War


TrackerAssist v1.12 posted

I developed an AddOn for World of Warcraft (WoW) called TrackerAssist back in Jan '05. Since then I periodically updated it, then didn't update it for quite some time and have recently made a few updates incorporating some code contributions from other authors to bring it up to the latest WoW environment and fix some bugs.

Anyway, the latest version is available at the below links.

Curse Gaming
UI World of War

TrackerAssist provides some enhancements to the tracking ability available to some of the classes in the game. If you have a tracking ability (like hunters have for example), then when tracking is enabled and you mouse over a blip on the radar, TrackerAssist will show additional info about the unit as shown below.

Image hosted by Photobucket.com

If you then click on the blip, TrackerAssist will send a notification to the chat channel as shown below.

Image hosted by Photobucket.com

Use /ta to see the available command line options and current settings as shown below.

Image hosted by Photobucket.com

WoW AddOns make use of Lua to customize the game interface and client behavior and allow quite a bit of community involvement/improvement in the game. In developing the AddOn with Lua, I could see using this at some point from the application developer's role to allow scripting of my app.


sstat v1.6 available

Some time ago, I developed a generic TCP server status monitoring tool, with the initial application being monitoring of multiplayer game servers. I've posted a new version at the below link. As this tool just checks arbitrary TCP servers for the ability to establish a connection, it can be useful for monitoring any kind of TCP server for availability, i.e. web servers, Email servers, etc.

To use, edit the config file (sstat.cfg), and specify whatever servers you'd like to status along with a user friendly name for each and host/port info. You can even create multiple config files and then create separate shortcuts, each specifying a different config file on the command line.

The provided default config file just checks for a local web server, but some other sample config files are provided as well.

sstat download page

Image hosted by Photobucket.com


UCAWA Docking Video

I took some video while attempting to dock the FIRESTORM super carrier with GALCOM HQ. Granted, as soon as I actually touched down, it bounced me up into the inner depths of the station and I ended up getting sort of stuck there until I used the hyperdrive to get out. Still, it was a fun exercise :-)


You can download the free DivX player to view the video.

Image hosted by Photobucket.com


UCAWA Asset Comparison Spreadsheet

Been following the great work of 3000AD over the years with the Battlecruiser series, renamed to the Universal Combat series. I just upgraded my machine and now have enough horsepower to handle it so I've been playing the latest offering in the franchise, Universal Combat A World Apart (UCAWA).

The Game Appendix provides detail on all the Assets (Carriers, Cruisers, Transports), but it isn't in a format which would make it easy to do quick side-by-side comparisons. I created a spreadsheet to help in this. See the below link.


If you don't have MS Office, you can download a free Excel viewer from MS or you could always grab Open Office.

Image hosted by Photobucket.com


pittrainer v1.2 available

I recently started playing Falcon 4.0 Allied Force and found learning the cockpit controls to be quite a challenge. I put together a small Java app which lets you mouse over all the controls and get help text on them. You can move around the cockpit just like in the sim.

pittrainer Home Page

Also note that with v1.2 an interactive DED and ICP is provided, allowing you to actually click through the various DED screens and get help on the individual fields.

Lead Pursuit was kind enough to also host the download, so you can either go to the link above or the Lead Pursuit download page to get the app. Note that it comes with its own Java runtime for Windows so you don't have to worry about having Java installed first.

Image hosted by Photobucket.com


Java "ping bug" fixed in build #58

The bug referenced in an earlier post with the Java ping functionality when running on Windows has been fixed in the most recent beta build (#58) posted on the snapshots page.

Java 1.5.0 build #58 fix list

If you download and install build 58, you should be able to run MultiPing without seeing the earlier noted problem due to the correction of this bug.


MultiPing v0.2 (beta) available

With v0.2, if you attempt to run MultiPing on a version of Java older than v1.5.0, a dialog will be displayed indicating that Java v1.5.0 or later is required.

This was done by added a bootstrap class which gets compiled to target Java 1.1. This class attempts to load the main class and if it fails due to a version conflict, displays the alert and exits.

MultiPing Home Page
MultiPing readme


MultiPing v0.1 (beta) available

MultiPing is a multi-host, multi-protocol, graphical ping utility written in Java.

Despite a bug in the new version of Java required by MultiPing (v1.5.x, still in beta), an initial rough-cut beta release has been posted. Currently, if you leave MultiPing running for long enough all the hosts will show a DOWN status because of this and you'll need to close and restart MultiPing. The bug has been fixed by Sun but not yet posted in a build.

MultiPing Home Page
MultiPing Readme


Java Ping

The change list for Java 1.5.0 (still in beta) caught my eye, specifically, in the networking enhancements section. Looks like they've finally added the ability to "ping" a remote host and determine reachability. Apparently, the InetAddress.isReachable() method works using an ICMP echo or by attempting a TCP connection to the Echo service. Previously, you couldn't make use of an ICMP echo within Java because there was no support for creating RAW sockets. Granted, you could use exec() to run the ping command and then parse the output, but this just seems a bit kludgy.

I was hoping that this development would allow me to get MultiPing to a point where I could release something.

Well, as it turns out, there's a known bug in the current beta release. The InetAddress.isReachable() method method leaks sockets in windows (the code never closes the socket used in the operation).

So, after running MultiPing for awhile and periodically using this, the call starts failing as the OS refuses to create new sockets. Apparently, according to the bug report it messes up other networking functionality on the machine as well :-(

The bug report mentioned before indicates that this has been fixed in tiger-rc. Currently the latest posted snapshot (build 56) does not contain a fix.

Something to look forward to though...


TSDisp v1.10 available

TSDisp is a utility designed to work alongside TeamSpeak by providing a stay-on-top window which displays the name of the current speaker. See the below link to download.

TSDisp Home Page

This version fixes some crashing bugs as well as adds some optional logging features which can be enabled during compile time.

NOTE: TSDisp runs on Win98/2k/XP.


sbtray v1.16 available

sbtray is a utility which provides a graphic display of the state of the Shadowbane game, login, and patch servers via a windows tray icon. It pulls its data from the Chronicle of Strife web page as well as by attempting connections directly to the login and patch servers. See the below link to get the latest version.

sbtray Home Page

Screenshots below:

NOTE: sbtray runs on Win9x/2k/XP.



If you're playing L2, you'll note that logging in requires launching the patcher, then the client, then logging in, then picking a server, then picking a char. l2login automates this so you can go get a cup of coffee while it logs you in. I'm not playing L2 myself, but I did play briefly and ended up writing this utility. Anyway, perhaps someone else will find it to be of use. See link below.


NOTE: l2login runs on Win9x/2k/XP.


LFG v0.2 available

lfg is a Java client/server tool which was written for use along side MMORPGs. With many multiplayer games, matching services are provided, which allow players to easily find running games. With MMORPGs, play occurs on a small set of central servers, and many titles do not provide services for matching up players to groups in game. Thus, many players spend a large amount of time looking for a group (LFG). With lfg, a group of players player guild for example) can run a central LFG server to which players can connect. A list of running groups can be maintained and players can add themselves to waiting lists for full groups. See the below link.

LFG Home Page


recmp3 v1.3

recmp3 is a Windows application which records audio from an external source (tape deck, sound system, etc.) and writes it directly to an .mp3 file using the LAME mp3 encoder.

Due to concerns regarding the mp3 technology and patents, recmp3 is not provided as an executable binary. To use recmp3, you must obtain the LAME mp3 encoding libraries and build the recmp3 MSVC++ project yourself. recmp3 does not, itself, contain any code which encodes mp3 as it uses the LAME mp3 library to do this. See below link.

recmp3 Home Page

NOTE: recmp3 is design to run on Win9x/2k/XP.