Everyday Heroes’ Lives Matter

If an adult man with diminished mental capacity sits down in the middle of the street, acting confused and belligerent, it might be necessary to call the police. Ideally, the police would calm the person and get him out of harm’s way. That they manage to perform this kind of task day in and out without anyone getting hurt is one of the reasons we are grateful for their service.

The police’s job is done once they’ve gotten the guy out of the street, but that isn’t where the story ends. Ideally they would then turn the man over to a facility where he could be looked after by level-headed compassionate people who made his well-being their concern. People like Charles Kinsey.

Once again we have video of an unarmed black man being shot by police. As with Philando Castile, the motorist recently killed in Minnesota, Kinsey complied with police orders. It is difficult to imagine what he could have done differently in that situation in order not to get shot. As we’ve come to say, he “did everything right.” But in this case that doesn’t just mean he refrained from any sudden movements.

Watching this video, I don’t just feel sorry for Kinsey, I admire him. He didn’t have to go out into that street. He could have hung back and waited for the cops. When things spiraled out of control, he kept his head, communicated clearly, and did everything he could to deescalate the situation, all while still trying to protect a confused and vulnerable man. We should all be as able to handle ourselves in a crisis as well. Charles Kinsey showed exactly the kind of courage, professionalism, and everyday heroism we expect from a police officer.

I have also been in situations where I had to care for someone who was confused, belligerent, and a possible danger to himself and others. A couple of times I had to call the police, who helped me to the best of their ability. And while I was grateful for their assistance, in the end there was little they could do. We’re law enforcement, they told me flat out. We’re not nurses or social workers. If we tried to be we couldn’t do our job. In the end the people I needed the most weren’t cops, but nursing home attendants. On a day-to-day basis these are the people who make a difference for me and the people I’m responsible for, and they appear to do basically the same work as Charles Kinsey.

Cops have a job that most of us don’t want to do. In part because they subject themselves to possible violence, even risk getting killed. But they do a lot more than that. They handle drunks, domestic arguments, and schizophrenics who shouldn’t be living on the street, but there they are so somebody has to step in when they start yelling at passersby. Police handle situations that never rise anywhere near the level of violence, but still lie at the unpleasant edges of society where the social norms that get the rest of us through the day have broken down. There are a few other professions in this space. EMTs and social workers come to mind—and also behavioral therapists at halfway houses for mentally impaired adults. It’s not a stretch to say that Charles Kinsey and the North Miami police department are doing different aspects of the same job. (Considering how full our jails are of the mentally ill, not much of a stretch at all.) This week Kinsey got shot while doing his job better.

Posted in Belonging to the emperor | Leave a comment

IDEs are Code Smell

A pile of various hand toolsPretty much every computer programmer uses an Integrated Development Environment. Pretty much everyone has their favorite: Eclipse, IntelliJ, Sublime Text, Emacs, Vim. There will never be consensus on which is best. Fortunately there doesn’t have to be. The wide variety of work environments in use in the open source world has forced language designers to invent standard, robust, IDE-agnostic build environments. Java has Maven and Maven archetypes. Javascript has npm and Yeoman. Scala has sbt. These tools allow you create, build, and manage the dependencies of your project without ever touching an IDE.

IDE-independence has a lot of advantages. Command-line only environments play nice with continuous build systems. They make it easier to on-board new developers by removing IDE-specific tweaks that often take root as undocumented lore. They tend to be more stable, more future-proof, and more popular than IDE-specific build techniques. (Which makes a big difference when you have to go ask a question on StackOverflow.) Also, developers have their favorite tools for a reason, and when you force them to use something else it hurts their productivity.

When starting a new software project you should adopt a strict IDE-agnostic policy. The rule is “I shouldn’t be able to tell from anything you check in to source control which IDE (if any) you are using”. Putting this policy into place isn’t hard–it’s just a matter of using the right tools to create a fresh project. After that, things pretty much take care of themselves. A little up-front standardization wards off a lot of build environment technical debt down the line.

Posted in Those that have just broken the flower vase | 3 Comments

I Dream of Digits

Boltz the robot can read digits. If you hold up a handwritten digit in front of him, Boltz will say it aloud. “Two. Five. Two. Seven. Zero.” He is as good at this as a person is. The only digits he gets wrong are ones that are so sloppily written that human beings also find them hard to decipher.

