Laptop shopping: Is a Mac worth it?

I'm in the market for a new laptop. Many developers I know and respect own an Apple Powerbook. They say the usability is much better than Windows XP. Friends also recommend the Powerbook. One of them, Chris Huston, said there is no contest between the Powerbook/OS X and a Windows XP laptop. He said it won't be one big Powerbook feature that will blow me away. It will be 1,000 little features that will continue to impress me every day.

But I've never owned a Mac. I'm a long-time user of Windows, since the 3.1 days, and MSDOS before that. I think I've discovered every keyboard shortcut possible in Windows, and I've banished the Office paperclip and the scratching/sniffing Search puppy to the Recycle Bin. And, yes, I can write rudimentary Windows shell scripts, even though I'd much prefer BASH or CSH. So using Windows isn't a problem for me.

But I also like Unix, so I don't foresee the OS X command line as seeming strange. In fact, I've used Unix longer than any other operating system, starting with BSD Unix at college. I've used System V, HP-UX, AIX, and Solaris. And I've been using Linux on development boxes at home for more than five years, including customizing my own Linux and BSD kernels.

So I priced a 15-inch Powerbook at the Apple web site to see how feasible buying a Mac would be. Ouch. It would cost me $800 more for a Powerbook than a similarly equipped Dell. Is the quality of the Powerbook hardware and software that much better? Or does Apple take advantage of its loyal customer base and the fact it has really no competition for non-Windows laptops?

