Do tech companies really need more vaginas, dark skin, and gray beards?

We need to get to the bottom of the issue about diversity in the software industry.

It’s not that software companies simply need to hire more people who possess vaginas, dark skin, or grey beards…to reach some kind of quota, or to make their About page look hip. It’s that software companies need to embrace diversity in ways of thinking, life experience, socio-economic backgrounds, ways of building things, and ways of setting priorities. This might result in some outwardly-visible diversity, as a by product. But in my opinion, that’s not the point.

Software increasingly runs our lives – EVERYONE’S LIVES – including people who possess vaginas, dark skin, and gray beards. One should not assume that all those young overpaid white males who would sooner send you a Slack message than look you in the eye are going to know how to build the tools that are running more and more of our lives….

…in a country that is becoming more diverse, not less – a fact that the United States Bollocks in Chief is clearly not happy about.

Building Diversity Where it Matters

Sure, there tends to be more diversity in design, business, and marketing departments, but these aspects of a tech company generally get established after the DNA of the company has been forged. The DNA of a software company is typically established when wealthy white male venture capitalists invest in wealthy white male programmers who (sometimes) become more wealthy, after which time they start new companies using their wealth. They hire their wealthy white male programmer friends (who can work without salary in exchange for shares – thereby becoming more likely to acquire more wealth).

Follow the money.

A slightly more diverse company is then built around this core of wealthy white males. Then a slick, mobile-friendly web page is erected, featuring high-res photos of gleeful African Americans and Chinese women. Maybe an Indian. And (occasionally) the token graybeard.

Dynastic Privilege

It’s the same phenomenon that drives wealth inequality in our country. Unchecked capitalism is fueling an oligarchy that is inhibiting the American Dream for those who find themselves on the losing end of financial opportunity.

Did I just change the subject from tech company diversity to wealth inequality in the United States? No: it’s the same subject.

“I believe dynastic privilege is one of the major contributors to the lack of diversity in tech” – Adam Pisoni

So, instead of talking about skin color, gender, and age, we should be talking about the deeper underlying cultural and economic forces that make it so hard for tech companies to change their DNA.

Please reply with your comments. Agree or disagree. Either way, I’d love to hear your thoughts!


Having sex with robots to save the planet

Long long ago, there was an accident in a warm puddle. A particular molecule – through some chance interaction with the soup of surrounding molecules – ended up with a copy of itself. Since the surrounding soup was similar to the original, the copy was more likely to replicate itself. And so it did. The rest is history. We call it evolution.

It is possible that similar accidents happened elsewhere around the same time – not just in one single puddle. One could also say that variations of this accident are still happening – only now at a massive scale.

Every act of every living thing can be seen as an elaboration of this original act. Self-replication is the original impetus of all life. We share a common ancestor with amoebas – who replicate asexually. The invention of sexual reproduction boosted genetic creativity. More recently in the scope of Earth’s history, creativity escaped the confines of genetics. We humans are the primary hosts of this creative engine.

Human beings have contrived all of the resulting aspects of survival to an art-form. This includes – not just the act of sex – but also the act of preparing food (cuisine), the act of making sounds and speaking (music and singing), and the act of altering the environment to create new structure (visual art). The abstractions and representations of the world that the brain generates via the body are derivations and deviations from the original acts of survival. It’s a form of self-replication.

The emergence of abstractions, mental models, and representations is increasing in complexity. This is an inevitable one-way blossoming accelerated by the emergence of the animal brain. The human experience is conflicted; we are oriented toward achieving escape velocity from Original Nature, but we also long for Original Nature. How can we resolve this conflict?

The original act of self-replication has powerful repercussions – billions of years after the original accident – it has taken on many forms. It is the reason we humans have strange phenomena like orgasm. And selfies.


We are at a crossroads in the history of life on Earth. The current era of global warming is almost certainly the result of the overpopulation and hyperactivity of humans, who have released – and continue to release – too much carbon into the atmosphere. One effective solution to global warming would be to reduce the primary agents of the fever…to reduce human population.

And so, converting that original act of replication into works of art is not just creative and exciting: it may be necessary. Humans must transcend the Earthly act of self-replication in order to preserve the health of the planet.

The future of sex will be…let’s just say…interesting. Every cell in our body contains the blueprint of a desire to replicate. Nature and society are structured around the elaborate machinery that has emerged to ensure self-replication – of human bodies and culture. This desire has made its mark on every aspect of society – even if we don’t recognize it as such. We cannot escape it. And so we need to virtualize it, because self-replication of human beings (physically) has become a threat to the planet that sustains us. It’s our duty to Mother Earth.

