Wednesday, January 7, 2009

Freeware Jet Engines Dangerous: Does free software imply low quality results?

In a recent NY Times article on the R data analysis language Anne H. Milley implied that her personal happiness stems from quality of jet engines that can only be achieved through the use of commercial software.

If I were in Ms. Milley's position I too would be happy if people were paying to use my product. What does not particularly matter to me is the cost of software which is used to design those engines. What I truly care about is the quality of the engineering, construction and validation procedures. In any case as a passenger I am unsure how I can determine if the equipment I am flying on was designed using free software or not. I will have to settle for being happy if my flight is on time, security lines are short and I get home to see my wife.

“I think it addresses a niche market for high-end data analysts that want free, readily available code," said Anne H. Milley, director of technology product marketing at SAS. She adds, “We have customers who build engines for aircraft. I am happy they are not using freeware when I get on a jet.”

[From R, the Software, Finds Fans in Data Analysts - NYTimes.com]

Given the implication that happiness, value and quality are only available for products designed using commercial software; I find myself retroactively saddened by all of the things that I have seen which were designed before commercial software packages were available. I would like to thank Ms. Milley for sucking the joy out of my life.

Monday, January 5, 2009

Netbeans will not start on OS X

Back from a two week break, finished with at least the first pass of mail and attempting to get back to inbox zero I find that I cannot start NetBeans 6.1 or 6.5. It appears that the problem is an OS X update forcing the use of 64-bit data model when the 32-bit is required.

In various locations I found instructions to change to the 32-bit data model with -d32. After adding this change to netbeans.conf (alternatively -d32 or -J-d32) the problem was not resolved.

An ugly hack to work around this issue (inspiration from Sam Cogan):

lipo /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java \
   -remove x86_64 -output /tmp/java
sudo mv /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java \
   /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java-x86_64
sudo mv /tmp/java /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java-32
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java-32 \
   /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java

This appears to have fixed the immediate symptom, there is no telling what I have broken in some other insidious ways. I also expect this problem to return with the next update to java which replaces the java binary.

Ways to identify this problem:

From the terminal.app: open /Applications/NetBeans/NetBeans\ 6.5.app
LSOpenFromURLSpec() failed with error -10810 for the file /Applications/NetBeans/NetBeans 6.5.app
From CrashReporter files for java: 
Process:         java [5579]
Path:            /System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home/bin/java
Identifier:      java
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  bash [5421]
<...>
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000
Crashed Thread:  0
<...>
Thread 0 crashed with X86 Thread State (64-bit):
In: /var/log/system.log
1/5/09 3:05:41 PM [0x0-0x133133].org.netbeans.ide[5610] /Applications/NetBeans/NetBeans 6.5.app/Contents/MacOS/../Resources/NetBeans/bin/../platform9/lib/nbexec: line 493:  5768 Segmentation fault      "/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home/bin/java" ...