Sounds painful, doesn’t it – Here is a picture of Doug Pedrick, accepting the Dukie for GE Healthcare.

Here’s the gang at the Keynote. Pictured left to right: Jim Cornelius, Me, Doug Pedrick, Jon Eagles and Troy Birk.

Advertisements

Disappointed at JavaOne

June 29, 2005

I have to say that I have been disappointed with the quality of technical sessions at this year’s JavaOne so far. It may be that I’m picking sessions that suck – But every session I’ve been so far hasn’t gotten me excited about the topic. All the talks I’ve attended so far have been PowerPoint presentation that I could have looked at on my own time. I’m here because I want to learn something new and my ideal technical session would be where the presenter spends a few minutes with PowerPoint slides and then fires up an IDE and writes code. Show me what you’ve got – Don’t bore me with PowerPoint that’s going to put me to sleep. Another disappointing thing is all the new ‘stuff’ that’s interesting is a year away from being GA. Sure I can play with JAX-WS 2.0 today but I have real problems that I need to solve today and I want to know how to solve them today and not wait for a solution that’s a year away.

June 28, 2005

The 2nd day keynote started off with John Gage as usual. After a few housekeeping items, Scott McNealy came on to deliver the keynote. No real news beyond the acquisition of SeeBeyond. I usually would skip Scott McNealy’s talks but actually went because a friend of mine that works for GE Healthcare was getting a Dukie, which is handed out every year in several categories for outstanding achievement in the Java community. Congratulations Doug and GE Healthcare.

Technorati Tag:

After lunch, Mark Carges, the new CTO of BEA Systems, hosted the second general session. Mark started by talking about ‘Liquid assets’ and pitches the new Aqua line of products at BEA. He started off by talking about Java application frameworks. He claimed that Java application frameworks were the most important productivity-related innovation since the Java IDE. He then talked about frameworks in the realm of web/UI, business logic and database access and then came the big news – BEA will certify Beehive, Struts, Spring and JSF (coming soon) on top of WebLogic server. So customers of BEA that have purchased support can call BEA about issues with their Struts and Spring apps. The next part of this was a partnership with Interface21, Rod and Juergen’s company where BEA will offer support for Spring applications. BEA will also provide Eclipse plug-ins for some open source application frameworks. You’ll be able to deploy applications to WebLogic, Tomcat, and Geronimo seamlessly.

Next up was Adam Fitzgerald and Rod Johnson (Rod’s British? When did this happen? Aussie – My bad). Rod and Adam demoed JPetstore built using Spring and Beehive using Eclipse. The demo started with the application running on Tomcat and then Adam switched over and deployed the application over to WebLogic. When he flipped over the WebLogic 9.x console, there was an additional tab for Spring beans. The partnership will essentially enable JMX for POJO’s.

Mark then talked about the new realm of application opportunities opening up in the field of telecommunications with the carrier-grade WebLogic communication platform. At the center of this platform is BEA’s JRockit, the fastest JVM on the planet. BEA’s been working hard and optimizing GC (predictive) where they can run telecommunication applications. Part of this platform is the SIP servlet spec (JSR-116) and their implementation included in this WebLogic communication platform.

In conclusion, BEA is betting on the blending of open-source and commercial solutions. I know that is a true statement for the company I work for, and I’m guessing this is fairly common across the landscape. BEA’s accepting the fact that people may have their application deployed on Tomcat – they just want to ready when the app running on Tomcat needs transaction support (JTA), clustering or more scale. BEA hopes to provide solution that will allow a one-click migration from Tomcat or Geronimo to WebLogic.

BEA, Spring, JRockit, JavaOne, WebLogic

John Gage kicks off the first day with his usual routine before turning it over to Jonathan Schwartz, the COO of Sun. The basis premise of his talk was that technology has a social utility and participation drives economic and social progress. He also talked about how blogs and wikis are changing how information gets published and distributed.

Next up was Yasushi Nishimura, the director of Panasonic USA and he talked about the Blu-ray disk which is the next big-thing in storage. Blu-ray DVD holds about 50 GB on a single disc with a potential of up to 200 GB. The Blu-ray disc standards bodies will use Java, as the standard for the interactivity menus and so all players will ship with a Java VM built into it. All menus and playback is controlled by Java and additional functions like in-movie menus, extras, etc are also all controlled by Java.