I am a living organism and so I have to contend with this crazy desire to replicate. Note: I am childless. I have never replicated my genes and have no intention to do so at this stage in my life. But I am passionate about replicating ideas, art, words, and software.

Now, what about the title of this blog post? Will people eventually start having sex with robots? It will certainly be more subtle than that. In fact, it has been said that by the time we get to that point, WE will be the robots.

Is this the kind of future I want? Strangely, yes. Because I will have long returned to the Earth – my molecules will have been handed down through generations of living things. I will be a part of Earth’s physiology. My tribe will be bigger than humanity.

One of my molecules may even end up in a warm puddle somewhere.

The Miracle of My Hippocampus – and other Situated Mental Organs

I’m not very good at organizing.

pilesThe pile of papers, files, receipts, and other stuff and shit accumulating on my desk at home has grown to huge proportions. So today I decided to put it all into several boxes and bring it to the co-working space – where I could spend the afternoon going through it and pulling the items apart. I’m in the middle of doing that now. Here’s a picture of my progress. I’m feeling fairly productive, actually.

10457290-Six-different-piles-of-various-types-of-nuts-used-in-the-making-of-mixed-nuts--Stock-PhotoSome items go into the trash bin; some go to recycling; most of them get separated into piles where they will be stashed away into a file cabinet after I get home. At the moment, I have a substantial number of mini-piles. These accumulate as I sift through the boxes and decide where to put the items.

Here’s the amazing thing: when I pull an item out of the box, say, a bill from Verizon, I am supposed to put that bill onto the Verizon pile, along with the other Verizon bills that I have pulled out. When this happens, my eye and mind automatically gravitate towards the area on the table where I have been putting the Verizon bills. I’m not entirely conscious of this gravitation to that area.

Gravity Fields in my Brain

What causes this gravitation? What is happening in my brain that causes me to look over to that area of the table? It seems that my brain is building a spatial map of categories for the various things I’m pulling out of the box. I am not aware of it, and this is amazing to me – I just instinctively look over to the area on the table with the pile of Verizon bills, and…et voilà – there it is.

Other things happen too. As this map takes shape in my mind (and on the table), priorities line up in my subconscious. New connections get made and old connects get revived. Rummaging through this box has a therapeutic effect.

The fact that my eye and mind know where to look on the table is really not such a miracle, actually. It’s just my brain doing its job. The brain has many maps – spatial, temporal, etc. – that help connect and organize domains of information. One part of the brain – the hippocampus – is associated with spatial memory.


User Interface Design, The Brain, Space, and Time

I could easily collect numerous examples of software user interfaces that do a poor job of tapping the innate power of our spatial brains. These problematic user interfaces invoke the classic bouts of confusion, frustration, undiscoverability, and steep learning curves that we bitch about when comparing software interfaces.

This is why I am a strong proponent of Body Language (see my article about body language in web site design) as a paradigm for user interaction design. Similar to the body language that we produce naturally when we are communicating face-to-face, user interfaces should be designed with the understanding that information is communicated in space and in time (situated in the world). There is great benefit for designers to have some understanding of this aspect of natural language.

Okay, back to my pile of papers: I am fascinated with my unconscious ability to locate these piles as I sift through my stuff. It reminds me of why I like to use the fingers of my hand to “store” a handful of information pieces. I can recall these items later once they have been stored in my fingers (the thumb is usually saved for the most important item).

Body Maps, Brain, and Memory


Screen Shot 2016-02-07 at 9.03.46 PMLast night I was walking with my friend Eddie (a fellow graduate of the MIT Media Lab, where the late Marvin Minsky taught). Eddie told me that he once heard Marvin telling people how he liked to remember the topics of an upcoming lecture: he would place the various topics onto his body parts.

…similar to the way the ancient Greeks learned to remember stuff.

During the lecture, Marvin would shift his focus to his left shoulder, his hand, his right index finger, etc., in order to recall various topics or concepts. Marvin was tapping the innate spatial organs in his brain to remember the key topics in his lecture.

My Extended BodyMap

18lta79g5tsytjpgMy body. My home town. My bed. My shoes. My wife. My community. The piles in my home office. These things in my life all occupy a place in the world. And these places are mapped in my brain to events that have happened in the past – or that happen on a regular basis. My brain is the product of countless generations of Darwinian iteration over billions of years.

