Frames

A week ago I purchased a pair of Bose Frames. They are innovative in that they look just like an ordinary pair of glasses, yet they have a superpower: They beam high quality stereo sound into your ears from the two earpieces.

During my recent trip to France, I proceeded to walk around Paris wearing them all week while listening to music. Now, back in Manhattan, I continue to listen to music with my Frames every day.

This was very surprising to me, because for years I have thought of myself as the sort of person who never walks around listening to music. So what is different now?

Well, two things. First, since the Frames don’t cover your ears, there is no disconnect with the world around you. You can still hear traffic, conversations, all of the details of the city. As an inveterate pedestrian, that just makes me feel safer.

The second thing is that there is no “social signaling” involved. Since the Frames just look like an ordinary pair of glasses, they are not telling the world “this person has checked out of reality.” I like that.

In my opinion, they may be the first truly successful wearable input device. For that reason, I think they represent an important milestone in the march to future reality.

Ascending algorithmically

I’ve never done any real rock climbing, and have very little first hand experience with climbing walls. So my knowledge is mainly from reading and watching others.

I’m always amazed by people who have the physical stamina and concentration to climb up a rock face. To witness such an ascent is a thing of beauty, as the climber strategically works his or her way up the wall, shifting positions to make best use of a handhold here, a foot support there.

Sometimes when I am writing software it can feel like I am climbing a sort of mental rock face. Each iteration of the program gets me to the next safe handhold, but then I need to rest for a while and think about my next move.

That’s because every step in software development needs to produce a valid program. If you make a wrong move and break the program, you’ve pretty much fallen off the mountain.

Which means you need to be strategic. You can’t afford to move too quickly, since you always need to think several steps ahead to make sure you’re not ascending into an impasse.

So here we have two extremely different human activities — programming and rock climbing — that share certain qualities. I wonder whether there is some way to combine them.

What would it be like to program while rock climbing? Hmmm…

A conversation

About two years ago my cousin, who was the cameraman on a film shoot in Miami, told me about a conversation he had recently had with another member of the crew.

His colleague was from Mexica, so naturally he had been following the various pronouncements from our then-new president. In particular he was interested in our president’s promise that he would build a border wall and make Mexico pay for it.

My cousin said that his colleague had told him: “I don’t understand why we are supposed to pay for the wall. After all, we are already paying for the tunnels.”

The connecting threads

We wonder at the connecting threads, those tenuous lines that bind us, one human to another. We fret over their design, their weave. We check for breaks, for a tear in the fabric.

They is our most powerful connection, yet our most fragile. For what are two humans but two infinite minds and souls reflected one to other, a mirrored room that seems to stretch out forever, like a thread unspooling to infinity?

Sometimes I lie awake at night and wonder, will all these threads suddenly fly apart, releasing us into the void? How can we know that we are safe and secured.

How can we know that we will not simply rise up, in a single decisive moment breaking the thread that holds us here, and waft above the tree line, till we are gone?

The usefulness of jet lag

Since I have been back from Europe — which is six hours ahead of NY — I have found myself growing very tired early in the evening. I am writing this at around 7pm NY time, and already I am feeling quite sleepy.

Conversely, every morning I find myself waking up at around 5am. None of this is a bad thing.

I tend to be a lot more clear-headed in the mornings, so these last few days have been enormously productive. Fortunately I had the foresight not to schedule anything in the evenings these first few days that I’m back from Europe.

So when I leave the lab each day I simply sink into blissful slumber. Then I wake up bright and early the next morning and get enormous amounts of work done.

I realize this state won’t last. In another day or so my body will adjust to the shifted pattern of sunlight. But while it lasts, it sure is convenient!

The best thing to think about

When your medium is computer programming there is a strong tendency to think in terms of how things work. After all, there can be many complex parts involved in a successful piece of computer software, and creating a system that works well is a source of pride.

But this tendency to focus on the beauty of one’s algorithm or implementation has a potential downside: It can come at the expense of a clear focus on the actual user experience.

I often see this tendency in my computer science students. They strive so hard to build something that works, then afterward they say “Look at this thing I created, it functions perfectly. Isn’t it wonderful?” Alas, all too often it isn’t wonderful — at least not to anybody who actually tries to use it.

