Strong opinions, weakly held

Month: December 2005
(page 2 of 6)

Bruce Eckel has a good essay on language wars. He starts out talking about how hyper-enthusiasts from the Java world have migrated to Ruby on Rails and winds up asking whether Ruby is really better than Python or not.

From my own perspective, I can say that the days of hyper-enthusiasm are behind me. When it comes to picking tools to get things done, I use one of the XP maxims — use the simplest thing that could possibly work. There are two important attributes of environments for developing Web applications as far as I’m concerned. Simplicity and structure. PHP wins the simplicity fight. If you need to pull stuff out of a database and print it on a Web page, you can do it in PHP with almost no code wasted on structure. Java wins the structure fight. You can make things as structured as you like, to the point of absurdity. Ruby on Rails, right now, represents the best compromise between structure and simplicity for a huge portion of the Web application problem space.

I started building the last application I wrote in Java before Ruby on Rails existed, but if I had to do it over again, I’d still use Java. On the other hand, for the content management system/knowledge management system I’m working on right now, Ruby on Rails is the better choice. Django would certainly have been fine as well, but I picked Ruby on Rails, and I’m not regretting it. The idea that one language or platform can be all things to all people or somehow makes everything before it obsolete is absurd. Fervor can be good thing in that it can encourage productivity, but don’t let it blind you.

I could, of course, point out that both the bought-and-paid-for columnists are right-wingers, but that would be interpreted as more Bush-bashing, and I apparently do too much of that. Although it is my firm belief that, in 75 years, any columnist who didn’t do a lot of Bush-bashing is going to look foolish indeed.

The other day I posted about upgrading my mobile phone. I had originally decided to dump Cingular and go with Alltel so that I could get the latest Motorola RAZR, but I’ve had a change in thinking.

Currently, there are three RAZR models — the V3, the V3c, and the V3i. The V3 is the current generation GSM phone, offered by Cingular and T-Mobile for $99.99 (with a two year contract). The V3c is CDMA version of the RAZR, with some next generation features. It’s offered by Verizon and Alltel for $199.99 with a two year contract. Verizon installs their own (reportedly bad) software on the phone and cripples the Bluetooth support. The V3i is the next generation GSM RAZR. Neither T-Mobile or Cingular offer the phone yet, but it’s supposed to be released before the end of the year. My hunch, given that the V3c is already available and Cingular and T-Mobile have halved the price on the RAZR V3, is that the phone is ready and Cingular and T-Mobile are trying to clear out their RAZR V3 inventories before offering it. I suspect that after the Christmas rush, they’ll roll out the V3i. I haven’t read anything to this effect, it’s just conjecture on my part.

Anyway, my plan now is to wait for the V3i and stick with Cingular rather than switching to Alltel. This has nothing to do with the phones — rather it’s due to differences in calling plans. Cingular offers 450 minutes for $39.99 a month with 5000 night and weekend minutes, with no roaming charges nationwide and no long distance charges. Alltel offers 500 minutes a month with unlimited night and weekend minutes for $39.99 a month. And while their plan offers free long distance nationwide, their play says, “Free roaming near major cities.” I don’t travel all that much, but I still feel more comfortable knowing that I’ll never get dinged with a roaming charge.

I can stick with my current phone until I can get a V3i from Cingular, I think. (If you’re wondering why T-Mobile never enters into the calculation, it’s because they don’t offer service in my area.)

There was much speculation yesterday about what sort of wiretaps the NSA was running, with the most plausible theory being that they were using some kind of wide-ranging filtering technology to spy on people en masse. Way back in 2000 there was much discussion of a system called Carnivore, under which the federal government would install hardware at ISPs to snoop on all of the email that the ISP processed, but general fear of widespread NSA snooping goes back a lot further than that.

The creators of uber-editor GNU Emacs foresaw this sort of technology and helpfully added the spook function to automatically add words to email messages that might be of interest to the NSA, under the theory that inserting chaff into the world of email would make such systems less useful. This functionality was added to Emacs 16 years ago.