All of this happened in space and time – in ecologies, animal communities, among collaborative workspaces.

Even the things that have no implicit place and time (as the many virtualized aspects of our lives on the internet)… even these things occupy a place and time in my mind.

Intelligence has a body. Information is situated.

Hail to Thee Oh Hippocampus. And all the venerated bodymaps. For you keep our flitting minds tethered to the world.

You offer guidance to bewildered designers – who seek the way – the way that has been forged over billions of years of intertwingled DNA formation…resulting in our spatially and temporally-situated brains.


We must not let the no-place, no-time, any-place, any-time quality of the internet deplete us of our natural spacetime mapping abilities. In the future, this might be seen as one of the greatest challenges of our current digital age.


Failure and Recovery – an Important Concept in Design..and Life

I have observed that good design takes into consideration two important aspects of use:

  1. Failure Rate
  2. Recovery Rate

Well-designed products or software interfaces have low failure rates and low failure amounts. This is related to the concept of fault tolerance. A well-designed product or interface should not fail easily, and failure should not be complete.

“If its operating quality decreases at all, the decrease is proportional to the severity of the failure, as compared to a naively designed system in which even a small failure can cause total breakdown.”

A well-designed product or interface should also be easy to recover from failure.

81oCqPfe5wL._SX522_I recently bought a set of headphones. These were good headphones in most respects…until they broke at the complicated juncture where the ear pieces rotate. Once these headphones broke, there was really nothing I could do to fix them. But I decided to try – using a special putty that dries and holds things into place.


photoIt took a long time to figure out how to do this. When I finally repaired the broken part, I realized that the wires had been severed inside. There was no sound coming through. I had no choice but to put them into the garbage bin where they will contribute to the growing trash heap of humanity. Bad design is not just bad for consumers: it’s bad for the planet.

While most people (including myself) would claim that Audio Technica headphones are generally well-designed, we are usually not taking into account what happens when they break.

13687716887463pSometimes the breakdown is cognitive in nature. There’s a Keurig coffee machine at work. It uses visual symbols to tell the user what to do.

As I have pointed out in another article, visual languages are only useful to the extent that the user knows the language. And designers who use visual language need to understand that natural language includes how something behaves, and shows its internal states, not just what kinds of icons is displays on its surface.

The Keurig coffee machine is a nice specimen in many respects. But I had discovered that if I apply the necessary actions in the wrong order, it fails. Namely: if I add the little coffee supply and press down the top part before the water has finished heating up, it doesn’t allow me to brew the coffee.

So…after the water finished heating up, I saw the buttons light up. “Cool” – I said.

But nothing happened when I pressed a button to dispense the coffee. “WTF” – I said. Then I decided to open up the lid and close it again. That did the trick. The lights started blinking. But I was not satisfied with the solution. The discoverability of this bit of behavioral body language ranks low on my list.

Hint: “Blinking Lights” Means “You Can Press a Button”

I have to say, though: I have experienced worse examples of undiscoverability with appliances – especially appliances that are so simple, sleek, and elegant that they have no body language to speak of. This infuriates me to no end. It is not unlike the people I meet on occasion who exhibit almost no body language. It makes me squirm. I want to run away.

Now, thanks to YouTube and the interwebs in general, there are plenty of people who can help us get around these problems…such as this guy who has a solution to a related blinking light problem:

Screen Shot 2016-01-31 at 12.04.09 PM

I realize there are not many people who are bringing up this seemingly small problem. But I bring it up because it is just one of many examples of poor affordance in industrial design that are so small as to be imperceptible to the average user. However, the aggregate of these small imperceptible stumbles that occur throughout our lives constitutes a lowering of the quality of life. And they dull our sense of what good design should be about.

Tiny Rapid Failures and Tiny Rapid Recoveries

148159580_GeneralBicycleNow consider what happens when you ride a bicycle. When riding a bike, you may occasionally lose balance. But that balance can easily be recovered my shifting your weight, turning the wheel, or several other actions – many of which are unconscious to you.

Think of riding a bike as a high-rate of tiny failures with a high-rate of tiny recoveries.

Taken to the extreme: a bird who is standing on one leg has neuromuscular controls that are correcting the balance of the bird’s center of gravity at such a high rate and in such tiny amounts, that we don’t even notice it (and neither does the bird).


