The Ballad of Engine 115

Many parents of young railfans know (all too much) about Thomas and Friends, a TV show and toy/media empire in which some immature trains bicker endlessly. Fewer are familiar with the original Railway Series books by Reverend “W.” (Wilbert) Awdry, which are full of beautifully illustrated, oddly moralistic tales of the terrible things that can happen to a locomotive that doesn’t — so to speak — pull its weight. “You’ve been naughty so we’ll just leave you stuck in this tunnel forever.” That sort of thing. (Many of the “Thomas stories” available these days have been rewritten a few times since then, to tone things down and throw in a few girl characters. The TV show, faithful at first, eventually diverged from the books. Can’t exactly blame them, but the originals have more character.)

Still with me? So it turns out that most (all?) of those original tales were based on actual railway news items. Whatever happened to Thomas or one of his friends had really happened to a real locomotive somewhere, in some form.

Well, once I found out that there was a real incident behind each Railway Series story, I suddenly got much more interested in one of them in particular: “Down the Mine”. Sure enough, the inspiration for Awdry’s story is a rather spooky true tale of railway weirdness.

Still with me? The bottom line is, I wrote a spooky song for Halloween 2015. Enjoy! (I set it to ‘Ghost Riders in the Sky’, my favorite spooky tune. That song has been recorded many times but I strongly recommend Vaughn Monroe’s classic rendition. My song has more verses so I left out some choruses, and of course the words are all new.)

The Ballad of Engine 115

(Lyrics by Dan Efran; sing to the tune of ‘Ghost Riders in the Sky’ by Stan Jones.)

A locomotive steamed along a cold and winding track;
It had a lot to do that day but it ain’t coming back.
The railyard was subsiding due to mining down below;
The miners and the railmen knew, but Thomas didn’t know….

Never coming back.

The weather was improving and the signals read ‘all clear’.
The rails had been inspected by the station engineer.
The driver knew that engine well and drove it pretty hard,
Shunting cars to make a train at Lindal Bank Top Yard.

The fireman had gone to lunch; the driver was alone.
He felt the engine shudder and he heard an awful groan.
He looked around the train and saw the ground begin to crack.
At once he tried reversing but the engine jumped the track.

Never coming back.

The driver broke his shoulder in his haste to leap aside;
He left his jacket and his gold long-service watch inside.
He scrambled back to firmer ground, and not a bit too soon;
A crater opened up, just like the surface of the moon.

The engine fell in boiler-first, the tender in the rear;
The driver watched his locomotive almost disappear.
The hole was ten yards deep or more; he knew just what to do:
He handed off the problem to the station’s breakdown crew.

It was the strangest wreck a breakdown crew has ever seen:
The Earth had opened up and swallowed Engine One Fifteen.
They brought a little crane and pulled the tender out all right,
But to rescue that big engine looked to take about all night.

The cab was mostly buried and the fire was still lit;
They’d have to dig a ramp down to the bottom of the pit.
They’d almost reached the engine when they stopped to take a break.
Just then that railyard rippled like a stone thrown in a lake.

The chasm opened wider; swallowed half a dozen tracks.
The men said to each other, “That train’s never coming back!”
As it sank beneath the ballast, they heard that engine scream:
It whistled as it fell, and fell, and fell, still raising steam.

Never coming back!

They heard it falling hours after it had last been seen,
Till finally they heard the last of Engine One Fifteen.
Now railmen say the Devil drove that engine down to Hell,
And miners say they still can hear the clanging of its bell.

The rails of Lindal Bank Top Yard are now in Lowfield Pit!
This tale is mostly true, though I exaggerate a bit.
And if you don’t believe me, look it up; I hope you do:
September twenty-second of Eighteen ninety-two.

The driver, Thomas Postlethwaite, escaped a gruesome fame;
If he had not jumped clear that day we all might know his name.
Like Casey Jones and Davy Jones combined in one grim yarn,
He’d drive that train forever, shunting cars beneath the tarn!