This is one reason it is a good idea to spend time with creative people who don’t know or care how your software works. It’s actually great when somebody doesn’t have the faintest idea how you did something, because they cannot be blinded by the beauty of your algorithm or your implementation.

All they see is what your creation actually does, and all they think about is what they could use it for. Which is really the best thing to think about.

International flight

An international flight can be wonderful, if you plan it right. Of course you need to plan it right.

For one thing, you need to fly mid-week, when most people don’t travel. That strategy often places you on a fairly empty flight.

Then, if you pick the right airline (for example, Air France), they let you change your seat up to the last minute. That means you can pretty much guarantee that there will be an empty seat next to you.

Next, you need to make sure you’ve got a list of things you really wanted to do. This is your time to do them.

Because a beautiful thing about air travel is that you have a perfect excuse to be off the internet. So if there was something you really wanted to get done, and just needed uninterrupted time to do it, nobody is stopping you.

If you plan a long flight properly, it can be a little slice of heaven.

Now if only somebody could do something about the really annoying bits before and after the flight. Sigh…

Portrait of a friend

This evening, on my last night in Paris, I went with friends to the Fondation Vuitton to see the amazing and very comprehensive Jean-Michel Basquiat retrospective.

All of the art was powerful and deeply moving, but one painting in particular jumped out at me, because it was so lighthearted compared with most of the other images on display. It was a portrait Basquiat did of a good friend.

What I find wonderful about this portrait is that when you see it, you immediately know exactly who the friend was. And also, it’s very funny. 🙂

basquiat

This evening, at a dinner party in Paris

This evening, at a dinner party in Paris, I learned about Mary Oliver. I learned that she had existed, that she had been a poet whose work was beloved by several of the people in the room, and that she had passed away only three days ago.

So this evening I went on-line and read through much of her poetry, and found it to be deeply moving and inspirational. I will share with you this one, called “The Journey”, which speaks to me in a particularly profound way:

One day you finally knew
what you had to do, and began,
though the voices around you
kept shouting
their bad advice–
though the whole house
began to tremble
and you felt the old tug
at your ankles.
“Mend my life!”
each voice cried.
But you didn’t stop.
You knew what you had to do,
though the wind pried
with its stiff fingers
at the very foundations,
though their melancholy
was terrible.
It was already late
enough, and a wild night,
and the road full of fallen
branches and stones.
But little by little,
as you left their voices behind,
the stars began to burn
through the sheets of clouds,
and there was a new voice
which you slowly
recognized as your own,
that kept you company
as you strode deeper and deeper
into the world,
determined to do
the only thing you could do–
determined to save
the only life you could save.

When I was twelve years old

When I was twelve years old I implemented my very first computer program. I didn’t have any knowledge of programming, and they didn’t teach any courses in our middle school, so I needed to figure it out for myself.

It was an odd little computer, that I just happened to come upon in the school library. It was really more of a programmable calculator with a paper tape that printed numerical results. Its programming language, such as it was, was a kind of weird assembly language — although I wouldn’t learn about the term “assembly language” until some years later.

I decided to write a program to play a game of tic-tac-toe. To do this, I needed to store which of the nine squares had an X, and which squares had an O. Except this little programmable calculator didn’t support arrays, so I had to figure out another way.

If I’d known more, I would have used some kind of binary encoding. But all I knew was that the calculator could store extremely large numbers. So instead I used what now seems like a really crazy scheme.

I figured out that if you multiply any the numbers from 61 through 69 together, you always get a result that isn’t a multiple of any of the numbers you didn’t use. For example, if 61*62*64*66*67 is not a multiple of 63 or 65 or 68 or 69.

This works for any such combination of the numbers 61 through 69. It doesn’t work for any consecutive run of numbers smaller than that — I checked.

I used that scheme to encode which squares had Xs and which squares had Os. After that, it was easy to program a tic-tac-toe game.

Now that I think back on it, this was a very weird approach to the problem of storing combinations of nine numbers in a computer. But hey, it worked!