Simultaneous Invention, All The Time?

As Tom quipped on the podcast this week, if you have an idea for a program you’d like to write, all you have to do is look around on GitHub and you’ll find it already coded up for you. (Or StackOverflow, or…) And that’s probably pretty close to true, at least for really trivial bits of code. But it hasn’t always been thus.

I was in college in the mid 90s, and we had a lab of networked workstations that the physics majors could use. That’s where I learned Unix, and where I had the idea for the simplest program ever. It took the background screen color, in the days before wallpapers, and slowly random-walked it around in RGB space. This was set to be slow enough that anyone watching it intently wouldn’t notice, but fast enough that others occasionally walking by my terminal would see a different color every time. I assure you, dear reader, this was the very height of wit at the time.

With the late 90s came the World Wide Web and the search engine, and the world got a lot smaller. For some reason, I was looking for how to set the X terminal background color again, this time searching the Internet instead of reading up in a reference book, and I stumbled on someone who wrote nearly exactly the same random-walk background color changer. My jaw dropped! I had found my long-lost identical twin brother! Of course, I e-mailed him to let him know. He was stoked, and we shot a couple funny e-mails back and forth riffing on the bizarre coincidence, and that was that.

Can you imagine this taking place today? It’s almost boringly obvious that if you search hard enough you’ll find another monkey on another typewriter writing exactly the same sentence as you. It doesn’t even bear mentioning. Heck, that’s the fundamental principle behind Codex / CoPilot – the code that you want to write has been already written so many times that it will emerge as the most statistically likely response from a giant pattern-matching, word-word completion neural net model.

Indeed, stop me if you’ve read this before.

