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.


So after watching the reality distortion field (the video of Steve Jobs announcing the iPad), and sleeping on it, I think I may have a solution. I can afford an iPad if I replace my MacBook with a 21.5″ iMac and use the difference between the price of that and the price of a 15″ MacBook Pro and a 24″ Viewsonic external display to buy a 32GB iPad!

I’ve noticed a bunch of people nay saying the iPad today. One person that agrees with me is Steven Fry. I knew he was an Apple fan boy but I was surprised at how astute he was. I think the key fact here is not that the iPad is the best tablet there could ever be. It’s just that it is the first one to “get” what sets a tablet aside from a laptop. It has certainly captured my imagination.

There. I think I’ve got it out of my system now. And now back to your regularly scheduled blog posts.

In which: We explore the author’s obsession with tablet computers

The internet was on the blink last night at our house. Thus, no blog post. This morning, I thought I knew what I wanted to blog about but somehow throughout the day so much happened that I decided to put that topic off for another day. I had forgotten that it was the day that Apple announced their new product. You know, the one that everyone has been talking about for years, the iPad.

I have wanted a tablet computer ever since I read Alan Kay’s description of the dynabook. I wanted one. Later, I read Neal Stephenson’s The Diamond Age: or A Young Lady’s Illustrated Primer and the flames of my passion were stoked even higher. I couldn’t afford a Newton but it became obvious that it wasn’t the holy grail after all. I owned 3 different Palm Pilots. They never quite filled the bill.

I’ve been waiting for the Apple tablet, the iPad, for years now. Today, I found out that I can have one, … in 60 to 90 days. Now I’ve got to decide whether I want one enough to pay the Apple premium. I am very intrigued. But it won’t be a laptop replacement. It was never intended to be that. I have been planning to buy a MacBook Pro to replace my aging MacBook. I can’t justify buying both a MacBook Pro and an iPad. Therein lies my quandary.

Of course, the rational side of my brain says it is better to wait and see how things play out. After all you should never buy version one of anything. But it is so damn sexy! I wants it. My precious.

Okay, so I buy the 16GB wifi version. That’s only $500 bucks. But for $600 bucks, I could have the 32GB version and for $700 bucks, I could have the 64GB version. And for $830 bucks I could have the 64GB 3G version. I can’t afford $830 bucks. Lets start over again.

No, let’s not. Once again I will be a responsible adult and buy the MacBook Pro. I’ll wait and see how things pan out. It may be a flash in the pan like the AppleTV. I don’t believe it for a minute but time will tell. Maybe by the time it is actually shipping I’ll change my mind. Even better, maybe I’ll think of a creative way to finance one; write an article; sell a program; get a moonlighting consulting gig. Only time will tell.

A Modern Prophet Speaks

I read David Gelernter’s The Second Coming — A Manifesto today. I agreed with most of what he said and even when I didn’t agree with a specific prediction he made, I agreed with the motivation behind it. I’ve been saying for a long time that the desktop metaphor was unnecessarily constraining. It is fine if what you are trying to do is mimic the operation of a pre-computer office. The problem is that nobody wants to mimic the operation of a pre-computer office. The computer has changed everybody’s expectations of how an office should run.

I have been telling people that the future of computers would be based on constantly shifting clusters of computers, for example, if you walk into a room and you have a small hand held computer with you, it will form an ad hoc federation with the input and output devices in the room. If there is a display on the wall, your computer will associate with it. If there is a camera in the room, your computer will use it to watch you and look for you to make gestures to tell it what you want it to do. As Gelernter says, the focus will shift from the computer and the programs to what you want to accomplish.

I also agree with the indictment he makes of computer users for putting up with such horrible software without even complaining about it. I think the reason for this is that the average person doesn’t know how bad things are or how good they could be. There is a conspiracy between the people that understand computers to keep the people who don’t in the dark about what might be done with a little imagination.

All in all, the Manifesto is a great read. It inspired me to rethink my attitude toward software development. It helped me imagine the emergence of artificial intelligence just any day now. Go read it! Now! I’ll wait for you.

Parrot Speaks A Number of Languages

After watching several of Allison Randal’s videos yesterday (see Dynamism Clarified ), I started investigating Parrot. I was so impressed that I downloaded the latest version (2.0.0) and built it on my MacBook. I haven’t had time to do much more than start reading the documentation but I like what I see so far. I will probably play with Cardinal, an implementation of Ruby 1.9 in Parrot. I may see what kind of bench marks I can come up with.

I realized that my first several languages were all dynamic languages, i.e. Microsoft Basic (long before Visual Basic) and Forth. I always preferred dynamic languages because, in spite of whatever project I was working on for my employer, I was always intrigued by the prospect of artificial intelligence. My first static language was Pascal, quickly followed by C. I was going to say that I learned Lisp around this time but it took me a long time to really learn Lisp. I was able to write Lisp expressions in pretty short order but the whole process of building expressions up into programs that leveraged the unique strengths of Lisp took quite a while.

When I look back over my career it seems that I was always avidly studying dynamic languages. In fact, one of the reasons I was so enamored with Java was that it was more dynamic than C. When I discovered Java (the first day that Sun released the first public beta as a matter of fact) I immediately recognized it as a tool for convincing the static programming masses of the value of dynamism. Or as I put it at the time, it was a step in the right direction toward Lisp.

My current favorite language is Ruby, primarily because I can interface to more main stream software more easily with Ruby than just about any other platform. It is also sufficiently mature that I don’t worry much about it changing too drastically. I also share a lot of “opinions” about code with Ruby.

Dynamism Clarified

Today I watched a video of a presentation given by Allison Randal entitled Exploring Dynamism. It helped me put everything I know about dynamic languages in perspective. Allison is chief architect of the Parrot virtual Machine and employed by O’Reilly Media.

She made a point in the video that while theoretically, languages are either static or dynamic, in practice they exist somewhere on a spectrum between static and dynamic as extremes. She also discussed at length the various dimensions of dynamism including dynamic typing, dynamic dispatch, dynamic compilation and dynamic loading to name a few.

I thought it was brilliant how she discussed the pros and cons of these features quite clearly without bogging the discussion down with examples from any particular languages. This allowed me to think about her points in the context of languages that I know. She demonstrated a deep familiarity with a wide range of dynamic languages throughout her presentation. I was also impressed by the fact that she used her expertise in natural language linguistics to inform her model of computer language linguistics

If you are a fan of Ruby, Lisp, Smalltalk, or even Java, I highly recommend you watch the video. It was certainly well worth my time.