Tuesday, January 31, 2006 - Posts

Latest pet project

So - I spent the better part of 2 years writing a distributed Optimization and Classification application for use training fully automated trading systems - sometimes you hear me reference OptimalOptimizer - that is what i am refering to. In short - it is software - written in C# that implements much learned for the schools of Memetic Algorithms, Evolutionary Computation, Data Mining, etc, etc. Cool bits with useful purpose. A user recently messaged me to say that he believes it has harvested near 100 tradeable trading systems with near 1000 possible variations of those systems!

Anyhow... To brush up on my Java skills - and to play with Ruby - I have been working on a C# to Java converter - written in Ruby. (I am also upgrading the C# code to use 2.0 features - mainly generics - but that is besides the point).

I am working on strategies for converting the following C# items to Java:

#        package/ namespace
#        events
#        delegates
#        using
#        regions   
#        assertions
#        exceptions
#         attributes
#         get/set
#        foreach
#         constructor overloading
#        extends (base classes)
#         implements (interfaces)

I am sure this list will expand...

This set of exercises has shown me several things so far - so - in no particular order.

1) Delegates/ Events are wonderful
2) Java's notion of events is far inferior
3) Qt's SLOTS/ SIGNALS is better than Java's event mechanisms in many ways
4) Delegates/ Events are better than Qt's SLOTS/ SIGNALS
5) Ruby is a cool little language
6) I am very reliant on IDEs, strong typing etc  - getting used to getting much less from the IDE is a hard exercise (Ruby in Eclipse)
7) Ruby and Qt's Ruby Extensions are nice in thought - not so great to use (yet maybe)
8) Porting .Net 1.1 to the latest 1.5 JDK is easier than older JDK versions - annotations help a ton as I am usually an attribute zealot in .net land
9) I keep learning this lesson - Db4o is wonderful
10) I need an open source message queue (perhaps ActiveMQ + Stomp for DotNet seems most compelling )
11) It is late and I need to go to bed.
12) My kids are really cute - I wish the slept perfectly :)

OK - so some of those are not lessons from this process - but they are true nonetheless

-Chris