Coding Serendipity

This afternoon has been one of those really special moments where you know you're on the right track. I was talking to the Data Team earlier today and asking them if there's anything that they can think of that'll make the server's suite of tools easier, and they came up with the idea of automating the few tasks now done manually to execute a split. One of the first things they have to do is to zero out all the positions on all the instruments of the family. This really is a bit of a limitation on how the server's clients act - based on the fact that the server never "looses" a position.

So I started working on it, got it in the server, got it in the Java protocol, got it in the perl module calling the Java code, and then was putting it in the web site when I realized that this was really almost something that I've been meaning to add to the server for months. When something bad happens and the start-of-day (SOD) position file is bad, or the trades are all messed up, we have to correct the files and then recover the server. This is a 20 minute process that the users don't like to see.

The better solution is to enable the server to be zeroed out and then have all the positions in the new SOD file reloaded and then the trades replayed. This would allow us to fix the files and then say "do the BIG reload" from the client and the server would reload all positions and things would not require a recovery and 20 minute outage - it'd take 3 mins tops and the system would never be down.

What was amazing to me is that something almost totally unrelated comes back to be the key component in something that has been back-burnered for months. It's really something. And for a while, at least, I have a great feeling that I'm on the right track.