Beautiful Technology

“The products suck!  There’s no sex in them anymore!” – Steve Jobs, just before his return to Apple (1997)

Why is Apple the only company that makes technology that doesn’t look like it was crafted by robots?  There are several common answers.

1) They control the entire supply chain and are vertically integrated.  This is a fact.  However, I don’t think this answers the right question.  For example, there was a long period (basically when Jobs was absent) when Apple’s products were nowhere near as awesome as they were before and after.  Being vertically integrated allows Apple to exercise a seemingly unmatchable amount of control over their products and keep their costs low.  It doesn’t mean they automatically make better products simply because they’re cheaper.  It just means they have more control and keep costs down.

There’s a quote from Alan Kay that goes like this: “People who are really serious about software should make their own hardware.”  Can you name a single other company that does this?

2) The best designers work at Apple.  I hear this a lot — and I think it’s obvious that it’s not true.  Two things are happening here: Apple has good designers and bad designers, and we see the cream of the crop in Apple products; and lots of good designers never see their ideas pushed into production.  Additionally, a good design isn’t equivalent with a good product.  And what does “design” mean?  It’s not granular enough.  The Newton looked good but sucked.  Why did it suck?  Because while it looked good, it lacked that critical balance of design on the outside and the inside.  The user experience wasn’t there.

3) It’s Steve Jobs.  While the correlation between Apple’s success and Steve Jobs’ presence at the company is undeniable, I am still not convinced Apple will start making shitty products when Steve is gone.  Jobs has spent the past decade and a half working with the entire company to build these great products.  It’s not just him; he’s just the public face.

So what is that balance Apple strikes in order to make beautiful technology?  They took multitasking away from us.  Multitasking.  If you had asked someone in 2001 if it made sense to disable MULTITASKING, they would’ve laughed in your face and called you a charlatan for questioning something so basic to everyday computing.  Why did Apple do it?

They did it by changing the question.  Technology doesn’t exist solely for humans to choose between the best solutions.  That’s what the market is for.  Technology exists to make our lives easier, to take away those pain points.  Once those pain points are identified, technology can make our lives BETTER.  It can connect us with people, but again, those connections aren’t about choice; they’re about the best experience and how to facilitate human connections.

This is what I want to do.  I want to create technology that enhances our lives and makes a difference.  Apple products inspire me because they show that it’s possible to show people something they haven’t seen and didn’t even know they wanted.  I remember trying desperately to convince my parents to buy android devices when they decided to throw away the old flip phones.  After a year and a half, my mother had countless problems.  And she’s a smart woman.  Her email would get screwed up, she’d have to reset her account, constantly couldn’t figure out how to upload a photo somewhere or listen to music.  She wasn’t forgetful; I completely understand her problems here.  It just wasn’t as easy to use as it could be.  At one point, I handed her my iPhone and asked her to check her mail.  She did it with ease.  I then asked her to find me the quickest route to the nearest grocery store (we were in an unfamiliar area) and it worked without a hitch.  She asked no questions, had zero problems, and everything worked.  It was like magic.  A week later she bought an iPhone.

People shouldn’t need to understand how technology works in order to use it.  At all.  I think the biggest reason not many people make sexy technology is because most people making the tech don’t know what’s sexy.  They don’t know how.  Jobs, Ive, and the countless others at Apple know how to do this.

I often get raised eyebrows when I confess my apparent Apple fanboy-ism.  The reason I love Apple products is because I don’t need to understand how they work in order to use them.  Isn’t that the goal of technology?  Apple got it right — choice is only a secondary priority.  The first priority for technology is to make it magical.

A thought on compilers

Compilers are very much like life in that the basic structure is stacks of automata, each consuming the input of its parents or children and producing something that us subsequently consumed by the same components.

Stacks and layers of simple components can produce rock solid results, and rock solid complex results. If complexity is simple on the inside, it’s good. If complexity is complex on the inside, it’s just a mess.

Programming Like Nature

I want to study more nature. I really enjoy how the mechanisms of nature seem to solve problems at every level. Organisms have evolved a staggering amount of complexity, but with incredibly simple underpinnings. Respiration, for example, is pretty simple from a high level, but diving into how it works in depth proves quite complicated. But nutrients in -> energy is pretty simple. Even those complicated inner workings are driven by simple reactions that can be understood very well individually — the complexity comes from how they interact with each other. By understanding the simple rules, we can understand something that looks quite complicated.

Shift to programming nowadays. Everything we write is based upon certain rules. We assume, for example, that defining a function with certain parameters is compiled in such a way that it will always be called with those parameters — this is a necessary precondition that our compilers enforce and make life simple and easy. But our solutions with code are often very buggy and inelegant (some of us more than others!). They don’t always scale well — scaling usually requires many changes, additions, subtractions, and modifications to whatever our infrastructure is.

In nature, evolution serves this purpose. The process of natural selection is the agent of necessary change — if you don’t work, goodbye. Nature is a process, things are consumed and produced. Always. Programming doesn’t really work this way, at least not at a fundamental level. If an organism runs out of food, it dies. If our programs and functions aren’t called, they always sit around waiting for input or to be invoked.

This might be complete nonsense (in fact, it probably is). But I wonder what a software system would look like if it was somehow to inherit these attributes of nature? If a function is never used, perhaps it is discarded. But where do we get the function or module that will replace it? In nature, organisms reproduce. Code doesn’t really do that, at least not in the same way. Genetic algorithms are sort of analogous, but only insofar as they behave like nature. Code itself isn’t actually modified, just the state of the data. The fitness function is always the same, the production process is always the same. Self-modifying code isn’t robust enough, either, for this task. It mainly seems to be used to simplify how things work — not to evolve or consume/produce.

So what would programs consume? What would they produce? At a high level, data is consumed and analysis is produced in the form of (hopefully) value. But again, if information flow stops, programs just wait. This would definitely be a disadvantage, so there would have to be a corresponding advantage. What’s the tradeoff? Is there a way to make programs more efficient, faster, or more reliable if they don’t always assume they’ll be provided with X amount of data? What could they sacrifice?

This has been extremely stream-of-thought. Got to come back and think more about it later.