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.

Ode to a Ruby Gem

This morning I was thinking about a project that I am doing in Ruby. I found myself thinking to myself  “I sure am looking forward to getting more intimately familiar with active-record.” Active-record is the Object-Relational-Mapping component of Ruby on Rails.

I love a package that makes you eager to learn more about it. Not to say that you have to be intimately familiar with active-record in order to use it. Rails is just so well thought out that studying the API is actually fun. And, Rdoc, the Ruby documentation package, makes writing extensive documentation of your code so easy that programmers usually do a pretty good job of documenting their code.

I have been using active-record in my Rails apps for several years now. The reason that I needed to delve deeper into active-record at this point is that I am getting data from an external source (I’m scraping it from a web page), parsing it using nokogiri, another fine Ruby package, and then caching it in a local database. Consequently, I am having to do some thinking about how to structure the data that I cache.

Let’s face it, I’m not really all that experienced at database architecture. I can hack a little SQL when I need to but I haven’t had to do a lot of data normalization since I studied databases in college. Rails makes it easy to play around with your schema until you get it just right. I don’t mean to gush or anything but Rails makes these things so easy that it feels like playing instead of work. In my case, I guess it is playing, at least to the extent that I am not being paid to do it. But that’s another story.

Time to Think About Some Goals

I forget who it was that taught me this little gem but in my experience, it has turned out to be true. If you want to insure that you accomplish things, write them down on a list. It doesn’t seem to matter whether you write them on paper with a pen or pencil or you type them into a computer. The relevant thing is that you’ve spent the time thinking about them and formulating them into words and as you write or type them, you are, in effect, programming your brain to accomplish them. I often don’t even bother to check the items off the list as I accomplish them. Just making the list is enough to focus my intent. I occasionally run across lists that I’ve made, either in old notebooks or in files in some obscure sub-directory of my Documents folder, and I’ll look at them and discover that I’ve accomplished most, if not all, of the items on the list.

So, I want to make some goals for myself. There are three categories of goals that I intend to attempt to capture today:

  • Health goals
  • Project goals
  • Financial goals

Let’s take Health goals first.

  • I want to lose at least 10 pouinds between the initial weigh in and the final weigh in of the “Scale Back Alabama” competition.
  • I want to get my daily fasting blood sugar down below 130 mg/dL.
  • I want to get my cholesterol panels all within ADA recommendations (that means boosting my HDL and getting my triglycerides down).
  • I want to stop spilling protein (that means mostly exercise, I think).
  • I want to get back on a schedule of daily exercise.
  • I want to quit reflexively eating everything on my plate.
  • Long term, I want to weigh less than 200 pounds.

Now some Project goals:

  • I want to maintain my habit of writing for at least 30 minutes a day (nominally between 10:00pm and 10:30pm).
  • I want to start posting to my blog, Occasional Comment (here) at least five times a week.
  • I want to finish the Radiosonde data analysis project for Bob.
  • I want to present at least once a quarter to the lunch and learn at work for a total of five times this year.
  • I want to write at least a science fiction short story and perhaps even a novel.
  • I want to finish the pilot of The Gentry.

And finally, some Financial goals:

  • I want to get completely out of debt.
  • I want to start a successful small consulting business to retire to.
  • I want to be able to save at least 20% of my income while paying all of my bills and having a comfortable lifestyle.
  • I want to have the money to get the house fixed up.
  • I want to be independently wealthy so long as it harms no one.

So there are my lists for now. I’m putting them out there. I’ll come back and check periodically to see how many items I’ve accomplished. I’ll probably write some more posts about them as events unfold.

Daily Contemplation

I started writing every night. I set a time, 10:00pm until 10:30pm, as a minimum time. I was inspired to do this by Gladwell’s observation that it takes 10,000 hours to learn to do something well. I believe in practice. I have recently discovered that an important component of practice is to make sure that you are practicing the correct way of doing something, else you will learn to do it incorrectly. I suppose that matters less when it comes to writing. I have never heard of a right or wrong way to write. Perhaps that is because, it is so difficult to write anything substantial that it is a miracle if you write anything at all.

I have so many projects in progress that it is difficult to keep them all moving. I am doing better than I have in the past though. I think that my nightly writing discipline may help me develop some blogging discipline. I’m an eternal optimist, aren’t I? I have noticed a pattern to my writing though. I seem to spend most of my time writing about writing. That is something that I need to work on changing.

I’m using OpenOffice to write at home on my MacBook. I have given up trying to write using emacs. I’m not sure why but I end up spending too much time thinking about the structure of the document, for example, placement of line breaks, etc., when I use emacs. When I use a conventional word processor, I just take the defaults and type.