What I'm looking for is a laptop that has:
  • A fast processor for development, but not so fast that a high-speed fan system is needed to cool it. (The fans in my company-issued Pentium 4 laptop make a racket. When I run Ant/Maven or launch something huge like WebLogic, I keep expecting Newton's third law to send it flying across my desk.)
  • A 15-inch screen is probably big enough
  • At least 1 GB of RAM, expandable to 2 GB
  • Hard drive 60+ GB
  • A non-fancy video card. I'm not a gamer or plan to watch movies from my laptop.
  • WiFi and USB 2.0 (almost standard nowadays)
  • CD burner, DVD reader.
  • Software to read and write Microsoft Word and Powerpoint files.
In other words, nothing too fancy. It won't be my primary development box, but when I'm using it for development at a client's site or on the road, it has to be fast enough not to irritate me with its pokiness.

My current question is, for my needs, do the features and usability of OS X really warrant the extra $800. Not to mention the extra frustration I will undergo getting applications like WebLogic 8.1 installed under OS X. (Folks at BEA say it is possible, they just don't support it or make it easy.)

Missing JARs when building Geronimo from source

In trying to build Apache Geronimo from the subversion trunk tonight, I noticed that eight JAR files are missing from the remote repository Maven uses to download the files.

In case you're trying to build Geronimo before the files get placed in the repository, I got the missing JAR files from http://cvs.apache.org/repository/geronimo-spec/jars/. I just put the missing files in my local Maven repository and everything built fine.

Here was Maven's first complaint
+----------------------------------------
| Executing (default): Geronimo :: Demo Webapp
| Memory: 7M/10M
+----------------------------------------
Attempting to download geronimo-spec-servlet-2.4-SNAPSHOT.jar.
WARNING: Failed to download geronimo-spec-servlet-2.4-SNAPSHOT.jar.
Attempting to download mx4j-jmx-2.0.1.jar.
261K downloaded
BUILD FAILED
File...... C:\Projects\Geronimo\maven.xml
Element... maven:reactor
Line...... 454
Column.... 27
The build cannot continue because of the following unsatisfied dependency:
geronimo-spec-servlet-2.4-SNAPSHOT.jar
I didn't look into the Maven project files to see from where it was trying to download the files. I just grabbed the missing geronimo-spec-servlet-2.4-SNAPSHOT.jar file from the Apache CVS repository.

Continuing the build, that led to this message, which seemed to satisfy Maven that it had the file available:
+----------------------------------------
Attempting to download geronimo-spec-servlet-2.4-SNAPSHOT.jar.
Artifact /geronimo-spec/jars/geronimo-spec-servlet-2.4-SNAPSHOT.jar doesn't
exists in remote repository, but it exists locally
build:start:
The build continued but still more files not found:
Attempting to download geronimo-spec-j2ee-management-1.0-SNAPSHOT.jar.
WARNING: Failed to download geronimo-spec-j2ee-management-1.0-SNAPSHOT.jar.
Attempting to download geronimo-spec-j2ee-deployment-1.1-SNAPSHOT.jar.
WARNING: Failed to download geronimo-spec-j2ee-deployment-1.1-SNAPSHOT.jar.
Attempting to download cglib-full-2.0.jar.
280K downloaded
Attempting to download mx4j-2.0.1.jar.
382K downloaded
BUILD FAILED
File...... C:\Projects\Geronimo\maven.xml
Element... maven:reactor
Line...... 454
Column.... 27
The build cannot continue because of the following unsatisfied dependencies:
geronimo-spec-j2ee-management-1.0-SNAPSHOT.jar
geronimo-spec-j2ee-deployment-1.1-SNAPSHOT.jar
After a few of these runs with complaints of missing JARs from the remote repository, here is a complete list of the missing JARs in the hopes it saves someone else a little frustration:
geronimo-spec-servlet-2.4-SNAPSHOT.jar
geronimo-spec-j2ee-management-1.0-SNAPSHOT.jar
geronimo-spec-j2ee-deployment-1.1-SNAPSHOT.jar
geronimo-spec-jta-1.0.1B-SNAPSHOT.jar
geronimo-spec-ejb-2.1-SNAPSHOT.jar
geronimo-spec-j2ee-connector-1.5-SNAPSHOT.jar
geronimo-spec-j2ee-jacc-1.0-SNAPSHOT.jar
geronimo-spec-jsp-2.0-SNAPSHOT.jar

Sun settles Java lawsuit for $92 million

Sun Microsystems said today it will pay Eastman Kodak $92 million to settle a Java patent-infringement lawsuit.

Sun's news release says it does not admit or deny that Java violates Kodak's three object-activation patents. A federal jury in Rochester, New York, ruled Oct. 1 that Sun violated Kodak's patents. According to the Democrat and Chronicle, the jury was scheduled to begin a penalty hearing today to decide how much money Sun owe's Kodak for violating the patents. Kodak was asking for $1.06 billion, while Sun had said it should pay no more than $25 million.

Sun's statement says the settlement resolves "all claims in pending litigation between the parties." The settlement amount includes a license for Kodak's patents. The three-paragraph statement quotes Jonathan Schwartz, president and chief operating officer, as saying:
"We are eager to put this punitive litigation behind us,
to have reached a decision in the best interest of our
stockholders, customers and employees, and to focus our
future activities on the evolution of the Internet and
Sun's place within it."
Kodak's also-three-paragraph news release, also issued today, quotes Willy Shih, Kodak senior vice president, as saying:
"We achieved our goals in this case, which was to protect
our intellectual property rights. We are pleased that the
Court has validated these fundamental Kodak patents and we
now look forward to building a more productive relationship
and continued collaboration with Sun...."

Sun settles with Kodak over patent violation

The Rochester Democrat and Chronicle reports today that Eastman Kodak reached an out-of-court settlement with Sun Microsystems regarding damages over patent infringement. Financial terms of the agreement have not been disclosed. This announcement comes two days after speculation that the Sun-Kodak case could prove pivotal for the tech industry yet have minimal impact on Sun Microsystems, with their $7 billion in cash and other assets.

A jury had been scheduled to hear arguments today in the damages phase of the Kodak vs. Sun trial (Eastman Kodak Company v. Sun Microsystems, Inc, U.S. District Court, Western District of New York, Rochester, NY, Civil Action No. 02 6074T(F)). A jury already determined that Sun Microsystems did infringe on Kodak's patents by adding activatable-object technology to Java in late 1997. The amount of damages did not need to be proven with precision, yet the amount of damages sought by Kodak was $1.06 billion, substantially more than the $25 million maximum that Sun Microsystems thought it should pay as a "reasonable royalty." Both parties agreed that a hypothetical negotiation, representing the date used to determine the damages, would be no later than December, 1997.

To mitigate the damages, Sun took action this week to bring Lloyd Day Jr., one of the founding partners of Day Casebeer Madrid & Batchelder, to the position of lead attorney to represent the company during the damages phase, replacing Michael A. Ladra who served as the lead during the liability phase of the trial. Previously, Mr. Day served as the lead attorney for Sun Microsystems' victorious suit against Microsoft Corporation (Sun Microsystems, Inc. v. Microsoft Corporation, U.S. District Court, Northern District of California, San Jose, Case Number 97-CV-20884). See Sun's article and press release about that lawsuit and settlement.

According to Kodak's Trial Brief Concerning Damages (court services) filed by Kodak on Monday with the court, Kodak was seeking $1.06 billion, an amount determined as "a one-time lump-sum royalty for non-exclusive license to the patents" from December, 1997, the first date of patent infringement. Kodak reasoned that Sun, hypothetically, would have agreed to give Kodak 50% of the $2.1 billion additional operating profit Sun expected to earn from sales of servers and storage equipment for 3 1/2 years beginning in 1998. Kodak pointed out that Sun's revenues increased from $8.6 billion in June, 1997 to $18.2 billion in June, 2001.

Supporting their assertion of this hypothetical financial agreement between the two companies back in 1997, Kodak stated Sun had a dire need for the Kodak technology in 1997, particularly because of an a economic and strategic need to compete with Microsoft's DCOM server technology contained in Windows NT. Microsoft licensed the patented technology in 1995, before Kodak bought the patents from the now-defunct Wang Laboratories. Hence, Kodak's arguments were to rely heavily on showing that the patents were an essential part of Java. It also appears that by establishing that Microsoft (for use in DCOM and OLE), IBM, and HP legally used the patents, Kodak was ready to mitigate and refute Sun's defense that there were other viable alternatives that Sun could have used, a central concept outlined in Sun's Trial Brief.

Kodak intended to provide internal documents and public statements by Sun officials, including Scott McNeally and Jonathan Schwartz, supporting Kodak's claims, as well as videotapes of Sun officers and employees outlining the motivations for the strategic development of Java and what Sun refers to as "developer capture."
Unless Sun could persuade developers to write applications that ran
on the SPARC/Solaris platform rather than Microsoft Windows, Sun's
entire business was in jeopardy. "Developer capture" was and is
critical to Sun, and has been described by Sun as the "flywheel"
of its business.
- p. 6, Kodak Trial Brief Concerning Damages
Kodak acknowledged that Java would run on non-Sun hardware and software, but stated Sun's strategy was to get developers to write for the "Java platform" instead of Windows, thus blunting the importance of Sun's competitor. Kodak claimed Sun's strategy paid off, making Sun Microsystems the No. 1 supplier of Unix-based computers by 1997 and making the company billions of dollars selling servers during the Internet boom years.

Kodak intended to show that Sun had no choice but to use the patents. Java needed an "identify and call when needed" functionality provided by Kodak's patents. (This is the functionality that allows, for instance, an EJB container to activate an instance of the bean upon a client's request.)

Sun was under enormous pressure at the time ...
to add the infringing technology to the Java platform...
Without the infringing technology, server-side Java was doomed.
- p. 8, Kodak Trial Brief Concerning Damages
Back in 1997, the developer community and technical press were buzzing about the fate of Java and RMI. Sun received so much feedback they issued a press release, known as the RMI and IIOP Statement, which was issued as "a courtesy to developers for problem resolution" to directly address developers' concerns, including the issue of whether "Java Remote Method Invocation (RMI) is being 'dead-ended' in favor the other mechanisms for distributed network applications."

In Sun's Trial Brief Regarding Damages (court services), a succinct 5 pages including the title page, Sun countered that had Sun negotiated a license to use the patented technologies in 1997, it would have paid no more than $25 million. Sun was expected to offer expert testimony from Emmett J. Murtha, Jonathan Putnam, and Carl Ledbetter. Sun planned to show their calculation of "reasonable royalty" derived from:
...comparable license and sale transactions involving the Khoyi patents,
the sums paid for other, commercially comparable improvements or
additions to the Java platform, and the various non-infringing
alternatives that would have been available to Sun in 1997...
- p. 3 Sun's Trial Brief Regarding Damages
The critical difference between the two sides appeared to be the existence and valuation of alternative technologies that Sun claims would have provided the same benefit of the Kodak patented technologies, "at significantly less cost to Sun than the sums demanded by Kodak."

In April, 2004, Sun settled their litigation issues with Microsoft out of court. That settlement involved "payments of $700 million to Sun by Microsoft to resolve pending antitrust issues and $900 million to resolve patent issues" and a commitment to a 10-year collaboration for interoperability between Java and Microsoft technologies.

Where is the Technology Press on Kodak v. Sun?

In Eastman Kodak's lawsuit against Sun Microsystems, Kodak alleged that Java RMI activation, Java IDL, and Enterprise JavaBeans technologies violate three patents owned by Kodak. But you wouldn't know this from reading the technology press.

Friday, a federal jury in Rochester, New York, ruled that Sun indeed infringed on Kodak's patents. The trial in the United States District Court for the Western District of New York now continues into a penalty phase. The jury will hear arguments over just how much harm Kodak suffered by Sun illegally using its patented technologies in Java since December, 1997 when Java 1.2 was released to beta. Kodak said in court documents that it would have charged Sun about $1.06 billion for the use of its patented technologies between 1997 and now.

The jury's decision could have far-reaching impact on software patents. The technology press is abuzz with the news. But you'd think the technology reporters would mention something about just what technologies inside Java are affected by the patents. Wouldn't it be interesting to know what parts of Java Kodak says its patents cover? And wouldn't it be nice to know whether Microsoft's .NET falls under Kodak's patents?

But here is what the technology press has to say:
  • The Register has a story today that doesn't mention what the patents cover.
  • CNET also has a story today mentioning the court case. That story summarizes the titles of the patents, saying they cover "the integration of data between object managers, and between data managers, and to the integration of different programs that were manipulating data of different types." True, but what in Java violates these patents?
  • The New York Times's web technology section just provides a copy of the CNET story.
  • IT World carries a story from the IDG News Service that fails to mention how Java violates Kodak's patents.
Is the technology press asleep at the wheel? A poster to Slashdot at least mentioned something about Kodak claiming "Sun violates this patent when Java byte code uses the Java engine to run the code. This may really upset the industry, because not only Sun uses this technology for Java but Microsoft uses this technology in .Net [sic]."

Has tech news come to this, when the most detailed technical information available is from a Slashdot poster? Even TheServerSide was helpless today in explaining the details of the case, quoting the Rochester Democrat and Chronicle story Saturday about the patent lawsuit. The Democrat and Chronicle story describes the patents as covering "a method by which a program can 'ask for help' from another application to carry out certain computer-oriented functions." Ben Rand, a business reporter for the Democrat and Chronicle, has been doing a great job covering this story while most of the rest of the news media have been ignoring it. But since Ben writes for a general-circulation newspaper, you can't expect him to be writing about RMI activation daemons and Java IDL talking to CORBA objects. That's the job of the technology news media.

So, since none of the technology reporters could bother to pay $1.68 for a 24-page court filing, here are the missing facts.

According to a court filing on August 31, submitted by Kodak attorney Paul J. Yesawich III, here is what Kodak says Java violates from Kodak's patents. (Kodak calls these the "Accused Java Packages."): That same court filing, by the way, addresses the question of whether Kodak likely will go after Microsoft next. The "Kodak Statement of Position" document says Microsoft procured a license to the patented technologies in 1995 when the patents were still owned by Wang Laboratories. (Kodak bought the patents in 1997 when Wang was dissolving.)

Since the technology press has been lazy covering this story, we're probably not going to hear more details about the technology in question in Kodak's patents -- unless perhaps the jury actually awards Kodak a $1 billion settlement. Until then, I guess we can get our technology news from Slashdot.

Update: I overlooked a news story by Jim Wagner published Monday on internetnews.com. The story mentions Java technologies involved in the lawsuit.

$1 Billion Question: Did Sun steal Java technology from Kodak?

A federal jury today is trying to decide whether Java contains features that violate Eastman Kodak Co. patents.

Kodak sued Sun Microsystems for more than $1 billion in February, 2002, alleging certain features of Java violate three of its patents. (Kodak acquired the patents when it bought Wang Laboratories in 1997.) Sun not only denies infringing Kodak's patents, but also alleges the patents are invalid because other developers worked on the problems and published the solutions years before the team at Wang. The lawsuit went to trial in Rochester, New York, earlier this month, and the jury began deliberating Thursday.

As near as I can tell from looking at the patents, Kodak is alleging its patents cover technology present in RMI, the RMI registry and/or the remote-activation technology in the RMI daemon. I haven't been able to read the lawsuit to find out for certain.

According to a Sept. 10 story in the Rochester Democrat and Chronicle newspaper, the three patents in question define software "that allows computer programs to 'ask for help' from other programs when needed. That is, bringing the right pieces to life at the right time." None of the stories I've read describe the actual Java technology involved. In fact, WROC-TV in Rochester said in a story that the technology involved was "Java Script."

The patents in question are:
  • 5,206,951, Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types.
  • 5,226,161, Integration of data between typed data structures by mutual direct invocation between data managers corresponding to data types
  • 5,421,012, Multitasking computer system for integrating the operation of different application programs which manipulate data objects of different types.
If the jury finds in favor of Kodak, the trial will enter a penalty phase in which Sun and Kodak will argue over how much Sun should pay for the infringement.

Speaking of patents, CNET published a story yesterday saying Sun filed a patent application defining a method of charging for software on a per-employee basis. It made me wonder who owns the patent for charging for software on a per-CPU basis. Or a per-unit basis. They must be rich. What will we see next, a patent for one-click checkout?