Natural Affordance: Perceived Signifiers

User interfaces (in computer software as well as in appliances) should use natural affordances whenever possible so that users can make a good guess as to whether something is about to fail, whether it is failing, how much it is failing, and how to recover.

The best design allows for rapid, and often unconscious correction while using the product. Good design is invisible!

Donald Norman brought some of these ideas to the fore when he wrote the Design of Everyday Things. We still have a lot to learn from his teachings.

Design is a way of life. If you design your life with resilience in mind – with the ability to recognize failures before they happen, and with the ability to recover from those failures, you will live a better life. The same goes for designing the technology that increasingly fills our lives.

Why is it a Color “Wheel” and Not a Color “Line”?

This blog post was published in May of 2012 on EyeMath. It is being migrated to this blog, with a few minor changes.

I’ve been discussing color algorithms recently with a colleague at Visual Music Systems.

We’ve been talking about the hue-saturation-value model, which represents color in a more intuitive way for artists and designers than the red-green-blue model. The “hue” component is easily explained in terms of a color wheel.

Ever since I learned about the color wheel in art class as a young boy, I had been under the impression that the colors are cyclical; periodic. In other words, as you move through the color series, it repeats itself: red, orange, yellow, green, blue, violet…and then back to red. You may be thinking, yes of course…that’s how colors work. But now I have a question…


Consider five domains that can be used as the basis for inventing a color theory:

(1) the physics of light, (2) the human retina, (3) the human brain, (4) the nature of pigment and paint, and (5) visual communication and cultural conventions.

(1) In terms of light physics, the electromagnetic spectrum has a band visible to the human eye with violet at one end and red at the other. Beyond violet is ultraviolet, and beyond red is infrared. Once you pass out of the visible spectrum, there aint no comin’ back. There are no wheels in the electromagnetic spectrum.

(2) In terms of the human retina, our eyes can detect various wavelengths of light. It appears that our color vision system incorporates two schemes: (1) trichromatic (red-green-blue), and (2) the opponent process (red vs. green, blue vs. yellow, black vs. white). I don’t see anything that would lead me to believe that the retina “understands” colors in a periodic fashion, as represented in a color wheel. However, it may be that the retina “encourages” this model to be invented in the human brain…

(3) In terms of the brain, our internal representations of color don’t appear to be based on the one-dimensional electromagnetic spectrum. Other factors are more likely to have influence, such as the physiology of the retina, and the way pigments can be physically mixed together (a human activity dating back thousands of years).

(4) Pigment and paint are very physical materials that we manipulate (using subtractive color), thereby constituting a strong influence on how we think about and categorize color.

(5) Finally: visual communication and culture. This is the domain in which the color wheel was invented, with encouragement from the mixing properties of pigment, the physiology of the retina, and the mathematical processes that are formulated in our brains. (I should mention another influence: technology…such as computergraphical displays).


Consider the red-green-blue model, which defines a 3D color space – often represented as a cube. This is a common form of the additive color model. Within the volume of the cube, one can trace a circle, or a hexagon, or any other cyclical path one wishes to draw. This cyclical path defines a periodic color representation (a color wheel). A volume yields 2D shapes, traced onto planes that slice through the volume. It’s a process of reducing dimensions.

But the electromagnet spectrum is ONE-DIMENSIONAL. The physical basis for colored light cannot yield a higher-dimensional color space. The red-green-blue model (or any multi-dimensional space) therefore could not originate from the physics of light.


An alternate theory as to the origin of the color wheel is this: the color wheel was created by taking the two ends of the visible spectrum and connecting them to form a loop (and adding some purple to form a connective link). I just learned that Purple is NOT a spectral color (although “violet” is :) Purple can only be made by combining red and blue. Here’s an explanation by Deron Meranda, in a piece called…


And here’s a page about how purple is constructed in the retina: HOW CAN PURPLE EXIST?

Did the human mind and human society impose circularity onto the color spectrum in order to contain it? Was this encouraged by the physiology of our eyes, in which various wavelengths are perceived, and mixed (mapping from a one-dimensional color space to a higher-dimensional color space)? Or might it be more a matter of the influence of pigments, and the age-old technology of mixing paints?

Might the color wheel be a metaphorical blend between the color spectrum and the mixing behavior of pigment?

Similar questions can be applied to many mathematical concepts that we take for granted. We understand number and dimensionality because of the ways our bodies, and their senses, map reality to internal representations. And this ultimately influences culture and language, and the ways we discuss things…like color…which influences the algorithms we design.