Takeshi Natsuno, the Founder of iMode at NTT DoCoMo was up next and he talked about the economic value of Java. NTT DoCoMo supposedly makes $ 6 Billion a year from their iMode service.

Jonathan then talked about Sun’s strained relation with IBM. The big-news was that IBM extended their Java license for the next 10-year deal. Steve Mills, Senior VP of the IBM Software Group talked via video about this deal. He then went to discuss Sun’s relationship with Apache and FOSS – Free and Open Source Software. His premise here was that there is a social utility to free software and that the money is in hardware and services and not software. Interesting.

The big news that he had was something I blogged about earlier – open sourcing the Sun J2EE application server available from java.net under project GlassFish (open-esb.java.net). This includes the app server, their ESB and JBI (JSR-208) released under the CDDL license. John Loiacono, VP of the Software Group at Sun came on next to talk about it. He claimed that there are 4.5 million Java developers, 2.5 billion Java devices worldwide and the number of Java-enabled handsets exceeds Java-enabled PC’s. Interesting trend. He then talked about Compatibility and jdk.net where you can download early releases of all the future JDK’s. The next item on his list was Java Business Integration specification and the official release of v1.0. He showed a slide with vendors that were supporting JBI v10 and it was interesting to note that IBM and BEA were not on the list.

Tor Norbye, Senior Sun Engineer and his team created the java Studio Creator 2 and he talked about the new product. The latest version is built on top of NetBeans and includes some new rich components including some new AJAX enabled components that offer Google Suggest like functionality. The AJAX component is available from java.net and Creator 2 from http://www.developers.sun.com/jscreator.

Next up were Charles Beckham and Chris Webster to talk about Java Studio Enterprise 8. They demoed their business process integration tool that is the graphical drag-n-drop tool for connecting services visually without writing plumbing tools. The tool also includes an XML-Java transformation tool that uses XML Schemas to visually map XML to Java. This will be available in early fall.

David Yach, the VP of Engineering of RIM was up next and they demoed a neat little application on the Blackberry. He then brought up Eclipse and published a simple Web Services application to the Blackberry simulator. The development environment looks pretty cool and showed a lot of potential.

John Loiacono, VP of the Software Group at Sun continued on talking about performance and DTrace and how showed off some awesome performance improvements for C and C++ application. He then invited Adam Leventhal to talk about DTrace Java. Adam did a hands-on demo where he traced a GUI application running on a Solaris boxes. DTrace showed how much time was being spent in Java code, native code or in the kernel code.

Robert LeBlanc, the WebSphere general manager was up next and he talked about the 10 or 11 year (ala Spinal Tap) deal IBM signed with Java. He basically stressed the importance of Java to IBM. Sun announced the whole IBM software stack from WebSphere, Tivoli, MQ, etc will be ported to Solaris 10 platform.

The next discussion item was the new Sun Ultra 20 Workstation running an AMD Olteron CPU. Nice demo of a military/homeland security application where they had 3D models to simulate terrorist attack. Sun is going to bundle all of their Sun studio and Creator tools into this bundle and sell it as a subscription model starting at $29.95, with a 3-year license agreement. More details are at http://www.sun.com/ultra20.

John Gage was back up to introduce James Gosling and his t-shirt hurling machine competition. The first entry was from El Salvador and it looked pretty cool. The first couples of attempts were pretty weak and they dumped their little t-shirt tossing tool and starting tossing them by hand. James Gosling is doing the Thursday keynote and is going to talk about all the toys including Blu-ray, mobility (MIDP), Boeing real-time flying drone, etc.

Scott McNealy then interrupted the discussion between James and John to invite a marching band, Duke and massive cake to celebrate 10 years of Java. Scott then brought out the original Green team on stage and then everyone sang happy birthday to Java. John Gage then talked about a new book that Sun’s going to publish that will capture the first 10 years of Java. The book will be available at java.com/birthday.

