I’ll Take a Cup of Cocoa® Please

I found a great book this weekend. It’s Cocoa® Programming Developer’s Handbook, Second Edition, by David Chisnall, published by Addison-Wesley Professional. It provides a very complete coverage of this broad subject but, unlike many of the other books I’ve read on the topic, it assumes that the reader is already a competent programmer. The author tells how Cocoa started life as NeXTStep on the NeXT computer and follows its evolution through a collaboration with Sun Microcomputers which resulted in OpenStep until Apple bought NeXT and adopted OpenStep as the heart of it’s development of OS X.

The book is wide, deep and fast paced. Don’t be frustrated if you find yourself having to read some sections more than once.  It includes an historical overview, a survey of the languages that have interfaces to Cocoa and why you might want to consider using each of them, an overview of the Developer Tools that Apple supplies to write applications with Cocoa, and of course, in depth discussions of how to use all of the various frameworks that comprise Cocoa (e.g. Core Framework, Core Graphics, Core Data, Core Audio, etc.) It also discusses the philosophy of Document-Driven Applications that was pioneered by Apple on the Mac. It frames these discussions with plenty of code examples that help place them in a practical context.

Meta Essay

I’ve been a long time fan of Dave Winer. While I often agree with his insights on software, the internet, technology, etc., I always appreciate his succinct, well reasoned writing, whether I agree with him or not. His recent article on the iPad announcement is a case in point.

While I am still in the thrall of Steve Job’s reality distortion field, Dave’s article helped me to stop and think. I realized that the iPad was version one of a new category of product. As such, it is far from the ideal product that the category will eventually produce. After all, the first iPod was a shadow of the product that the modern iPod has become.

None the less, I will buy an iPad because I have been waiting for this product category to hit the market for at least twenty years. I want to write apps for it. I am not thrilled with Apple’s app approval process but I have gold fever and the rush is on.

I guess my point is that Dave’s writing provokes thought. The more thought provoking writing that you read, the more likely you are to write thought provoking essays yourself. At least that’s my theory. I guess we’ll see how well it works out.

James Cameron’s Avatar: See It!

 I finally went to see Avatar in 3D today. All I can say is “ZOMG!” My friend Bob had pronounced it James Cameron’s magnum opus. I had thought he was perhaps exaggerating just a little. After having seen it, if this isn’t his magnum opus, I can’t even imagine what it will be like.

This movie pushed the envelope on so many fronts it boggles my mind. In the first place, the amount of motion capture CGI alone is overwhelming. In the second place, its use of 3D as an integral part of the story telling instead of just as a gimmick is unprecedented in my experience. Third, the creation of an entire world and culture far more detailed than Lord of the Rings or Dune ever hoped to be sets the bar for the entire genre.

New science fiction premises are few and very far between and this premise is not entirely without precedent. It is new, as far as I’m aware, to movies though. While not breaking entirely new ground in the speculative fiction canon, it is an incredibly innovative mash-up of some of the more esoteric premises from that corpus.

Everyone loves a story with heart and this one has a heart as big as an alien world. It moved me to tears in more than one place. I can say no more for fear of spoiling one of the most amazing and entertaining films I have ever seen. I heartily recommend you see it and be sure to see it in 3D. It is truly an immersive experience.

A Ramble on Photography Then and Now

My father was an avid amateur photographer. He owned a 35mm camera for as long as I can remember. He preferred taking slides and had box after box of them in his office. After he died, they inadvertently got disposed of before I had a chance to salvage them. I mourn the loss of that record of my childhood.

Being a photographer back then required a lot more effort than it does today. There were Polaroids and Kodak Instamatic cameras that made it easier to take pictures but even so, you had to wait for the shot to be developed to see if you got the picture you wanted. In the case of the Polaroid, the feedback was fairly fast, but with more conventional cameras it usually took days or weeks to get your prints back to see what you got.

In the case of the 35mm camera, my dad’s camera of choice, you had to decide what film stock you were going to use; color or black and white; what sensitivity to light (expressed in ISO number); what color balance. You had to measure the light illuminating your subject using a light meter. You had to balance the factors of exposure time (shutter speed), aperture size (f-stop), and the focal length of the lens. An amateur photographer had to be fairly well versed in the mechanics and chemistry of photography in order to be able to hope to capture his vision in a photograph.

Then there was the artistic side of things. Once you knew the details of how to take a picture, you had to learn how to compose a photograph. My college photography professor advised taking a lot of pictures. He said that you had to pay attention to what you did and the results that you got from doing it. This turned out to be hard to do,  given the lag between taking the pictures and getting them developed. It was also fairly expensive even when you bulk loaded your own film cartridges and developed your own film. Then there was the print stock that you printed your pictures on and the enlarger you had to learn to manipulate. That goes a long way toward explaining my dad’s preference for slides. There, the film that came out of the camera was the final product. No printing involved. Of course that meant that what you shot was what you got.

Contrast this with the state of photography today. We have at this point exceeded the quality of 35mm film with the current line of SLR cameras. We can immediately look at the shot to see if we got what we wanted. And with the cost and size of memory cards, we can take thousands of shots without having to worry about changing media. We can even take HD video with many current SLRs.