Blue and white NAO robot

Boltz’s “eyes” are cameras that transform handwritten digits into 28×28 grayscale bitmaps. These bitmaps are then sent to a neural network model that has previously been trained on a large set of bitmap/digit-name pairs. In the course of training, the model sets an array of numerical weights which define a function that maps a 28×28 bitmap to one of the categories 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9. This is explained in more detail in the video below by Geoffrey Hinton, the computer scientist who pioneered this particular model.

Sometimes Boltz goes to sleep. His head droops and his camera eyes shut off. Occasionally you’ll hear him quietly name a digit while in this state—“Three…Five…Eight…Two…Three…”—even though he is clearly not looking at anything. In these cases we say that Boltz is dreaming about the digits he saw during his waking hours.

Now “dreaming” is just a fanciful turn of phrase. In reality we don’t know what Boltz is doing. Maybe he stores bitmaps that he has previously seen and later sends them to his digit recognition software, evoking a vocalization just as when the actual picture was in front of him. Or perhaps instead of memorizing exact bitmaps (verbatim, as it were), Boltz is generating an image of a digit. One of the features of Hinton’s model is that it can be run “backwards”: instead of taking a bitmap as input and producing the name of a digit as output, you can start with a digit and produce a bitmap. The fine details of the image are determined randomly, but the array of weights used in recognition guides the random selection so that the end product looks like the digit in question. So Boltz might feed 5 into the back-end of the model, and it would generate an image that—even though nothing exactly like it had ever been produced before—would nevertheless be recognizable to both human and robot as a “5”. Perhaps it is this novel image the sleeping Boltz is then recognizing and saying aloud.

So far we’ve considered that when Boltz dreams his “mind’s eye” either resees an old image or generates a new one. But there is a third possibility. Perhaps, just as in the Hinton-style dream scenario, Boltz starts off by randomly selecting a digit, except then instead of generating an image, he simply says the digit aloud. The output of the random digit generator is sent directly to his speech unit. Boltz is just dreaming the idea of a digit. At no point is there a corresponding image.

If all we had to go on was Boltz talking in his sleep, we’d have no way to distinguish these three processes. A “five” sounds like a “five” sounds like a “five”. So maybe we teach Boltz to draw. We enable him to pick up a pencil and make shadings on a 28×28 grid that correspond exactly to the bitmaps. We then might ask Boltz to draw what he “saw” when he said a certain number while sleeping. We could use these drawings to distinguish between memorized and imagined digits because only the former would exactly match images we had originally presented. But if the drawn digits were novel that would only tell us that they were created by running the recognition model backwards—it wouldn’t tell us when this occurred. Maybe it happened when he was asleep, and Boltz is recalling the generated bitmap from memory. Maybe nothing was generated when Boltz was asleep and he ran his model backwards only after we asked him to draw what he saw. Or maybe Boltz generated a novel image when he was asleep, but only remembered the output of his recognition unit in response to it, so when we ask him to draw what he saw, he generates a different image.

Finally, in a last-ditch attempt to determine what is going on here, we endow Boltz with full powers of comprehension, introspection, and reason. We ask him to draw one of the digits he mentioned in his sleep and then ask him “The digit you just drew—is that what you actually saw, or is it something you’re inventing on the spot right now?” Boltz considers this question for a minute, and then we hear his servo motors whir as he arranges his shoulders and arms into a shrug. It’s adorable.

Posted in Mermaids, Those that have just broken the flower vase | 2 Comments

I Dream of Motorcycles

“Initially” we never hear noises and complexes of sound, but the creaking wagon, the motorcycle. We hear the column on the march, the north wind, the woodpecker tapping, the crackling fire.

It requires a very artificial and complicated attitude in order to “hear” a “pure noise”.

—Martin Heidegger, Being and Time

If you were building a machine to recognize different sounds you would start by setting up a microphone in a field. The audio signal would be digitized, deflections of a membrane translated into voltage levels, and those translated into numbers as a function of time. A computer could then process the numbers. The computer would of course have no concept of what the numbers meant. If a tree fell in the forest next to the field with no one to hear it, it would generate a string of numbers like anything else. This is a “pure noise”.