Next up was the Graham Hamilton show. Graham talked about the roadmap for Java SE. The first thing is they are dropping the 2 from Java 2 and so the new names are Java Platform Standard Edition (Java SE), Java Platform Enterprise Edition (Java EE) and Java Platform Micro Edition (Java ME). The new releases will be Java SE 6 and Java EE 5. All new Java API’s will go through the JCP and I’m not sure if that’s good or bad. Another piece of news is that they won’t be doing a ‘5.1’. Mustang or Java SE 6 will ship in summer of 2006 and Dolphin (Java SE 7) in 1Q 2008. New in Mustang will be compatibility, stability, quality, diagnosability, monitoring & management (upgrades to JMX and JConsole), XML and Web Services (JSR’s 105, 173, 181, 222, 224), a lightweight server stack, ease of development which includes Rhino (Rhino JavaScript engine – JSR 223), additional annotation support in JDBC 4.0 (JSR-221), XML data support, Javadoc update (JSR-260). The Java Desktop will include full Longhorn support and include the Avalon look-and-feel, CLR/VM coexistence, and graphics improvement. The last theme of Java SE 6 is where Sun wants to be more open and transparent in the JDK development process. Project is hosted at mustang.dev.java.net and people will be able to download weekly builds and play with the bits. The licensing schemes around Java has also changed and the new JDL (Java Distribution License) is for commercial use while the Java Research License (JRL) is a 2-page license where you can download Java source code and play. The third new license, Java Internal Use License (JIUL) will allow users to deploy their our own bug fixes internally without running any of the compatibilities test suites.

Dolphin or Java SE 7 features include direct XML support, “friends” for cross-package references, method references for GUI handlers, JVM bytecode for dynamic languages, BeanShell (JSR-274), new I/O API’s (JSR-203) and new packaging and deployment architecture where the distribution, installation and loading are separated.

Bill Shannon came on next to talk about the J2EE or Java EE 5 roadmap. Simplifying the programming model was a key theme with POJO-based programming model, extensive use of annotations, resource injections and new API’s and framework. Major features of Java EE 5 will be simplified Web Services support, better standards support for WS, simplified EJB development, a new persistence API and easy web application with JavaServer Faces (JSF). JAX-RPC gets renamed to JAX-WS (interop) and JAXB (xml binding) make up the new WS stack. Standards supported include SOAP 1.2, XML Schema 1.0, WSI 1.1 and many others. The new persistence API is also usable in Java SE as well and made up with the expert group that includes EJB, JDO, Toplink, Hibernate people. Interesting new thing in EJB 3.0 is the idea of defaults where most common things like transactions are on by default. Java EE 5 new contents including JSTL (JSR-52), StAX (JSR-173), WS Metdata (JSR-181), new persistence API (JSR-220), JAXB (JSR-222), JAX-WS (JSR-224), common annotation (JSR-250), and JSF (JSR-252). The Java EE 5 SDK beta will be available in Q4 2005 with the final release in Q1 2006.

Mark Hapner was on next to talk about the vision of SOA, just as my battery died. Saved by the battery 🙂

Doug Pedrick, the Uber GE geek just pointed out an article in the San Francisco Chronicle. It’s also on Sun’s site and so it’s official. I wonder if this is an attempt to kill Geronimo.

JavaOne – Day 0

June 27, 2005

Flew into San Francisco yesterday early enough to attend some of the festivities going on around JavaOne. Apparently Market Street was blocked off for the Pride Parade and I missed all the excitement. After registration, we headed down to the NetBeans Day to check out the latest happenings on the NetBeans front. This event was at the Argent hotel and it was a full house. Not being a NetBeans user, it was just interesting but the one cool thing was the demo of the Matisse GUI builder that looked pretty cool. The layout manager issues that usually bites people seem to have been solved – Time will tell. A bunch of us were stalking James Gosling as he was hanging outside. We even got James to post for a picture with Darcy, Troy’s wife. Can you just imagine the scene? Four geeks with camera phones trying to take a picture and James scoffs at our camera phone. His comment was and I quote, “Does anyone have a real camera, one that doesn’t suck?” 🙂 We did find a real camera and got some neat pictures. Will post them here once the GE guys ship them over.

After NetBeans, we headed down to the Alumni Fireside chat, which turned out to be a pretty fun event. This was an open forum for developers to ask questions of the experts from Sun and there were some tough questions. It was interesting to see the interest in J2ME, which I’ve always dismissed, as an early-access thing and nothing real. There were a lot of hints about new announcements coming this week. Quite a few people took shots at the Microsoft-Sun love affair and the interoperability track. I for one think interoperability is important and most enterprises have .NET and Java and they need to play together.

It was funny to see AJAX everywhere 🙂

