I never had a serious model train set but I would have liked to work on the application described in Train Scheduling in Smalltalk. I've always found anything to do with scheduling interesting, with plenty of scope for complex algorithms and challenging coding.
In Bug rates in a Smalltalk project David Buck describes how he has observed a very low rate of bugs due to lack of static typing in Smalltalk. Regarding his point about most statically typed languages masking errors caused by uninitialized variables, this is not the case with C# where the compiler will not allow the use of uninitialized variables. On the other hand I have seen many errors of this type in C++ code. Any language being used for general purpose development should prevent this error.
By the way, the Cincom Smalltalk community blogs are worth subscribing to, for a different perspective on developing applications if you don't already use Smalltalk.