Negative review service

Humans move toward balance. After you stare at a white wall for a while, everything around you seems dim. And after you stare for a while at a green wall, your vision becomes more sensitive to red.

Sounds seem louder after a quiet interlude. Food seems to taste more bland right after you’ve eaten a heavily seasoned meal.

All of this makes sense. After all, we humans are, quite literally, walking balance machines. If we weren’t, we’d fall over.

I saw Suicide Squad today with a friend who had read many of the uniformly negative reviews. I had read no reviews. She liked the movie more than I did, and we both conjectured that this was related to those reviews.

The entire time she was watching the movie, she told me afterward, she’d been thinking “This isn’t nearly as bad as the reviewers had made it out to be.” Faced with harsh words about a movie that she found enjoyable in places, she found herself coming to its defense.

My conclusion from this is that somebody should do us all the service of publishing only uniformly negative reviews of every new film that comes out. Before we go to any movie, we can read its reliably negative review. We can then be confident that we will end up enjoying the movie more than we would have otherwise.

Perhaps this service could be rendered algorithmically. On-line reviews could be culled from other sites, as is done for Rotten Tomatoes. Except only the negative reviews would be kept. On this site, you could be sure that the tomatoes would always be rotten.

This service could eventually be extended to hotels, restaurants, theater, music albums, pretty much anything. Wouldn’t that be great?

Unexpectedly off-line

Today I took a five hour flight on United Airlines which had been billed as an internet-access flight. So I dutifully paid my $14.99 for internet access. My card was charged, but there was no internet.

I mean, the on-board server thought it was talking to the internet, but it couldn’t connect to any actual external server. Figuring there might be something amiss with my computer, I powered down and restarted. No change.

At some point I told a flight attendant. She went up to the front of the plane to check. “It’s working,” she said. “The lights are all on.” I explained that I couldn’t actually connect to anything. This did not satisfy her. “It’s working,” she again explained patiently, “the lights are all on.” Clearly we were at an impasse.

So I went to Plan B. I paid another $4.99 for one hour of internet access on my SmartPhone (at this point we were most of the way through the flight). Same result.

I am assuming United will refund my $18.98. We shall see. Meanwhile, I got five hours of all sorts of debugging and code re-organization done on my computer that I never seem to have time for when I am on-line. So maybe that’s a good thing. 🙂

Sharing parts of documents

I made a to-do list for myself recently, to help me organize a particularly busy day. As I often do, I wrote it as a Google Doc.

I like having a document on the web, since I can then access it from anywhere, and putting everything into a single document makes it easy to move things around, as I organize my thoughts.

I wanted to share parts of this document with some colleagues, but not the whole thing. But Google Docs sets sharing permissions on a per-document basis — not for parts of documents.

It occurs to me that there may not be any tool out there that lets you do that. You can place multiple documents into a folder, giving each document a unique list of “can-edit” or “read-only” collaborators.

But you can’t get that level of control over shareability within a single on-line document. Why hasn’t anyone implemented such a thing yet? Or have they, and I missed it?

Compatibility service

When I write Javascript code for a web page to do things like let the user access their microphone or camera, I end up needing to put in a whole bunch of cases, because I don’t know which version of which browser on which computer is being used.

For example, it might be an old version of Chrome on Android, or last year’s version of Safari on IOS, or the latest version of Internet Explorer on a PC. In each case, there might be a different way to write the code, and my program needs to check for each case and then do the right thing.

But if I leave that program sitting on my web page for a year or two, it starts to break. Standards get upgraded, old software interfaces get retired, and new versions of each browser start to come out, which maybe support this feature but not yet that feature. The same carefully defensive code I wrote last year no longer works for everyone everywhere.

What I really want is a service run by some trusted agent — maybe Google. My web page tells my browser to fetch the latest set of tests from that service provider, and I use those updated tests whenever somebody surfs to my web page. Then it’s that service provider’s responsibility to keep such compatibility tests up to date for all of the web programs written by people like me.

But it has to be a trusted agent, for two reasons: (1) If the site belongs to a company that goes out of business, or some professor who leaves for another University, then the site disappears, and everybody is out of luck; (2) If the site belongs to an entity that is not scrupulously honest, then I might be enabling a “Trojan Horse” that will compromise the security of people who use my web page.