Ok – I think I finally have the list whittled down to just the JavaOne sessions I want to or need to attend. I’ve got the duplicates down to a minimum and now just need to figure out which BOF’s I can blow off to attend some of the vendor parties and catch-up with friends or make new friends over beer.

I was disappointed that the JavaOne schedule site hosted by cplan.com didn’t have a HTML export or publish to your blog or RSS/ATOM feed of your schedule. Why don’t we eat our own dog food and use technology for these things? Here’s my lame attempt to have Excel spit out an HTML document from the CSV.

[OT] Save PBS & NPR

June 23, 2005

I know this is a little off-topic for this blog, but the idiots in Congress are at it again and this time they are trying to cut funding for PBS and NPR. PBS and NPR produce a lot of great commercial-free television and radio shows in the US. I never miss shows like FrontLine, NOVA, and Innovation on PBS. In addition, they produce countless other educational, entertaining programs for people young and old.

National Public Radio is also a target as Republicans claim it’s too hard on Israel. I am an avid NPR listener and I find their reporting to be the most balanced, honest and interesting.

There are a few places to go to support NPR and PBS:

Sorry for the diversion – Now back to our regularly scheduled programming. 🙂

 

Now playing: ColdplayWhat If

Geek Book Club

June 22, 2005

The votes are in and the next selection for the Geek Book Club is Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin. The next meeting is on Friday, July 15 at 7:30am at the Panera Bread location at Mayfair Mall. Be there or be square 🙂

Single Sign-On, The Java Way
by Clint Boulton
, InternetNews.com from XML.org Daily Newslink

Sun Microsystems ratcheted up its identity management portfolio by offering two new products that help corporations extend secure access to outside partners and suppliers. Called Java System Federation Manager and Java System Identity Manager Service Provider Edition, the products allow customers to deploy ID management and user provisioning for applications and computer gear outside their intranets and firewalls. The idea is to allow partners access to specific sites without letting them run roughshod over the network, peeking at any data they desire. This is a major change from the traditional method of walling off networks to partners and customers. The software supports Security Assertions Markup Language (SAML), Liberty Identity Federation Framework, and Liberty Identity Web Services Framework standards, too. The tool can also integrate proprietary mechanisms, such as a Windows desktop. Identity Manager Service Provider Edition provides identity administration tools that make it easy for businesses to deploy applications and services from third-party partners. The product, which grants smooth data exchange in high-volume extranets, allows customers to replace less sophisticated and reliable identity management programs. The software can also automate the setup and management of federated accounts. Sun has crafted the new software to fill a market gap in terms of how partners were putting together federation on their side. Companies are creating too many one-to-one federated relationships instead of many-to-many exchange models.

More @ http://xml.coverpages.org/SunFederation200506.html

This is one of those issues where I’m not sure it’s a feature or a bug. In iBATIS, you can use a parameterMap is to define an ordered list of parameters that match up with the value tokens passed along to your PreparedStatement. Here’s a simple example from the doc:

 

    
        
        
    

    
        insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (?,?);
    

So parameterMaps work great as you can create a Map instead of a concrete class to pass into the application. I typically use a JavaBean for parameters but will use Maps as a quick workaround for simple quick application. Today I discovered that you couldn’t use parameterMaps if you are only passing in just1 parameter. If you try, you end up getting an SQLException with a ‘Parameter index out of range’ message.

Reading the doc seems to indicate that this is a feature as the doc reads:

If you are in a situation where it is not necessary or convenient to write a JavaBean class, and a single primitive type parameter won’t do (e.g. there are multiple parameters), you can use a Map (e.g. HashMap, TreeMap) as a parameter object.

So the clear implication is that you only want to use a Map if there are multiple parameters even though the doc doesn’t clearly state that. Just thought it was interesting. I’m downloading the code as we speak – hope to figure out the real cause and maybe submit a patch or a Jira issue at the very least.

This is pretty interesting – Just read in the Wall Street Journal that Google is planning on offering an electronic-payment service that is probably fairly similar to eBay’s PayPal. I guess the next step would be to offer listing service like eBay or CraigsList and take a serious bite out of eBay’s revenues. EBay is a Wall Street darling and all attempts to mimic it have been met with mixed results. Amazon, Yahoo and others have tried to no avail and so it will be interesting to see if Google can beat eBay at its own game. So what’s next – Google Bill Pay?