The reason I read Rogers Cadenhead’s blog every day is that his brain works completely differently than mine. It would never occur to me to go to Wikipedia and investigate whether Jimbo Wales (the site’s founder) edits his own article, but that’s OK, because that’s exactly the sort of thing Rogers does all the time. And wouldn’t you know it, there’s a treasure trove of unseemly behavior there just waiting to be exposed.

To me, the biggest question arising from Friday’s New York Times article outing the White House for authorizing wiretaps of Americans without seeking warrants is whether or not the wiretaps were illegal. Adam Shostack has a good roundup of the current thinking on this question.

Attorney General Alberto Gonzales states specifically that the wiretaps would be illegal under the Foreign Intelligence Surveillance Act, which makes sense considering that FISA established a secret court specfically for the purpose of issuing warrants for wiretapping Americans. The President chose instead to circumvent that court and allow the wiretaps without any judicial oversight at all. Gonzales claims that he has the authority to do so under the 2001 bill authorizing the use of force against Afghanistan and more ephemerally because of his “inherent powers,” whatever that means.

What I need to have explained is why the FISA provisions for these wiretaps were insufficient for this administration? FISA not only provides the option to seek warrants to eavesdrop on Americans, but also allows them to eavesdrop on someone for 72 hours before actually seeking a warrant, to be used in cases where the matter is too urgent to ask the court first. (In the Washington Post article Gonzales and another administration official claim that FISA is outdated, but they fail to explain the ways in which is outdated or why the President didn’t go to Congress and ask for new legislation updating FISA. Given that under FISA you can start a wiretap immediately before seeking court permission, I fail to see how it doesn’t provide the “agility” they claim to need.)

I have some Java code that leaks memory and causes Tomcat to die with an out of memory error once every couple of days. After finding a way to reproduce the problem reliably in a JUnit test outside Tomcat and exhausting the obvious means that I know about to find such problems, I’ve jumped into the world of profilers. I’ve always felt like profilers are a tool that real developers should know how to use, but I’ve never had to use one. (I also feel that way about debuggers. I debugged programs for years with print statements until I learned how to use a debugger — now I could never go back.)

Anyway, I’m trying out two profilers right now, JProfiler, which provides a 10 day evaluation license and YourKit, which provides a 15 day evaluation. The first thing I figured out is that there’s more to finding memory leaks than running your code in the profiler, or at least there is in this case.

My goal is to find and solve the problem before either evaluation license expires, and to decide whether I need to buy either of these products. I’ll post about my progress here, and welcome any comments with further information on hunting down and killing memory leaks in Java programs.

There was a lot of excitement last week as the Bush administration supposedly capitulated to Senator John McCain’s demands and agreed to ban torture, even among progressive groups. I, for one, can’t find much room for enthusiasm, mainly because the White House has never actually admitted that the use of torture is a problem that needs solving. In spite of the fact that there are more accounts of torture reported seemingly every day, the White House has continued to push the line that we have never sanctioned torture, and that any misconduct that did take place was perpetrated by “bad apples.” President Bush of all people should know that in any 12 step program, the first step is admitting there’s a problem, and the White House hasn’t gotten there yet.

Earlier this year, Yahoo caught a lot of justified flack for helping the Chinese government track down a dissident writer so that he could be charged with a crime for exercising a right Americans take for granted. DefenseTech notices that Cisco is deserving of similar criticism. They provide the infrastructure the Chinese government needs to block access to Web sites and otherwise suppress dissent.

Jason Levine nails a big problem I’ve had lately with Amazon.com but never thought to write up. These days it’s nearly impossible to tell whether an item is offered by Amazon.com or one of their affiliated merchants, and I think most people (myself included) would prefer to buy from Amazon.com itself when possible. I’m not even going to get into the problem I had where I bought a gift from Toys R Us via Amazon.com, they charged me for shipping because they didn’t honor my Amazon.com membership, and then they offered free shipping on all Christmas gifts the next day.

Amazon Prime is an excellent program, but it has made me very sensitive to just how Amazon.com’s business operates. I only want to order things that let me take advantage of it.