That was fun! And tiring.
So tiring. But fun!
In the spirit of Easter, when everyone was surprised by an event that had been foretold a couple hundred times, allow me to reveal the worst-kept secret of this stunt: no, I didn't really sit down and write 708 fivers. They were randomly generated, not on the server at load time, but on my PC just once so that everyone would see the same episodes. I used C++ to do it, and if anyone's curious about the exact algorithm,
here's my source code.
Spoiler: Details for the programming-inclined
A large part of the work came not from writing the program, but from getting my compiler up to date so I could use a convenience added to the language in C++11. (Yeah, it's been a while since I've had much programming to do.) Believe it or not, even though vectors have been in the language since the '98 standard and strings even longer, the method of initializing them I used didn't work till '11. Before the std::initializer_list template, you actually had to
make a char* array and initialize the vector with that. And that would not have been notably slower than what I did, but it's such a clumsy, stone-knives-and-bearskins approach that it made me mad just thinking about it. I could also have settled for string arrays, but those have no automatic size function, so every time I added more random terms I would've had to keep track of how many there were. My code was designed instead to make adjusting those lists as easy as possible -- you'll notice I only had to hard-code one number (the number of vectors), and I could have avoided even that if I'd made a vector of vectors, which is definitely the Right Thing here but would've been more likely to create bugs, since I don't think I've ever coded with multi-dimensional vectors before.
As it turned out, I couldn't get my usual compiler to work, and several alternatives had their own infuriating problems. The one that got the job done was
Code::Blocks, and until and unless
that one explodes on me, I recommend it.
Try not to scream at my preprocessor use. I'm still a C programmer at heart.
All my random terms were carefully chosen to avoid grammar and syntax issues. For instance, the first term in a title never starts with a vowel (so it can go after "A" without changing it to "An") and can always be pluralized by adding "s". Pronouns are avoided so I can keep male and female characters in the same box. I only slipped up once, and if you're bored enough to look for it yourself you'll find it eventually; if not,
here's one case where it happened. I haven't checked yet, but there are probably also some identical titles, and almost certainly some identical blurbs.
That was something I anticipated but chose not to prevent -- not worth the trouble.
I've had this stunt in mind for a while now, and I considered many different approaches. I was really close to writing a more complicated program that would've had many more random terms, title/scene patterns, and scenes per episode (let's face it, this was really Five-
Second Anbar). Making the randomness half as obvious would probably have taken ten times the work, but it would've been a fun challenge. Alas, by the time I got my compiler working right, I was too beat to make a program that big -- but I have to admit this simple version is probably funnier anyway.
Another thing I wanted to do was include a few of the events we know about from "Sunset". That episode includes an extended flashback from Season 22, and there are at least ten, maybe as many as twenty other significant events whose placement in the timeline I could have estimated. (In fact, I did do a
bit of that -- characters born in the Big Empty are added to the list roughly when they would've been old enough to have episodes about them.) Those would all have been season premieres to make them easier to find, and I even wanted to make up the remaining premieres, following the theme of "Caretanbar" with titles like "Way of the Wanbar". ("What are we going to do about the Klingons?!" "What Klingons?" "Huh. Never mind.") Right up to the end I was hoping to do that, but by the time I had everything else ready, the thought of writing even 10 more mini-fivers, much less 58, made me despair. Leaving that stuff out had its own benefit: it kept this event almost spoiler-free, which is remarkable for a topic as radioactive in Excelsior's myth-arc as the
Anbar.
The graphics posed a little challenge too. The
Anbar is a Class 3 neutronic fuel carrier, the same class as the
Kobayashi Maru -- which you may recognize as a ship that has
never been shown onscreen. How convenient for a site that always uses a series' main ship for its graphics! Fortunately, XL had already chosen a representative for the title card of "Sunset" (the starship
Antares from "Charlie X", or at least one of the same class), so I used that. Similarly, a made-up series obviously had no official font, so I picked something thin and spaced it out to fit the Big Empty theme.
This "subsite" was the ultimate stress-test for the PHP code I've been running 5MV's subsites on since the '05 redesign. I'm proud of how well it did -- I only had to change one thing (it wasn't equipped for two-character-long season codes). This is probably the last hurrah for this old system, which uses text files as a pseudo-database, since we do actually have a
real database on the server and I've been meaning to switch to using that for ages. I'm glad I could send out the old code with a bang.
Finally... honest, 5MV has
not become an Excelsior fansite. I'm just very into the series right now for two reasons. First, in these days of AbramsTrek and whatever the hell Discovery is, it's refreshing to have an alternative (which has its own major differences from Roddenberry/Berman Trek, but it's closer in spirit, and it's not another damn prequel). Second, I'm writing the episode after next!