> Writing code that thinks ahead is not a universally bad thing to do.

You say this because you're young and innocent. Once you've been battlefield-hardened, you'll look in disgust at the thousands of lines of code you've written in your own projects that sit disused and unmaintained, suffering from bit rot and the ire of lazy programmers that romp over the codebases. Hell, by the time any data exists in Galaxy that's over a year old, Mozilla will have decreed a redesign and ported everything over to Ember and CoffeeScript and @cvan's head will have exploded.

It's like those file size filters that you see that convert bytes to KB, MB, GB, TB, all the way up to yottabytes. Nobody has a yottabyte. The code that uses the filters will never address anything over a megabyte, probably. It's overkill. Unused code. Wasted bytes. Reusable, sure. But a reliable implementation could be just as easily doodled out by a drunk CS101 student between Starcraft rounds at a LAN party. If anyone ever says, "Huh! This interface says 1000TB!" it'd take them all of twenty seconds to update the function. If anyone ever says, "Huh! Galaxy says this game has been in review for 14 months!" there's a.) a huge fucking problem, probably some form of apocalypse that killed all of the reviewers and b.) they're probably a manager because nobody else would care that much. And the guy they ask to fix the problem would add the three lines that say `if (time > 12) {time /= 12; output = ngettext('1 year', '{n} years', {n: time});}` and move on with their lives.

Keep your code lean and don't solve problems that don't exist yet. If something is easily written in a 20 line one-off filter at the top of `main.js`, it's just as easy for someone to copy it over into a module and use it where they need it when that day comes. Trust your fellow programmers, they're smarter than you give them credit. And save yourself the brain cycles, this project has more important pieces of code that could use your attention. ;)