Member preview

Stop Making Sense

The Talking Heads???

EVERYBODY PANIC! The technology industry is running out of a fundamental finite resource. But the problem this time isn’t scarce chips or broken servers, and it certainly isn’t venture capital — it’s words. Certain corners of the software world are starting to run short on unclaimed terminology, and as such it may soon no longer be possible to talk about tech coherently. That’s too bad, because it’s hard enough already!

Before a piece of software can run, it first lives as a set of letters and characters which are saved in discrete files just like your spreadsheets or documents or anything else on your computer. When you’re creating a new project, you need to come up with a filename into which to save the code — but increasingly, the possible names are already taken because other developers got to them first and published the results of their work. Particularly in the case of JavaScript, the wildly popular language used for building web interactivity, most reasonable identifiers have by now been claimed. Wheelbarrow.js. Cucumber.js. All four Ninja Turtles (leonardo.js, donatello.js, raphael.js, michaelangelo.js). Go ahead, try a few of your own ideas.

Picking a project name is (is.js) by now (now.js) a (a.js) widely-acknowledged problem dreaded by programmers preparing a project for release. It’s hard to even find an unclaimed noun at all, never mind one that has some reasonable conceptual connection to whatever the code actually does.

There is, of course, a software library to help with this problem (project-name-generator.js), and in an attempt to mitigate this problem, the popular code hosting site GitHub (github.js) now immediately suggests names whenever you start up a project, combining a library of pre-allocated words into unique randomized sequences that sound sort of like stream-of-consciousness free-association. I reloaded the “new project” page on GitHub a few bunch of times and was fed the following suggestions (suggestions.js):

  • effacious-octo-turtle
  • nefarious-barnacle
  • propitious-giggle
  • obtuse-woof
  • jocular-broccoli
  • curly-capsicum
  • loquacious-waddle
  • insolent-meow
  • arcadian-funicular
  • feckless-squeegee

You cannot expect anybody to put effort into something called “Feckless Squeegee” — any sort of Squeegee should be a non-starter, but this problem is spiraling out of control (here’s squeegee.js). Why do we now have more software tools than we can even coherently describe (describe.js)?

For one thing, there are a lot of them. Technology is now widely accessible, and coding is not very hard and requires minimal infrastructure, and thus many people do it. They don’t all write code professionally, and in many cases the script or program is buggy (buggy.js), but almost anybody can create a very small piece of technology in the space of an afternoon. There is so much code; too much to make sense of, certainly, and perhaps too much to formally name.

For more than a decade, we’ve accorded a lot of value to search engine optimization. (Here’s Santorum.js, by the way.) If you can’t Google your way to something, it’s almost as though it doesn’t even exist, but luckily the filename suffixes used for coding scripts, such as .js and .py, are linguistic (linguistic.js) anomalies which all but create their own SEO (seo.js). Businesses strategize based on their Google rankings relative to competitors for the same reason that tweets are usually weighed in favorites and retweets — on an impersonal internet, visibility (visibility.js) is almost synonymous with value. Publishing any code at (at.js) all creates an instant presence which would be hard to build in other ways.

The tech industry is our modern gold rush, drawing swarms of opportunists westward (westward.js), and memorable terminology is one of its new land grabs. There’s an Uber for everything. An entire language built for querying Facebook, long since abandoned. Whatever poptart.js is supposed to be. Slapping a label on an application or code library and uploading it, even prematurely, is almost a form of currency. Hey, everybody, look what I did!

We tend to consider technology intrinsically valuable, the work of wizards (wizard.js), land to be claimed, credit to be bestowed. It is none of these. Programs are tools, most of them flawed, and we cannot treat each hammer and nail as though they are unique and precious snowflakes (hammer.js, nail.js, uniq.js, precious.js, snowflake.js). The infinite words we’d need for that do not exist, and never will. Even actual living human beings are forced to reuse names in a concession to practicality.

We’re headed toward an inflection point where we’ll need to start expecting the same of our software. Soon our ways of talking about technology will have to evolve, and we will just have to stop naming programs as though they are geographic entities upon which flags (flags.js) can be planted. Most code is flawed — at the very least, certainly half of all software must statistically be below average — so the implicit and automatic anointing of whoever shows up first as the software world’s canonical shampoo (canonical.js, shampoo.js) is an unhealthy way of thinking about how and why to build (build.js) and create (create.js).

But there can be no shared solution to this, because the internet is decentralized by design and generally terrible about cooperating around standards. There can be no civil agreement nor convention, because the internet is full of jerks (jerk.js), including a prohibitive percentage of software developers. The only option left is to stop taking it seriously. Let’s be ridiculous! It’s the internet! (internet.js)

WordPress 4.3 [Skrillex remix]

If you still think your software is special and precious, fine — let’s double down. I keep gravitating (gravitate.js) to song titles as a potential model — not because code ought to be considered an artistic work (that can be true occasionally, though it usually isn’t) but rather because they would provide both a helpful lack of specificity and the free use of modifiers (modifier.js). Titles can be creative, expressive, and memorable, but they don’t have to be unique.

jQuery v2.1.4, live at the 1967 Monterey Pop Festival

This problem has real effects: most software development is done with the help of tools like “package managers” and “repositories,” which are essentially public registries used to quickly manage software installations. For the most part, they require unique names. The JavaScript package manager site npm uses its 404 page to crow (crow.js) about the availability of whatever your URL typo was, like a geeky Gollum: “not found. (software name) will be yours,” it says, “Oh yes, (software name) will be yours.” There’s a documented process for handling software naming disputes, and a software package to remotely check whether a name is available without ever visiting the site. This is excruciating, because there’s really no need for these registries to run on proper nouns in the first place.

We can still (still.js) mechanically generate (generate.js) obtuse (obtuse.js) alphanumeric identifiers for package managers to use without ever revealing (reveal.js) those codes as the public-facing title (title.js) or project name. In fact, most iterative software development processes already do this automatically under the hood (hood.js), quietly saving every new snapshot (snapshot.js) of the codebase and naming it after a huge string of alphanumeric gibberish (Gibberish.js). Fundamentally, the problem (problem.js) is that we are trying to write unique identifiers meant for human (human.js) readers, not for machines (machine.js). But humans don’t use (use.js) code (code.js); computers do, and then the humans just use the computers. Gizmos (gizmo.js) don’t actually understand proper (proper.js) nouns (noun.js), even if they seem (seem.js) to refer to you by name (name.js).

Enough (enough.js). Software doesn’t care what you call it. Might as well have some fun (fun.js).

I_Slept_With_Someone_In_Fall_Out_Boy_And_All_I_Got_Was_This_Stupid_JavaScript_Library_Written_About_Me.js

Apparently we didn’t learn our lesson – years ago, the rush (rush.js) to register (register.js) domain names led to a vast, lucrative, and bizarre market for nouns which eventually precluded us from launching new sites with sensible dot-com URLs, and then led us to start dropping vowels from verbs, and now we’ve started moving to silly (silly.js) new (new.js) top-level (toplevel.js) domains (domains.js) like (like.js) .pizza (pizza.js), .computer (computer.js), and (and.js.club (club.js). Ugh (ugh.js), here (here.js) we (we.js) go (go.js) again (again.js)… (ellipsis.js)