Java Puzzlers: Traps, Pitfalls, and Corner Cases by Joshua Bloch, Neal Gafter
Paperback: 304 pages
Publisher: Addison-Wesley Professional (June 29, 2005)
ISBN: 032133678X

Just got an email from Addison-Wesley about the new/upcoming books and I found a new book by Josh Bloch and Neal Gafter. Here is a brief description of the book from the email:

How well do you really know Java? Are you a code sleuth? Have you ever spent days chasing a bug caused by a trap or pitfall in Java or its libraries? Do you like brainteasers? Then this is the book for you! Illustrated with a variety of engaging optical illusions, Java Puzzlers features 95 diabolical puzzles that educate and entertain. Anyone with a working knowledge of Java will understand the puzzles, but even the most seasoned veteran will find them challenging.

Tried ordering a copy on Amazon but it looks like this is one of the many books premiering at JavaOne.

An Introduction to Service-Oriented Architecture from a Java Developer Perspective by Debu Panda — Service-oriented architectures offer a new way to think about building software applications, with coarse-grained pieces of functionality split out into “services” that communicate with standardized, widely understood interfaces like XML and SOAP. In this article, Debu Panda shows you how to design and connect SOAs.

JCaptcha and NPR

June 9, 2005

Its funny how my mind works – I was listening to NPR’s Weekend Edition over the weekend and they were going through listener’s comments. At the end of that segment, they mentioned that they were not going to accept email comments to their old address. They want listeners to go to npr.org and fill out a web form to enter their comments. The first thought I had was spam – It had to be spam. Having an open email address that’s published must get a ton of spam. I know I get a ton of spam daily and so I’m guessing NPR must have been getting thousands and thousands of spam messages.

So as I’m driving along, I started thinking about moving to the web-form model to solicit feedback and I just assumed that they would take the next logical step and add Captcha to their web app. If you don’t know, Captcha (completely automated public Turing test to tell computers and humans apart) is an acronym for a type of challenge-response test to determine whether or not the user is human. Thinking about Captcha got me thinking about JCaptcha, an open-source Java framework for Captcha definition and integration. I knew about JCaptcha as I had read about it on Dion’s blog a while back and so I finally decided to download and give JCaptcha a try.

I was impressed with how easy it was to incorporate Captcha into an existing application. Here is a simple web-app I built using the 5 minutes application integration tutorial on the JCaptcha wiki.

Here’s the JSP that acts as an entry into the application:




<title>JCaptcha Sample</title>


<h1>Sample JCaptcha</h1>
</p><p>A captcha (an acronym for "<b>c</b>ompletely <b>a</b>utomated <b>p</b>ublic <b>T</b>uring
test to tell <b>c</b>omputers and <b>h</b>umans <b>a</b>part") is a type of challenge-response
test used in computing to determine whether or not the user is human.</p>

<form method="post" action="/jcaptcha/validate">
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td><b>Name:</b></td>
<td></td></tr>
<tr>
<td><b>Email Address:</b></td>
<td></td></tr>
<tr>
<td><b>Comments:</b></td>
<td>
<textarea name="comments">
</textarea></td></tr>
<tr>
<td colspan="2"><b>Enter the text as it is shown below:</b></td>
</tr>
<tr>
<td><img src="jcaptcha"/></td>
<td></td></tr>
<tr>
<td colspan="2"><b>This extra step helps prevent automated abuse of this feature.
Please enter the characters exactly as you see them.</b></td>
</tr>
</table>
</form>


To initialize the Captcha service, you create a singleton to instantiates an instance of the ImageCaptchaService that provides the facility to cache the Captcha and create the image.

package com.j2eegeek.jcaptcha.common;

import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import com.octo.captcha.service.image.ImageCaptchaService;

/**
 * The <code>CaptchaServiceSingleton</code> implements the Singleton patterns and returns an instance of the
 * ImageCaptchaService.
 */
public class CaptchaServiceSingleton {

    private static ImageCaptchaService instance = new DefaultManageableImageCaptchaService();

    public static ImageCaptchaService getInstance() {
        return instance;
    }
}

Once we’ve created an instance of the ImageCaptchaService, we can create a servlet that will allow us to create an image. The servlet ends up calling the singleton to get an instance of the CaptchaService Singleton and calling its getChallenge() method.

/**
 * The <code>ImageCaptchaServlet</code> class creates the actual image that's displayed to the user for validation.
 * The servlet ends up calling the singelton to get an instance of the CaptchaService Singleton and calling its
 * getChallenge method.
 */
public class ImageCaptchaServlet extends J2EEGeekBaseServlet {

    private static final Log log = LogFactory.getLog(ImageCaptchaServlet.class);

    public void doWork(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

        byte[] captchaChallengeAsJpeg = null;
        // the output stream to render the captcha image as jpeg into
        ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
        try {

            // get the session id that will identify the generated captcha.
            String captchaId = req.getSession().getId();

            // call the ImageCaptchaService getChallenge method
            BufferedImage challenge = CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId, req.getLocale());

            // a jpeg encoder
            JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);
            jpegEncoder.encode(challenge);
        } catch (IllegalArgumentException e) {
            log.error("IllegalArgumentException exception - " + e.getCause().getMessage());
            res.sendError(HttpServletResponse.SC_NOT_FOUND);
            return;
        } catch (CaptchaServiceException e) {
            log.error("CaptchaServiceException exception - " + e.getCause().getMessage());
            res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            return;
        }

        captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

        // flush it in the response
        res.setHeader("Cache-Control", "no-store");
        res.setHeader("Pragma", "no-cache");
        res.setDateHeader("Expires", 0);
        res.setContentType("image/jpeg");
        ServletOutputStream out = res.getOutputStream();
        out.write(captchaChallengeAsJpeg);
        out.flush();
        out.close();
    }
}

