The model railroading website of Ed Kapuscinski.

TrainCrew – Operate More Than Your Throttle

I realized that computers and smart phones could help us create a more engaging model railroad operations experience after reading Lance Mindheim’s excellent book on modern shelf layout operations. The TrainCrew app that I’ve built does just that.

First, I want to talk about Lance’s book. In it, he discusses how to add much more operational interest to what might conventionally be considered a very simple layout by modeling more of the actual tasks and operations that railroaders perform while going about their business. This includes things like setting handbrakes on cars, performing air tests, and interacting with railroad customers to get access to their facilities. I highly recommend giving it a read because it has the potential to change your entire perspective on model railroad operations.

As is usual with Lance’s work (his Monon layout was my original inspiration for modeling winter), it opened my own eyes and changed my thinking about “how I model railroad”. Being a professional web developer, I realized that many of the things that Lance mentions in his book as needing to be simulated by the operator can be simulated using an “app” on a smartphone or tablet. Since then, I’ve been thinking about how to actually do this in the best way possible, while making it as accessible for modelers of all technological sophistication.

It took a number of false starts, but eventually I realized that simple “flat” html web pages could serve up interactive Javascript to provide the actual functionality. It was then just a question of building out that html and javascript for each of the bits of functionality I wanted to replicate.

I had been discussing this idea for a while when my friend Adam told me about Bill Brillinger’s BNML Conductors App. Bill’s app did much of what I wanted to accomplish, but it was focused on his own layout, and didn’t look easily adaptable to generic conditions. It did, however, provide a great source of inspiration and information (and some sound files) when starting on my own work. Once I got permission from Bill to use some of his source in my own project, I set to work.

Because I wanted to focus on the functionality and not get bogged down in the design, I decided to build on top of the Bootstrap html framework to provide pre-styled UI elements (like buttons and navigation). This then let me focus on programming the functions of the app using JQuery and traditional Javascript.

I’ve been referring to the software as an “app”, even though it’s not really. It’s just a website, but colloquially, people tend to refer to this type of interactive experience on devices as apps, so I figured I might as well make it easier to find it in Google, and gave up my professional hangups on terminology.

The app gives you the ability to simulate performing a number of railroad operations. It started with airbrake operations: performing the various tests required by law when operating a real train. I then moved on to adding simple timers to replicate the time it takes to apply or release handbrakes on cars. Next I started thinking about what other actions are performed while switching cars. I added a timer and some sounds for coupling cars and making the air hose connections. Similarly, I added a quick timer for uncoupling cars as well. Those, along with the handbrake functionality got put on a “switching ops” screen together to make a modeled conductor’s life easier. Lastly, to make an engineer’s job more difficult, I added in the daily locomotive inspection process too.

Performing the initial air test for a train.Performing a daily inspection prior to using a locomotive.

Because I realized I was not the only person likely to have an interest in this stuff, I have released the app under an Open Source license. This means that anyone can download and use it. Even more importantly, others can make changes to it to suit their own needs. For this, I have put the source code all up on GitHub. I am hoping that anyone who makes any edits would let me know, and would likewise share their work. I’d also love to include it in the “official” app itself. GitHub makes all of this easy to accomplish.

GitHub also makes it easy to track feature requests and bugs. If you’re using the app, and you see something that doesn’t quite work right, you can create an “issue”. Similarly, if there is a feature you’d like to see added to it, you can create an issue for that too. I make no promises about adding anything, but because of the Open Source nature of it, you’re more than welcome to help out yourself. Because it’s all plain HTML, and requires no server side processing, you can also host the app yourself almost anywhere (in fact, all of my development work was done using the Chrome Web Server on my laptop).

The one thing about the app that’s worth mentioning now is that every test currently passes. One of my next big projects in it is adding in test failures. It’s probably not surprising, however, that adding failures is much more complicated than simply saying “all’s good”, so this will likely take some time. Again, however, I’d love to have help with this, so feel free to pull down the code repository, make your own changes, and send me a pull request!