" /> A Programmer's Apology: August 2006 Archives

August 21, 2006

Dark Matter

What we're made of, what everything we can see and touch and feel and smell is made of, is like an impurity in the stuff of the universe, maybe 4%.

The image shows, in xrays in red, the hot gas from two colliding galaxy clusters, with the distinctive bow-shock shape from the collision. In white, we see the visible light from the galaxy clusters. In blue, we see the actual mass distribution, inferrered from gravitational lensing of the background. Read Cosmic Variance and Galactic Interactions for excellent explanations of the observations.

August 18, 2006

Propoganda for young nerds

My favorite e-mails are from students who send me art made in Graphing Calculator. A teacher yesterday sent me this created by one of her seventh grade students. Check out those equations! (You can download the document here if you have Graphing Calculator or the Viewer.)

In 1994, Greg and I wrote:

Toward the end of the development of the Graphing Calculator, as the final user tests were being conducted, we saw students using the Calculator effectively within minutes, without instruction. Watching a high school student say "Wow!" as an equation came to life on the screen was probably the most satisfying moment for us as programmers.

That remains just as true today. I like to tell people that I make math toys. Seeing folks having fun doing math is what makes it all worthwhile.

August 17, 2006

Programming the Universe

Programming the Universe: A Quantum Computer Scientist Takes On the Cosmos reads aloud surprisingly well. At least Eamon and I thought so, though perhaps the other vacationers didn't appreciate it as much. I do my part to provide propoganda for baby nerds.

Seth Lloyd covers the basics of quantum mechanics and computers, lays the groundwork for quantum computation, then tackles the big questions: how did the universe begin, where do we come from, how to unify quantum mechanics and general relativity, why is the universe complex? Considering physical limits to computation, he calculates that the laws of physics ultimately limit a one kilogram, one liter laptop to 1051 operations per second on 1031 bits and if Moore's law held up we would reach the computation limit by 2205 and the capacity limit in only 75 years.

I had hoped for an explanation of Shor's factorization algorithm or the quantum Zeno effect, but they were beyond the scope of the book. All in all, a pleasant read. Thanks, Eric!

August 16, 2006

User Interface Perfection

Consider the Calculator Desk Accessory on the original 1984 Macintosh System 1.0. It is easy to use and easy to learn. The interface is self-revealing: it requires no documentation and no instruction. It is obvious at a single glance both what it is capable of doing and how to do it. Equally importantly, its limitations are as obvious as its functionality. No one will waste any time trying to coax it to do anything which it was not designed to do. Every designer should strive towards these qualities.

Software design is an art of compromise between competing and contradictory criteria. Users want more features. They do not want to read manuals. They want inexpensive (or free) reliable software. The tension between functionality versus ease of use and ease of learning is eternal. Marketing and Sales want more features to sell products. Technical Support wants the current features to be reliable and easy.

The design space is multi-dimensional. Each application sits on a point in that space chosen as a tradeoff amongst the competing criteria. Within the limitations of what it set out to do, in the context of computer users in 1984 who had never before seen a GUI, Calculator 1.0 achieves an ideal in terms of ease of use and ease of learning.

When writing Graphing Calculator 1.0, we aspired to the same usability while increasing the functionality. We made compromises along the way, but it helped to remember the ideal we were striving for, even as we failed to reach it.

August 08, 2006

Breaking into Apple

Larry Osterman comments on The Graphing Calculator Story

It's an "interesting" story, and I have to say that I was aghast when I read it.  And my jaw dropped even further when I read the Digg comments about it....

For some reason, the people reading the story actually thought it was COOL!

Now think about it.  These people were so dedicated to their product that they were willing to BREAK THE LAW to get it into Apple's OS....

Apple CANCELED their project. Apple made an executive decision to not produce the product.

And the developers decided to override it by BREAKING INTO APPLE.

There are a bazillion other ways they could have handled it: Building it on their own and trying to convince Apple to put it in the product, etc.  But no, they chose to STEAL from Apple.  And the policies of Apple were sufficiently lax that they let them get away with it.

The discussion going on the comments on Larry's blog is a fascinating consideration of the ethics of the situation. I find myself largely sympathetic to his reaction. He is not wrong.

I am still tickled by the ethical ambiguity. It is only trespassing if we did not have permission. We were given permission later, retroactively making it legitimate. But there was no way we could know that at the time. I certainly told myself that we were "doing the right thing" and believed that. But at the same time, I was self-aware enough to realize that that was just frustration and bull-headedness and my ego talking. Even looking back it now, I'm still not sure if I pulled one over one them, or if I was horribly naive and taken advantage of, or perhaps both.

I was certainly arrogant to think that I knew what was in Apple's best interest. Had I been arrested I would have accepted the consequences knowing I had earned them. Yet, when we came clean with what we had been doing, management confirmed my judgment and agreed that it was worthwhile and ought to ship.

We could not have done any of this without the support of a lot of people who knew us, trusted us, and helped us at every step along the way. We were not strangers breaking in during the dark of night. Our behavior arose out of the chaos and culture of Apple at the time.

The events are 13 years old. I wrote the story 10 years ago, but did not publish until 2 years ago, waiting until Apple was no longer "beleaguered" and the story could be read as an amusing history rather than a reflection on Apple today. The Apple of 1993 was entirely unlike the Apple of today. Nothing like this would happen there today - nor would there be any need or desire to operate that way in what is now a healthy and well-managed company.

I invite folks who were at Apple in that era to reminisce about the culture and the chaos.

Digg, Dugg, Buried

The Graphing Calculator Story made the Digg homepage on Sunday generating a huge amount of site traiffic, and was dugg by 5,970 Digg users which made it the most popular Apple post of the month and the second most popular Technology digg.

The Digg link vanished from the Popular sections this afternoon and can now only be found using the advanced search option to search for buried stories. The Digg FAQ says this:

Stories can also be removed by users with the 'Bury Story' feature within digg. Once a story receives enough 'buries' it is automatically removed from the digg Upcoming or Popular sections. The number of reports required to bury is based on a sliding scale that takes several factors into consideration (such as number of diggs, reports, time of day, topic submitted to, etc.).

So now I'm left to wonder: why was such a popular story buried?

11:08 AM: Now it is unburied. I wonder what happened.

August 04, 2006

A Programmer's Apology

It is a melancholy experience for a professional mathematician to find himself writing about mathematics. The function of a mathematician is to do something, to prove new theorems, to add to mathematics, and not to talk about what he or other mathematicians have done.

- G.H. Hardy A Mathematician's Apology [pdf] [Wikipedia]

Hardy uses "apology" to mean a formal defense in which he justifies and explains his life's work. In doing so he acknowledges that mathematics is a young man's game and his powers are waning. As I approach forty, I have been reflecting on my own life.

I embraced becoming an old codger by publicly reminiscing about the adventures of my youth, presenting a Story Hour at Google this week. I began programming thirty years ago. For over twenty years I've programmed user interfaces for doing math. This blog will detail the evolution of the systems I have built and use them as a framework to discuss design and usability in order to answer the perennial question: "Why does software suck?"

A Programmer's Apology will be an apology in Hardy's sense of the word. It is also an apology in the usual sense: a mea culpa to users of my software spanning twenty years for all the errors and shortcomings. I am still working on it.

As well as a retrospective analysis of the user interface and engineering tradeoffs, A Programmer's Apology will also blog development of the next release of Graphing Calculator. Fortunately, programming is not as intellectually demanding as mathematics, so I can continue to be productive well into my dotage.

Welcome to my world.