A microphone framed against a sky with clouds.

For your computer to be useful, you’d have to train it to make distinctions, to categorize the various strings of numbers. Current state of the art would have you collect many thousands of audio samples labeled “north wind”, “woodpecker tapping”, “crackling fire”, and “motorcycle”. Given sufficient examples, you could build a statistical model that mapped a given sequence of numbers to one of these categories. The mapping would be inexact—the statistics would embody a fair amount of guesswork—but that’s fine. That’s life.

There is a notion of sequence here. First there is the raw microphone signal, then there is the sorting into categories. Heidegger also proposes an ordering. (The tipoff: “‘Initially’” gets shudder-quoted.) But he orders things the other way: first there is the motorcycle etc., and then only later—at the cost of a “complicated attitude”—do we have access to the raw signal.

This squares with my experience. Where I sit right now, out in public, carrying on side conversations as I write this, I hear people I know talking first. Only with some effort could I mentally transform that into pure sound that happens to be meaningful. I look around the room and there are people I know, there is the TV, there is the chair, and so on. To see these familiar things as patches of color and spatial relationships from which I could infer daily life—that’s weird. It is an artificial and complicated attitude that I can’t pull off. But then I am a human being, not an instrumented microphone.

There are two options:

  1. Machines are like humans. Raw input precedes meaningful input in some temporal or logical fashion. If I don’t hear the the pure noise, that is only because “hearing” is something that occurs after a fair amount of non-conscious processing has occurred.
  2. Machines are not like humans. Humans can start with a semantic whole—creaking wagon, woodpecker, motorcycle—and work backwards to raw input as needed. Or at least convince themselves that they have done so.

Option (1) appeals to me. My paid job is to make machines appear convincingly human-like, so any congruence works to my advantage. Option (2) seems like a delusion of philosophical idealism. The way to emulate human hearing is to start with a microphone in a field and work from there.

And yet, and yet. Here’s the counterexample. I am dreaming. I am dreaming that I hear a motorcycle. There is no raw external signal: it’s all in my head. Where did it come from? Did my subconscious create the appropriate set of air molecule vibrations to correspond to the sound of a motorcycle engine? If I dream that I see a motorcycle, do I first (“initially”) mentally compose patches of color that correspond to what would occur if a motorcycle were to roll into my visual field? I doubt my ability to do that. Instead, I imagine I dreamed “motorcycle” then filled in the details later, probably after I woke up.

Machines today are not like humans. We dream in concepts.

Posted in Fabulous ones | 4 Comments

Proposed New Vocabulary: Omnispiel

The A recorded phrase that you hear frequently in your daily life. It can’t arrive through media channels, but rather must be part of your immediate physical environment. Most typically a recording attached to some piece of equipment. “Hello and welcome to Car2Go.” “Stand clear of the closing doors please.” You will often repeat the phrase to yourself as you settle into the car, step onto the subway, or what have you. At first you will be making fun of it, but gradually the words will recede, leaving only a familiar cadence, unconscious and physically comforting.

Posted in Mermaids | Leave a comment

Personal Philosopher

  • How do I know I’m not actually dreaming?…$150/hour
  • Is my dog intelligent?…$200/hour
  • Clones…$375/hour
  • Should Neo have taken the blue pill?…$650/hour
  • But is it art?…$850/hour
  • Did you know there’s a tribe in the Amazon that has no word for “regret”? I wonder if they…[Waves hand impatiently] $1500/hour
  • Does God exist?…Contact for rates
Posted in Fabulous ones | Leave a comment

The Meaning of Life

Right-clicking on a highlighted word in my web browser brings up a menu that gives me the option of either looking up that word or searching for it on Google.

the meaning of lifeThe first option returns a dictionary and thesaurus definition.

life definitionThe second opens a web search in a separate tab.

life searchThe former is what most people imagine when they think of the meaning of a word. The latter isn’t its meaning. Instead it is examples of its use, though, being the first page returned by a popular search engine, you can expect these examples to be good ones.

I almost never select the look up option. I frequently select the search option. The former will be highlighted first on the menu, but I’ll move away from it. “Don’t tell me what this word means,” I’ll think. “Show me.”

Posted in Mermaids | 2 Comments