Google is an example of such a trusted agent. It’s not going away any time soon, and it is in the business (literally) of being an honest and impartial broker. If people stop trusting Google to be honest, then those people will stop using it, and its entire ad-based revenue model will fall apart. And its business model depends on being platform agnostic (unlike, say, Apple).

So why isn’t there already such a service? Or is there?

How to make phones better

A friend of mine was complaining the other day that he was always misplacing his phone. All this modern technology is very convenient, but if you can’t find your device, it doesn’t do you much good, does it?

I gave him the following suggestion: Find a sturdy cord, and glue it to your phone. Choose a room in your house that is very convenient — someplace you go all the time, such as your kitchen. Attach the other end of the cord to some handy location in that room.

Now you will always know where to find your phone. When you want to make a call, you will always know exactly where your phone is located. And you will never again need to worry about it getting lost!

It’s amazing how one simple innovation can solve so many problems. I’m astonished that nobody has ever tried something like this before.

😉

Core wars 2016

When you run a program on a modern computer, the operating system puts a “fire wall” around your program. If some software bug causes your program to try to access core memory outside of its alotted area, the operating system prevents that from happening.

These fire walls prevent any individual program from inadvertently wreaking havoc on other programs. They are, essentially, why your entire computer doesn’t crash every time one program malfunctions.

Around forty years ago, in the early days of time-shared computers, the modern computer concept of memory fire walls did not yet exist. So, just for fun, people who did research on computer software created a game called “core wars”.

Each contestant would write a program that tried to fill up all of core memory. If your program was able to grow and fill up all of core memory before anybody else’s then you won the game.

As programmers developed ever more subtle tricks to figure out what was going on in each others’ programs, and use that knowledge to disable their opponents, the programs grew ever larger ane more complex. Until one day somebody had a different idea.

They just wrote an extremely stupid and tiny program that didn’t care about the other programs at all. It worked like a virus, rapidly replicating itself throughout all of memory before any of the other programs had a chance to respond.

And that was it — core wars was over. It turned out that “attacking with stupidity” was the ultimate weapon.

As far as I can tell, this is the campaign strategy of Donald Trump. His take on the issues is essentially random and ever-changing, because specific political positions don’t actually matter to him.

What does matter is taking down his opponents, so quickly and unexpectedly, that they don’t have time to draw a breath. Whether it’s the family of Ted Cruz, the manhood of Jeb Bush, or his now scattershot insults to Hillary Clinton, his strategy is to strike fast and aim low. He seems to do this apparently entirely on instinct, like a shark following a trail of blood.

This strategy can be effective not because of anything Trump actually says or stands for, but because viruses can be deadly. Fortunately, I think Hillary Clinton has a particularly hardy resistance to this particular strain of viral infection.

Singular expectations

There is a concept, with which some of you are familiar, of the “Singularity”. The basic premise, espoused by a movement led by Ray Kurzweil, is that technology is advancing at a hyper-exponental rate.

This premise leads to all sorts of interesting consequences. One consequence,for example, would be that medical technology will soon advance to the point where there will be no disease: Millions of tiny nano-bots will continually course through your bloodstream, efficiently correcting any organic dysfunction they may find.

By Kurzweil’s estimate, we will reach the Singularity around 2045. If you’ve managed to stay alive until that year, advanced technology will then allow you to achieve immortality.

I find my reaction to this scenario to be complex. Even if I make it as far as 2045, I don’t really want to live forever. I just want to outlive Ray Kurzweil.

Best quote

The keynote speaker at SIGGRAPH 2016 was Nagin Cox, of NASA’s Jet Propulsion Laboratory. She gave a wonderful talk. And produced my favorite quote of the conference.

You might think that there is a big difference between space scientists and computer scientists. But as she described running a team of brilliant engineers to put a rover on Mars, or to send space probes to Jupiter, I realized that there are more commonalities than differences.

One quote summed it up nicely. As Dr. Cox explained that the journey of the Mars Rover from the Earth to the red planet took seven months, she explained the “just in time” style of creating software for different parts of the ambitious voyage.

“We don’t need to have the landing software written when we launch,” she said. “We just need to have it written when we land.”