20 thoughts on “Simultaneous Invention, All The Time?

  1. This is a particular instance of a more general phenomenon: supposing you want to make a creative contribution of some sort, how do you go about it?

    You start by getting a lot of ideas. Tons of them. Several a month.

    One by one, as you get them you do a little research: is there a definitive reason why this won’t work? Has this been tried before? Is this already a thing that you could buy?

    The vast majority of ideas can be discarded early, you don’t have to work on them for whatever reason.

    But the very few ideas that survive this process (around 4 in 100, by my anecdotal measure) are interesting enough to pursue. You can then do more in-depth research, figure out why it will or won’t work, if it’s a product decide if people would want it, do some experiments, and so on.

    Very few ideas survive *that* process as well.

    But if you are persistent and creative, eventually you’ll get an idea or two that can’t be dismissed after research. *Those* ideas are worth pursuing, and something that can be used to add meaning to your life.

    For this to work you have to be a creative person, which means you have to get a lot of ideas. Most new ideas come about by happenstance or necessity, and the RGB screensaver as described was one of these. A random situation, “this would be neat”, and a solution arises to address a situation.

    For most people this is how new ideas come about, and those ideas don’t survive the 1st phase of culling described above.

    How many ideas does Elliot get in the course of a year? His one example was an idea geared to a situation presented to him. There’s nothing wrong with this, it’s how almost everyone operates.

    People are more similar than they are different (by a wide margin), and we live in environments that are more similar than different (by a wide margin), so it’s not surprising that any two people will get the same ideas.

    The trick is to get a lot of ideas, then whittle them down until you find the one or two that are truly useful.

    1. +1 …… yeah, this is exactly what i do. So many ideas seem wonderful for a week or two then get shot down by one of my more ruthless gun slinging sub personalities. For every idea, about 1% lasts a whole week and then 0.1% after week two. If it survives a whole month, then it’s probably worth actually expending a bit of physical effort. Even so, after 6 months they’re down to about 0,001%.

      1. Obviously, this is a bit of an over simplification as in reality the decision making process is a lot more complicated and weighted by certain variables like, for example, the need for some physical exercise. Some ideas inevitably get fast tracked if they are time sensitive like the need to rush to the local Lidls discount store before the reduced price pickled gherkins run out.

  2. It’s one of the reasons I dislike patents.
    Inventions are usually made when the time is right, and quite often very similar things have been invented independently around the world at about similar times.

  3. The fact that basic building blocks are independently reinvented so frequently may mean that even current high-level programming languages are working at too low level. Libraries provide high-level routines for most tasks, but still require rewriting (or copying) the code used to call them. This is currently what copilot and similar AI solutions are relatively good at, but if it is that trivial, why is there so much typing in the first place?

    1. The problem with libraries is they are too large and encompass too many things. We have all seen a python scripts that imports everything under the sun and uses maybe one tiny thing from each. Why do that when you can be much more efficient writing those pieces on their own?

      Put another way it is like nodejs, which many folks use for the simplest stuff despite it basically running an entire web browser to do that simple stuff.

      I don’t know when optimization went out the window, but I am not a fan of throwing it out in favor of the “easier” ability to write code.

      1. Saying nodejs implements an entire browser is an overstatement. Node only uses the JavaScript engine from the browser, with no knowledge of DOM or graphics rendering, etc. Both projects have diverged further over time as Node was optimized to run in Function As A Service systems and other highly optimized systems.

        That nitpicking aside… You’re 100% right that the library ecosystem encourages importing more code than is necessary. A lot of that is removed via tree-shaking if you use any kind of build tool, but that’s an extra step. It’s a difficult balancing act… I’ve written my own libraries to avoid importing a larger public library, but in the end I often end up scrapping my custom solution and using the library instead. Edge cases bite you in the butt. For example, I used low level code to make HTTPS requests. That worked fine for most purposes, until I hit a REST API that returned a 304 Not Modified HTTP response code. I hadn’t anticipated that response, so my catch all counted it as an error response. A larger code library takes all these things into consideration, becoming bloated by necessity.

  4. Like Tesla and Roentgen and Xrays. Things like this happen when you are working with stuff that is new…sometimes there are things that get stumbled upon at the same time if 10s or 100s of people are working with the same or similar tech.
    Sometimes there are obvious logical progressions.

    Of course, you could go with the notion of Synchronicity as C.G. Jung proposed. I believe many have similar beliefs too about collective conscience.

  5. “Steam-engine-time is another name for technological determinism, which is another way to say simultaneous independent invention, Turns out simultaneous parallel discovery and invention are the norm in science and technology rather than the exception (see my previous post).

    When it is steam-engine-time, steam engines will occur everywhere. But not before. Because all the precursor and supporting ideas and inventions need to be present. The Romans had the idea of steam engines, but not of strong iron to contain the pressure, nor valves to regulate it, nor the cheap fuel to power it. No idea – even steam engines — are solitary. A new idea rests on a web of related previous ideas. When all the precursor ideas to cyberspace are knitted together, cyberspace erupts everywhere. When it is robot-car-time, robot cars will come. When it is steam-engine-time, you can’t stop steam engines.”

    Right now it is social-media-time.

    From https://kk.org/thetechnium/steam-engine-ti/

  6. That’s a widespread myth that made the Internet seem so mystical and powerful. I wonder if it’s origins are in the science community, where citing and novelty are so important.

    But if that was really the case, why are there still so many projects and questions with no solutions. Several attempts and partial solutions may exist, but there is also often completely novel ideas, you just lack time to implement.

    And even when searching far and wide, many of those ideas I had (that would be useful) have not been implemented yet (at least given extensive web searches).

    Parallel inventions may happen if you read what everyone reads, learn what everyone learns, and think in typical frameworks, but if you don’t you get many new ideas easily enough.

    The tricky part is thinking them through and implementing them.

    Sure, you can always say you use existing building blocks, but that’s almost inevitable, since we are a tools based species. But lots of similar and parallel inventions at the same time? I don’t think so if you look closely.

    1. ” where citing and novelty are so important.” I meant that citing other works and making a bibliography so you are sure you didn’t miss anyone else who did something remotely similar is seen as so important, as well as outline what your contributions were.

      But usually in science you focus on really very small and incremental progress, which is very different in software development.

  7. This might not be just random. This is known as the “morphic resonance” a theory developped by Rupert Sheldrake. And that explains well why humans but also animals and vegetals can reproduce simulatenously the same invention although there is no communication between them.

Leave a Reply to NoneCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.