Once you’ve created the image and displayed it via the index.jsp page, you need to validate the response entered by the user.

public class ValidateServlet extends J2EEGeekBaseServlet {

    private static final Log log = LogFactory.getLog(ValidateServlet.class);

    public void doWork(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

        res.setContentType("text/html");
        ServletOutputStream out = res.getOutputStream();
        out.println("<title>JCaptcha Sample</title>");
        Boolean isResponseCorrect = Boolean.FALSE;

        String captchaId = req.getSession().getId();
        String response = req.getParameter("j_captcha_response");
        try {
            isResponseCorrect = CaptchaServiceSingleton.getInstance().validateResponseForID(captchaId, response);
        } catch (CaptchaServiceException e) {
            log.error("Exception - " + e.getCause().getMessage());
        }

        if (isResponseCorrect.booleanValue()) {
            out.println("<h1>Success -- <a href="/jcaptcha/">Try again?</a></h1>");

        } else {
            out.println("<h1>Failure -- <a href="/jcaptcha/">Try again</a>");
        }
    }
}

Here’s all the code that’s essentially a rip-off from the wiki as a IDEA project. Another great resource is the JavaWorld article that Dion points to written by Anand Raman. He goes into details about incorporating Captcha into JAAS.

Looks like what started out as a rumor might actually turn out to be true – C|Net is reporting that Apple Computer plans to announce Monday that it’s scrapping its partnership with IBM and switching its computers to Intel’s microprocessors. This is quite a shift for Apple but nothing new given their history of not worrying about backwards compatibility.

Now why would Apple want to switch to Intel chips? Would Apple actually sell their OS to the masses without their proprietary hardware? Could you just deploy the MAC OS on any vanilla Wintel machine? If that is their intention, it could potentially open up a huge market and revenue stream for Apple. It’s interesting to look at a company like Microsoft who makes all of their money on software, running on commodity hardware. Hardware companies have had a much harder in the past 2 decades and so Apple could actually grow if they start thinking of themselves as a software company. I wonder what Microsoft thinks about this – Linux on the desktop for the masses has never been a viable option. I’ve been a Linux user since the early 90’s but I’ve relegated my Linux boxes to the server role. If MAC OS was generally available for any Intel based machine, Windows would finally have some real competition for the desktop.

The article goes on to say that the higher-end Mac’s would be running Intel chips in mid-2007, which is right around when Longhorn will probably ship. I guess this could end up being a great OS battle. The latest OS from Microsoft vs. the latest OS from Apple – I don’t know how will win or even what will happen but I think consumers will win in the end because Microsoft will finally had to start innovating. Microsoft will have real competition in the OS market and they know that if you lose the OS market, you’re going to lose the desktop and that usually means ‘game over’. It’s like the old Chinese proverb – “May you live in interesting times”.

Of course this is all supposition as Apple could just be happy with the market share it currently has and the move to Intel could just something internal. But it seems like that this architecture change is pretty radical and there has to be something more to it.