………….. The Beauty of Gray Code …………..











Gray Code is an alternative binary representation, cleverly devised so that, between any two adjacent numbers, only one bit changes at a time. If there is an error reading any bit that has changed then, at worse, the read value will never be out by more than one unit.

This has tremendous value in the real world. Computers might be digital, but we live in an analog world. Interfaces between these need to be carefully considered.


Why Having a Tiny Brain Can Make You a Good Programmer

This post is not just for software developers. It is intended for a wider readership; we all encounter complexity in life, and we all strive to achieve goals, to grow, to become more resilient, and to be more efficient in our work.


Here’s what I’m finding: when I am dealing with a complicated software problem – a problem that has a lot of moving parts – many dimensions, I can easily get overwhelmed with the complexity. Most programmers have this experience when a wicked problem arises, or when a nasty bug is found that requires delving into unknown territories or parts of the code that you’d rather just forget about.

Dealing with complexity is a fact of life in general. What’s a good rule of thumb?


parts-of-the-brainWe can only hold so many variables in our minds at once. I have heard figures like “about 7”. But of course, this begs the question of what a “thing” is. Let’s just say that there are only so many threads of a conversation, only so many computer variables, only so many aspects to a system that can be held in the mind at once. It’s like juggling.

Most of us are not circus clowns.

Externalizing is a way of taking parts of a problem that you are working on and manifesting them in some physical place outside of your mind. This exercise can free the mind to explore a few variables at a time…and not drop all the balls.

Dude, Your Brain is Too Big

I have met several programmers in my career who have an uncanny ability to hold many variables in their heads at once. These guys are amazing. And they deserve all the respect that is often given to them. But here’s the problem:

kim_peekPeople who can hold many things in their minds at once can write code, think about code, and refactor code in a way that most of us mortals could never do. While these people should be admired, they should not set the standard for how programming should be done. Their uncanny genius does not equate with good engineering.

This subject is touched-upon in this article by Levi Notik:

Screen Shot 2015-04-01 at 9.47.43 AM

who says: 

“It’s not hard to see why the popular perception of a programmer is one of some freak genius, sitting by a computer, frantically typing while keeping a million things in their head and making magic happen”

wsshom1A common narrative is that these freak geniuses are “ideal  for the job of programming”. In some cases, this may be true. But software has a tendency to become complex in the same way that rain water has a tendency to flow into rivers and eventually into the ocean. People with a high tolerance for complexity or a savant-like ability to hold many things in their minds are not (I contend) the agents of good software design.

I propose that people who cannot hold more than a few variables in their minds at once have something very valuable to contribute to the profession. We (and I’m taking about those of us with normal brains…but who are very resourceful) have built a lifetime’s worth of tools (mental, procedural, and physical) that allow us to build complexity – without limit – that has lasting value, and which other professionals can use. It’s about building robust tools that can outlive our brains – which gradually replace memory with wisdom.

My Fun Fun Fun Job Interview

I remember being in a job interview many years ago. The guy interviewing me was a young cocky brogrammer who was determined to show me how amazingly clever and cocky he could be, and to determine how amazingly clever and cocky I was willing to be. He asked me how I would write a certain algorithm (doesn’t matter what it was – your typical low-level routine).

Well, I was stumped. I had nothing. I knew I had written one of these algorithms before but I couldn’t for the life of me remember how I did it.

Why could I not remember how I had written the algorithm?

Because I did such a good job at writing it, testing it, and optimizing it, that I was able to wrap it up in a bow, tuck it away in a toolbox, and use it for eternity – and NEVER THINK ABOUT HOW IT WORKED ANY MORE.


“Forgetting” is not only a trick we use to un-clutter our lives – it actually allows us to build complex, useful things.

Memory is way too precious to be cluttered with nuts and bolts.

tech_brogramming10__01a__630x420Consider a 25-year-old brogrammer who relies on his quick wit and multitaskery. He will not be the same brogrammer 25 years later. His nimble facility for details will gradually give way to wisdom – or at least one would hope.

I personally think it is tragic that programming is a profession dominated by young men with athletic synapses. (At least that is the case here in the San Francisco Bay area). The brains of these guys do not represent the brains of most of the people who use software.

Over time, the tools of software development will – out of necessity – rely less and less on athletic synapses and clever juggling, and more on plain good design.