The History of D-Rose
Way back when, in the dark ages, (circa 1990), there was a program
by Microprose called Railroad Tycoon (tm). This was a way-fun
program, but it had limitations. The most annoying of these was that
it kicked you out after 100 years. Other limitations included the
number of junctions and signals that the program would support, not
allowing triple-track or more, no time-based scheduling of trains,
limited capabilities for train routing, etc. Part of this is
certainly understandable, as it was a mass-market game, not a
simulation aimed at rail enthusiasts (i.e. geeks such as myself).
Even back then, folks saw that there could be a much more
featureful and rail-geek friendly program. People even put together a
wish list, with the intention of sending it to MicroProse, and posted
it on CompuServe. But being that they/we were all geeks, MicroProse
paid no attention, and when RRT2 came out, it lacked many of the
requested enhancements. Again, they went for the mass market. (Which
is their company mandate, what with them wanting to stay in business
and all...)
1992 came around, and I got a particular issue of Trains Magazine
(I forget which one). This issue had an article on CSX's centralized
dispatch center in Jacksonville, FL. Included in the article were
pictures of the computerized displays that the dispatchers use for
their work. And I thought, "Hey, computers! And I'm a programmer! I
could write that!"
So over the months that followed, I started putting together ideas
for what was basically a replacement RRT. And I ran into a
substantial problem, which was lack of knowledge for how to solve
various problems that needed to be solved for such a program to work.
So it got shelved. But over time, it kept niggling its way back into
my brain. I continued to be a railfan, chasing trains around GA, PA,
AL and FL as I got married and moved around. And along about 1994, I
dusted off the ideas I had and started writing some code.
It was in C, specific to Windows, and didn't get very far, but I
could lay track and run a train over it. And, nifty thing, it was
helping me to be more serious about my profession; I used it as a
chance to get more familiar with Windows programming at the same time
as I was coding trains. Well, then we moved, and it got shelved
again.
The next attempt was in C++, still in Windows, and took place
probably in 1996 or so. I ported things over from my old C code, and
again used it as a test bed for C++ coding and OOA&D, as well as
simply being a rail simulation. This time, I made it through a
semi-official analysis phase, but it soon got shelved again as I
welcomed a son into our family. If you've had a child, you
understand: it changes everything.
The next run at it was around 1998-9, and accompanied a phase where
I was trying to learn Lisp/Scheme. I managed to port my existing code
over to PLT Scheme, using their provided object system. I wound up
learning more about Scheme than accomplishing anything rail-wise, and
ended up realizing that while Scheme is fun to code, it's (for me,
anyways) a bear to maintain (I never got the hang of grasping the
intent of Scheme code, even code that I'd written myself), and it
started to languish. That, plus we had a daughter: another couple of
years without spare time.
2002 was the Year of the Snake. Python, to be exact. Could this
be yet another fad? It's possible, but I ported my Scheme code, minus
the GUI, to Python/wxPython. We then moved, which put it aside for a
few months, but then it came back out of obscurity and into focus and
moving forward.
Some other things have happened recently as well. First, I'm
starting to figure out how to deal with my short attention span.
Second, I've been putting some effort into figuring out a RAD cycle,
at least as it pertains to my own work. How to structure my work so
that if I only get a couple of nights a week to work on it, it'll
still progress. Third, we're not having any more kids. Fourth, I'm
sick of moving, and I'll be hanged if I'll do it again anytime soon.
Yeah, as a parent, there's always something coming up, but I'm
(naively) putting my foot down and saying that I'm gonna do this. So
there. (Hey, wait, that's four things...)
Feel free to slap me around if you see that I've stopped updating
these pages for more than a few weeks. I'll deserve it. Otherwise,
get ready to start seeing an actual program. It's about darn
time.
|