Can SUVs remain fashionable when only unfashionable people drive them?

Speaking of SUVs… (see below), at a recent gathering in suburban New Jersey I noticed that nearly everyone else had arrived in an SUV.  The drivers were overwhelmingly middle-aged married suburbanites with children.  When one encounters a young, good-looking, city-dweller the chances are very high that he or she will be driving an inexpensive compact car of some sort.  If you see an SUV in the distance but can’t see the occupants because the glass is too heavily tinted, chances are that it is 35-year-old mom and two kids.  A Suburu sedan, by contrast, is often occupied by a young single urbanite.

How much longer can the popularity of SUVs continue?  Many of the drivers are getting so old that their fragile bones really can’t handle the stiff suspension and harsh ride over bumps (my 40th birthday is in a week and whenever I’m picked up from the airport in a BMW X5 or similar I can’t believe how little isolation is provided from potholes, etc.; it is actually more jarring than landing the DA40 at 67 knots).

So how is it that SUVs remain in fashion when 99% of the owners of SUVs are unfashionable?

Full post, including comments

Java is the SUV of programming tools

Our students this semester in 6.171, Software Engineering for Internet Applications have divided themselves into roughly three groups.  One third has chosen to use Microsoft .NET, building pages in C#/ASP.NET connecting to SQL Server.  One third has chosen to use scripting languages such as PHP connecting to PostgreSQL and sometimes Oracle.  The final third, which seems to be struggling the most, is using Java Server Pages (JSP) with Oracle on Linux.  JSP is fantastically simpler than “full-blown J2EE”, which is the recommended-by-Sun way of building applications, but still it seems to be too complex for seniors and graduate students in the MIT computer science program, despite the fact that they all had at least one semester of Java experience in 6.170.

After researching how to do bind variables in Java (see the very end of, which turns out to be much harder and more error-prone than in 20-year-old C interfaces to relational databases, I had an epiphany:  Java is the SUV of programming tools.

A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl.  People who are serious about getting the job done on time and under budget will use tools such as Visual Basic (controlled all the machines that decoded the human genome).  But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity.  Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope.  If a programmer is attacking a truly difficult problem he or she will generally have to use a language with systems programming and dynamic type extension capability, such as Lisp.  This corresponds to the situation in which my friend, the proud owner of an original-style Hummer, got stuck in the sand on his first off-road excursion; an SUV can’t handle a true off-road adventure for which a tracked vehicle is required.

With Web applications, nearly all of the engineering happens in the SQL database and the interaction design, which is embedded in the page flow links.  None of the extra power of Java is useful when the source of persistence is a relational database management system such as Oracle or SQL Server.  Mostly what you get with Java are reams of repetitive declarations at the top of every script so that the relevant code for serving a page is buried several screens down.  With a dynamic language such as Lisp, PHP, Perl, Python, Tcl, you could do bind variables by having the database interface look at local variables in the caller’s environment.  With Java the programmer is counting question marks in the SQL query and saying “Associate the 7th question mark with the number 4247”, an action that will introduce a bug into the program as soon as the SQL query is modified (since now the 7th question mark has been moved to become the 8th question mark in the query).

Full post, including comments