Never coming back.

Clickety-clack… clickety-clack….

Total Eclipse of the Moon

As I write this, the Moon is emerging from the shadow of the Earth. Tonight is the Total Eclipse of a Supermoon – a somewhat rare combination. Earlier this evening, my family went out to look at the moon for a while. Of course in Pittsburgh, any astronomical curiosity is met with cloudy weather, and tonight was typical.

Any interesting astronomical event is, in Pittsburgh, a portent of rain.

Any interesting astronomical event is, in Pittsburgh, a portent of rain.

We sat around on a damp park bench in cool evening breezes for more than an hour, and caught only a few glimpses of the moon through gaps in the clouds.

A waning half moon on the night of a full moon. (2015-09-27)

A waning half moon on the night of a full moon.

Frustrating, but in the end we did see the moon go from full to half to a small waning crescent.

The Moon is rapidly waxing again now, ultimately visiting all the Phases of the Moon in one busy evening. But the sky here is now a uniform blue-gray blanket, and also rain is falling from it. Oh well; techincally we saw the eclipse, and I even coaxed my camera into focusing on the moon a few times…or nearly focusing. (Ever try taking pictures of the Moon? It’s possible, but it’s not easy.)

Earth steals the spotlight, shutting down a full moon for a little while.

Earth steals the spotlight, shutting down a full moon for a little while.

And now to bed. “Goodnight room; goodnight Moon; goodnight Shadow passing over the Moon….”

Deflectus postmortem.

After experimenting with various control schemes for Deflectus, I decided it just wasn’t working. I mean, the code is fine, the controls are smooth, I could probably turn it into a playable game eventually. It was an interesting and basically successful experiment, and I may re-use ideas from it elsewhere. The visual style is kind of cool.

But I envisioned Deflectus as a cross between Pong and Tempest, both games that are designed around knob-style controllers. A traditional Pong paddle controller is like a big volume knob. A tempest spinner is similar, but loose and heavy so it really spins. These days, most of us do not own any knob controllers, except maybe the scroll wheel on a mouse, which is too stiff for Pong. (I tried it first, for Deflectus.) None of our standard modern controllers really come close to the experience of these vintage control schemes.

Since I intended Deflectus to be just as much of a visceral knob-based game as Pong or Tempest, in practice it would always have been a compromise. I’m not such a huge fan of Pong that I wanted to keep struggling to fit this round Pong into a square hole. Good game design involves many quick experiments that teach the designer something but don’t turn into games, and Deflectus is one of those.


After writing a one-button train game in 1024 bytes of JavaScript for JS1k 2015, I was itching to do some more game development utilizing JavaScript and the HTML5 canvas.

(These days, JavaScript+HTML5 is a surprisingly powerful combination for game development, at least in terms of prototyping concepts. I’m sure it has limits in production, but being able to mess with just a few text files and reload with no compile cycle is quite refreshing after programming in your favorite language that isn’t like that.)

Then I happened to check the Ludum Dare site. Sure enough, Mini Ludum Dare #58 had just begun, and the theme was PONG.

Perfect! I wanted to experiment with some techniques that are perfectly suited to a PONG variant. A real Ludum Dare Compo is a grueling weekend, but a Mini burns longer and cooler…they’re for practice, basically.

So yeah, I’m in. Let’s have some PONG!

I cooked up a preliminary beta version: just a screensaver with no user input, but it illustrates the look of the game I hope to cook up over the next few days. Enjoy!


…is the name of my latest game. It’s a little action-puzzle game implemented in just 1024 bytes of JavaScript code.



That’s not a lot of code. This is my entry in JS1k 2015: The JS1k hype train is real!, a JavaScript code golfing competition. The challenge is to create a demo (as in “demoscene”…basically like a screen-saver) in just 1k of JavaScript or less. I figured that was just enough to make a complete game. Yep.

So go play my game, and check out the rest of the entries too.