I wonder how this affects our attitude toward photography? There are still plenty of artists that express themselves through photography. This is evident even after just a few minutes browsing photo.net or flickr. The mental processes are still as hard to develop though. Even with all the automation available in the current cameras you still have to be able to see what you are looking at and select the image that you want to capture.

Of course now, with Photoshop and Gimp and the other photo manipulation tools available to us, what you shoot is not necessarily what you get. You have an even greater latitude for creative expression than the darkroom ever provided. Will this raise the standard of excellence for photography in the future? I hope so. And I hope to have more time to make pictures in that future.

Ch-ch-ch-changes

How has the world changed in the past ten years?

  • Cell phones have become ubiquitous.
  • Everyone is on the internet.
  • Broadcast TV has shifted from analog to digital.
  • High speed access to the internet is available everywhere.
  • Many people think of the library as somewhere to go to use a computer.
  • Wikipedia has become a creditable research resource.
  • There are working prototypes of flying cars (horizontal fan style).
  • We survived the Y2K scare.
  • We survived a major terrorist attack.
  • We survived 8 years of the Bush administration.
  • The DVR has freed people to watch what they want when they want to watch it (without the commercials if they like).
  • Dynamic languages are making a strong comeback.
  • Hybrid gas-electric cars are a fairly large segment of the automobile market.
  • The space shuttle is near end of life, as is the International Space Station.
  • We have a black president.
  • We are experiencing climate change unprecedented in modern times.
  • I am a grandfather.

So much for the short list. I may revisit the question in a couple of days if I think of any important changes that I forgot.

The Erosion of Educational Standards

The tone of this blog has always been conversational. It seems less pretentious to structure the posts like a conversation, albeit one sided, rather than use the stilted formalism that is advocated by most English teachers. It is not that they are wrong; learning to write within traditional formal constraints is good discipline. At one time, it sent the message that the author was educated.

These days it seems that most writers, particularly technical writers, paid little attention in English class. Or maybe it can be explained by a process of slowly eroding standards. Each new generation of teachers held their students to a more lax standard than that to which they were held.

Another factor is the lack of respect that English receives in the public school system. Science, math, history, all seem to have more direct relevance to success in a modern world that values technological prowess over rhetorical skills. You get the behavior that you reward.

When my grandfather was a teacher back in the first half of the twentieth century, he advocated teaching to mastery. In other words, the student did not move on to new material until they completely mastered the material at hand. There were no such thing as “social” promotions. This resulted in extremely well educated students.

Somewhere along the line, we decided that everyone that puts in the time should be able to get a diploma. This is a bad idea. It cheapens the achievement of those who work hard and master the curriculum to relax our standards and certify those who haven’t earned it. It engenders an attitude of entitlement.

It is also a bad idea for another reason. It has reduced the stature of American secondary education. Students from other countries are still held to traditional academic standards. Consequently, they out perform American students on standardized tests. This isn’t an indictment of the American students’ abilities, rather an indication that they were never challenged to meet their potential. My dad often said, “Always expect the best from your students and they will rarely disappoint you.”

The third and most important factor in the decline of American secondary education is that we refuse to pay for quality educators. Our teachers are so poorly paid that most of the teachers that we end up with are those that can’t get a better paying job in industry. There are some teachers that teach for the love of teaching; those whose salary is a second income or that are independently wealthy. But it is hard to make a living as a secondary teacher most places in America. We are trusting these people with our children. Why aren’t they the best paid professionals in our society?

There has been a movement to hold educators accountable for the education of our children. While I agree with the concept I think it has been poorly thought out and executed. By putting the emphasis on performance on standardized tests, we are forcing teachers to teach students to pass the standardized tests rather than to master the material. By threatening teachers with penalties including loss of their jobs if the students don’t pass the standardized tests we are creating fearful school environments that are actually detrimental to learning.

If we want to reclaim our world supremacy, we must start by paying the right kind of attention to our public school system. Better pay for teachers, less emphasis on numbers, more emphasis on qualitative analysis of student achievements are all part of this right kind of attention.

The Beginning of a Series of Opinionated Posts

One of the philosophical principals underlying Ruby on Rails is that software should be opinionated. I have been thinking about what that means a lot lately and have decided that being opinionated is a good trait in general. I have decided that I will be opinionated and share my opinions with anyone who will listen. In particular, I will share my opinions here.

I have concluded that software engineering is at best a misnomer and at worst a detriment to the development of quality software. Engineering is a philosophy of creating physical artifacts that has been developed empirically for the last two or three centuries. Software is not a physical artifact.

When I have a physical artifact and I give it to you I no longer have the artifact. When I have a piece of software and I give it to you, I still have it. Your having it doesn’t reduce the utility of my having it. When I design a physical artifact, I want to get all the details right before I build it because materials are expensive. When I design software, the easiest way to figure out the details is to create a prototype and then iteratively improve it until it is right.

The point being that building multiple versions doesn’t incur large material costs. These are only two of many reasons that software development is very different from the process we know as engineering. Calling Software Development Software Engineering raises inappropriate expectation in those that don’t understand Software Development.

I’ll rant on this topic more later but I’m going to call it a night right now.