<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>UptoData, Inc.</title>
    <link>http://www.u2d.com/articles</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>An addition to the ubuntu family..</title>
      <description>&lt;p&gt;Thought I'd share this adorable picture of my little one..&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/ezra_ubuntu.png" alt="Ezra Ubuntu"/&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 14 Mar 2007 22:36:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:553d30e0-5207-430a-b517-739615ff0a6e</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2007/03/14/an-addition-to-the-ubuntu-family</link>
    </item>
    <item>
      <title>Desktop Matters: March 8-9!</title>
      <description>&lt;p&gt;&lt;a href="http://desktopmatters.com/"&gt;&lt;img style="float: right; margin: 1em;" src="/images/dmsmall.jpg" alt="Desktop Matters Conference Banner" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm excited about the upcoming &lt;a href="http://desktopmatters.com/"&gt;Desktop Matters&lt;/a&gt; conference.  The last couple of years have seen many topic-focused conferences, including ones on AJAX, Web2.0, and Rails.&lt;/p&gt;

&lt;p&gt;And so it's time we've had a conference focus on Java Swing and related Desktop Client technologies.&lt;/p&gt;

&lt;p&gt;I'm grateful to Jay Zimmerman and Ben Galbraith for making this event happen.  &lt;/p&gt;

&lt;p&gt;And.. I can't wait for the chance to speak on the project that is dearest to my heart:  &lt;a href="http://jmatter.org/"&gt;JMatter&lt;/a&gt;.  I hope to see you  there.&lt;/p&gt;

&lt;p&gt;/ Eitan&lt;/p&gt;</description>
      <pubDate>Thu, 01 Feb 2007 09:27:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4873b6ec-ab07-4e5f-816e-095e16a4768f</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2007/02/01/desktop-matters-march-9</link>
      <category>Java</category>
      <category>Announcements</category>
      <category>jMatter</category>
    </item>
    <item>
      <title>gwt:  initial [raw] thoughts..</title>
      <description>&lt;p&gt;so google finally shows its cards.  they've recently
announced gwt:  the &lt;a href="http://code.google.com/webtoolkit/"&gt;google web toolkit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;before i get going let me first say that i think it
is wonderfully cool for a company like google to 
work out and develop a solution for the web stack,
and then to turn around and open source it;  i.e. to make it
freely available for anyone to use.&lt;/p&gt;

&lt;p&gt;ok, let's get going.&lt;/p&gt;

&lt;p&gt;i find gwt very interesting, to say the least.&lt;/p&gt;

&lt;p&gt;[a] it's simple.  i was able to read their documentation
  and understand how to go about building web apps with
  gwt in very little time.  +1.&lt;/p&gt;

&lt;p&gt;i really think it's too early for many of us to realize
exactly what gwt brings to the table and what implications
this is going to have on the way we build web apps.&lt;/p&gt;

&lt;p&gt;[b] i'm pleasantly surprised to see this solution leverage
  java.&lt;/p&gt;

&lt;p&gt;i'm also surprised to see a solution that provides a way
  to build ajax applications without getting one's hands
  dirty with html and javascript.  it's somewhat ominous.  what does this say about the future of writing web apps?&lt;/p&gt;

&lt;p&gt;implications?
here's a quick brainstorm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the end of markup?  is the swing metaphor for putting together an app
winning over the markup metaphor?&lt;/li&gt;
&lt;li&gt;validates the approach of frameworks such as echo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;here's a bigger one:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;what does this do to struts and the other umpteen
     mvc java web frameworks out there?  is gwt the death
     of the mvc java web framework era?&lt;/p&gt;
    
    &lt;p&gt;what does this do to spring?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;observations?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it's nice to see that some of the great features 
introduced by RoR are being used / adopted by
other frameworks.  i'm referring to gwt's scripts 
&lt;code&gt;projectCreator&lt;/code&gt; and &lt;code&gt;applicationCreator&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;i think gwt is terribly cool.  its introduction
is a terrific step forward.&lt;/p&gt;

&lt;p&gt;stop for a moment and contrast the approach taken
by google vs, for example, yui by yahoo.  yui is very
good.  it doesn't attempt to tackle the whole ball
of wax.  it does ajax and has really no dependencies
on any other parts of the stack.&lt;/p&gt;

&lt;p&gt;google's solution is a much much much more involved
one.  they build a java to javascript compiler (!!!)
to make this work.  they've got a customized mozilla
web browser for testing this thing.  yet, the solution
remains simple, from the point of view of the developer
who has to construct a web app.&lt;/p&gt;

&lt;p&gt;what a testament to css:  of all the technologies
that gwt swallows, css remains intact.&lt;/p&gt;

&lt;p&gt;the introduction of gwt is the first step.&lt;/p&gt;

&lt;p&gt;here's what i think the next step should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;provide a rich set/variety of widgets&lt;/li&gt;
&lt;li&gt;ensure that the mechanism for writing widgets for gwt
is as simple as it can be, and standard.  urge the community to 
contribute widgets, panels, and more.  gwt can quickly grow
into an ecosystem; its own platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;i also have my ideas on subsequent steps but i'll reserve 
those for another time.&lt;/p&gt;</description>
      <pubDate>Wed, 17 May 2006 20:16:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:eca636eaaabccf27f313b03b6a107653</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/05/17/gwt-initial-raw-thoughts</link>
    </item>
    <item>
      <title>NFJS Anthology '06</title>
      <description>&lt;p&gt;Pre-ordering for &lt;a href="http://www.pragmaticprogrammer.com/titles/nfjs06/"&gt;The NFJS Anthology&lt;/a&gt; has begun!&lt;/p&gt;

&lt;p&gt;This title is unique in a number of ways.  For one, roughly a dozen of us have contributed to its creation.  The various authors have something special in common:  we're all speakers on the terrific "No Fluff Just Stuff" series of conferences on Java and related technologies.  We're also all coders, practicioners of our trade.&lt;/p&gt;

&lt;p&gt;In another respect, this book is unique in that the articles it contains reflect in book form the flavor of the NFJS symposia.&lt;/p&gt;

&lt;p&gt;Check it out! &gt;&gt;&gt; &lt;a href="http://www.pragmaticprogrammer.com/titles/nfjs06/"&gt;&lt;img src="/images/nfjs06_small.jpg" alt="no fluff just stuff 2006 anthology"/&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 17 May 2006 18:45:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:171012a26c25b667d415ef21e7e36420</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/05/17/nfjs-anthology-06</link>
    </item>
    <item>
      <title>Thought Catalysis</title>
      <description>&lt;p&gt;Recently some new ideas have come to me out of activities that I
   did not expect would generate any.  In this blog entry I'd like 
   to enumerate sources or catalysts for ideas, for generating 
   thoughts.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Revisiting things you already know:  you will likely see them from a new
point of view.  This will usually happen because time has passed.  You've
changed, you're not exactly the same person you were when you originally
studied the material.  That's what happened to me as I prepared to give 
my set of talks at NFJS last weekend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attend talks given by others.  It's very likely that the same topic 
will be presented from a different angle, a different point of 
view.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get together with other developers.  A NFJS conference might 
do the trick.  JavaOne is coming up.  Maybe your local JUG meeting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Even if a topic is not related to the work that you're currently doing,
you might be surprised to find once in a while that a situation is
discussed that is analogous to yours, albeit in a different domain,
a different context.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provoke thoughts in others.  That has the tendency to amplify the thought
process.  You might not be prepared for an avalanche of feedback, ideas
triggered by your original provocation.  That happened to me recently
after I demo'd some software I was working on to a couple of friends
/ colleagues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A few friends recently decided to get together for Friday lunch meetings.
It's been a great opportunity to discuss what each of us are working
on, articles or books we came across that grabbed our attention or interest.
We always have more to talk about than time available, which is a 
positive sign.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <pubDate>Tue, 02 May 2006 09:36:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:740d8711007c0fb453c0a101ae284202</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/05/02/thought-catalysis</link>
    </item>
    <item>
      <title>MVC without leaks implies generic VC</title>
      <description>&lt;p&gt;How many times have we heard or preached (or both) the important lesson of not having our business logic "leak" into the client tier.  Each time we hear it, we nod our heads and say "how true," and get serious for a moment.&lt;/p&gt;

&lt;p&gt;The idea of logic leaks applies to other aspects of development, not just the client tier.  For example, the Hibernate project is very concerned about not leaking persistence issues to other application tiers.&lt;/p&gt;

&lt;p&gt;As I was thinking about this notion of business logic leakage, a very interesting thought came to me.  Say for example that we define a business object, maybe a &lt;code&gt;Customer.&lt;/code&gt;  Furthermore, let's say we define a number of fields on this object:  name, date of birth, etc..  The minute we put down in our text editor the lines:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;caption&amp;gt;Name:&amp;lt;/caption&amp;gt;
&amp;lt;input type="text" name="name" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;..is the minute we've crossed the line;  we have violated the DRY principle.  We have just leaked business logic into our view.  From now on, if we rename the field, we must do it in two places:  in the model and in the view.&lt;/p&gt;

&lt;p&gt;Now, imagine being in the process of developing an application consisting of a dozen business objects, each with a half dozen fields.  Model changes are going to occur.  They're going to imply making changes in more than one place.&lt;/p&gt;

&lt;p&gt;Given this, it's no wonder that resistance to change grows as a project gets larger.  Yet business change is inevitable.  People talk about the high cost of building software.  It's no wonder the cost is high if we have to manually make each change twice.  Not only is it more work but also error-prone.  The essence of DRY is eliminating that duplication.&lt;/p&gt;

&lt;p&gt;So, having provided a context, I can finally describe this small epiphany I have had in a short sentence:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;*If we're going to have a model-view-controller system 
    without business logic leaking into the view, then we 
    must construct generic views and controllers.*&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What does that mean?  Take for example, the CRUD scaffold generators in Rails.  The code duplication is still there but at least the duplication is automated.  Admittedly not bad for a first pass.&lt;/p&gt;

&lt;p&gt;The other interesting tidbit that sort of "falls out" of this small thought exercise is:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;&lt;em&gt;GUI is plumbing&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've been saying this for a couple of years now but it is still my hope that some day everyone will have good GUI plumbing for their software applications.&lt;/p&gt;</description>
      <pubDate>Mon, 01 May 2006 13:44:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:28445ce3956cfcbc83f793986d27a23b</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/05/01/mvc-without-leaks-implies-generic-vc</link>
      <category>Programming</category>
    </item>
    <item>
      <title>Stoked: Not Just for Surfers Anymore</title>
      <description>&lt;p&gt;I sometimes enjoy describing feelings a software developer might experience, at certain moments during development.   For example, a while back I blogged about &lt;a href="http://weblogs.java.net/blog/eitan/archive/2005/05/grazie_signore.html"&gt;"Grazie Signore" moments&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This past weekend I attended the Northern Virginia Software Symposium and was fortunate to have a little time to spend with my NFJS comrades.  A most vivid comment that Justin Gehtland made during one discussion was how stoked he was about this software we were discussing.&lt;/p&gt;

&lt;p&gt;It occurred to me on the plane ride back to Austin that the term "stoked" is normally used to describe the feeling one gets when surfing.  Perhaps it's also applied in the context of extreme-sports related activity.&lt;/p&gt;

&lt;p&gt;To my wonder, the term could be applied, and very aptly so, to moments that we, geek software developers, have in our work.  That feeling arises when we do something that we think is extremely cool, that perhaps hasn't really been done in that particular way.  For example, I sensed that feeling when reading a weblog I came across on java.net a while back, having to do with a very cool idea that occurred to one of the &lt;a href="http://wicket.sourceforge.net/"&gt;Wicket Framework&lt;/a&gt; developers.  See &lt;a href="http://weblogs.java.net/blog/timboudreau/archive/2006/02/wicket_swing_hm_1.html"&gt;Wicket + Swing == hmmm...interesting...&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I believe that this feeling is the driving force behind the hordes of us out there, of any age, who spend their spare time coding, pursuing the creation of something that, to them, is so incredibly cool.  So, just like surfers can't stop surfing and continually strive to be in that most special state of being stoked, so do software developers.&lt;/p&gt;</description>
      <pubDate>Mon, 01 May 2006 13:14:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5beb3b747c428ae6317211781e7526f5</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/05/01/stoked-not-just-for-surfers-anymore</link>
      <category>Programming</category>
    </item>
    <item>
      <title>The TelePhone is Dead!  Long live the TelePhone!</title>
      <description>&lt;p&gt;I just recently found out about NetGear's announcement of their &lt;a href="http://netgear.com/products/details/SPH101.php"&gt;new Skype Phone product&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The migration path from the phone network to the ubiquitous internet has never been made more clear than by the introduction of this product.&lt;/p&gt;

&lt;p&gt;How marvelous it is when 2+2 stares us in the face and yet we can't solve the puzzle...until something like NetGear's prodcut comes along and everything suddenly becomes clear:  the veil is removed.&lt;/p&gt;

&lt;p&gt;I wonder how many of us will be walking around with Skype Phones in place of our current cell phones a year from now?  Two years from now?  As time goes by and as time is shrunk, the adoption of / migration to this new technology is sure to take less time than past migration have.&lt;/p&gt;

&lt;p&gt;Very cool.&lt;/p&gt;</description>
      <pubDate>Mon, 01 May 2006 07:21:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b6c91fe8b9213dc1bb027d10ad076105</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/05/01/the-telephone-is-dead-long-live-the-telephone</link>
    </item>
    <item>
      <title>A better way to Build Business Software Applications</title>
      <description>&lt;p&gt;Each time I look at the task of constructing a business software application, I see tremendous repetition.  Each application has many facets, most of them are generic.  Yet each time we appear to rebuild each facet from scratch.  For example, we construct new authentication screens.  We build an object model for our domain.  We must construct mechanisms for browsing and searching objects, mechanisms for creating new objects, for viewing objects, for editing and deleting objects:  the CRUD (Create, Read, Update, Delete) operations.  Let's also not forget validation.&lt;/p&gt;

&lt;p&gt;Oftentimes, we deal with scheduling activities and must develop or integrate calendars into our software applications.  Inevitably, our customers will require a mechanism to produce reports.  We will also supplement our user interfaces with wizards, by walking a user through a series of steps.  We need to persist our objects to databases, we need an authorization mechanism.  We need audit mechanisms to find out when information was edited, by who.&lt;/p&gt;

&lt;p&gt;Many of these tasks are generic, orthogonal to the problem domain.  Must we keep on constructing new implementations each time we start on a new project?  Is it even feasible to produce implementations of these concerns (e.g. authentication, authorization, CRUD, a user interface, searching, reporting, wizards, etc..) that are completely decoupled from the business domain in question?  Can we even entertain the thought?&lt;/p&gt;

&lt;p&gt;To me, the NakedObjects framework is a proof of concept.  It demonstrates that it is indeed feasible to implement many of the various concerns of application development generically.  Usually the tradeoff is adherence to certain framework conventions, though others have shown that many of these conventions are not absolutely necessary.&lt;/p&gt;

&lt;p&gt;Look at the scaffolding generators in Ruby on Rails.  Trails is another project that embodies these same ideas.  The idea is basically that a domain model can be constructed that is to a large extent ignorant of the context it runs in.  This sounds like the Spring Framework and Dependency Injection.  But it goes well beyond injecting transactional rules or turning JNDI on its head.  Indeed, a long time NakedObjects proponent, Dan Haywood, is working on his own framework (see &lt;a href="http://www.essentialplatform.org/index.html"&gt;Essential&lt;/a&gt;), and is leveraging the Spring Framework for it.  The Naked Objects folks have recently coined the term "The Naked Objects Architectural Pattern" to categorize frameworks that adhere to their architecture concepts and ideas.&lt;/p&gt;

&lt;p&gt;In Ruby, one uses the piece of metadata &lt;code&gt;:attr_reader&lt;/code&gt; to tag fields that one wants to expose with getter methods.  In NakedObjects, there's a &lt;code&gt;fieldOrder&lt;/code&gt; piece of metadata to relate how fields should be laid out on a form in a user interface.  It is specified in a manner analogous to Ruby's &lt;code&gt;:attr_reader&lt;/code&gt;.  This manner of specifying metadata is also in line with the DRY (Don't Repeat Yourself) principles given to us by the pragmatic programmers.  It expresses our intent succintly and without duplication.&lt;/p&gt;

&lt;p&gt;Let's set aside the "can it be done" question for a moment and envision the rewards.  What do we have to gain as an industry if we manage to develop a system that provides generic implementations for these generic aspects of business application development?&lt;/p&gt;

&lt;p&gt;Imagine an ecosystem, similar to Eclipse, but not for tooling.  Instead, this ecosystem would be a runtime infrastructure ecosystem, where providers supply competing implementations of these various concerns (this is what Rails is evolving towards by the way).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;developers would spend the vast majority of their time directly addressing customers' problems&lt;/li&gt;
&lt;li&gt;conversely, very little time would be spent building software infrastructure&lt;/li&gt;
&lt;li&gt;software infrastructure would become standardized&lt;/li&gt;
&lt;li&gt;development time and cost would decrease dramatically&lt;/li&gt;
&lt;li&gt;infrastructure components would be of higher quality&lt;/li&gt;
&lt;li&gt;the size of the code that pertains directly to a specific project would shrink dramatically&lt;/li&gt;
&lt;li&gt;our abilitly to read, understand, and extend other people's code would likewise improve&lt;/li&gt;
&lt;li&gt;we would have true decoupling of concerns&lt;/li&gt;
&lt;li&gt;the developer would simply plug in their object model (the data and behaviours) into a 
 an infrastructure that would supply everything else&lt;/li&gt;
&lt;li&gt;we'd be able to pick which aspects we want to include in our application at deployment time (the true, original vision of J2EE by the way)&lt;/li&gt;
&lt;li&gt;our applications would inherit new features when infrastructure upgrades came along,
 without even altering a single line of code in our applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm not even mentioning the benefits to developer-customer relations, the closer mapping between a user interface and its object model with direct benefits to customers' understanding of the logic behind a business application (hence the term "Naked Object").&lt;/p&gt;

&lt;h2&gt;Aside&lt;/h2&gt;

&lt;p&gt;Many people have been saying "Move over Java, Ruby is the new language in town."  I do agree to some of the arguments but not all of them.  How much of this is a language issue?  I do admit that maybe implementing such a system is easier and simpler in Ruby.  But that does not mean that it cannot be done in Java.  Java has reflection.  Java does not have mixins.  Java has AOP.  So there are tradeoffs.  I suppose if you really want to do it from scratch, Ruby might be a better choice, from a certain point of view.  If you're building a rich client that needs to run cross-platform with a minimum of fuss, I'd say that Java is the better choice.  Smalltalk could be just as good a choice, perhaps a better one.  Paul Graham says it's LISP and I know he's got some very good reasons.&lt;/p&gt;

&lt;p&gt;My contention is that the debate has been focusing disproportionately on the language as the root enabler of frameworks such as Rails.  The ecosystem I dream of can be constructed in Java.  We would reap serious savings in development time, development cost, similar to the time and cost savings that are being boasted about by the Rails community.&lt;/p&gt;

&lt;p&gt;I have developed my own framework that embodies these ideas.  At this time, this framework addresses only workgroup business applications.  It does not tackle the important issue of transport.  I have recently employed this framework to construct a small solution for a customer.  The numbers are in line with my expectations.  On this particular job, I spent under two weeks implementing the solution when the original estimate had been in the order of two months.  So how much does this have to do with language?&lt;/p&gt;</description>
      <pubDate>Wed, 19 Apr 2006 12:00:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:bee2f260586ae3c9ea2d9bf3cd78de53</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/04/19/a-better-way-to-build-business-software-applications</link>
      <category>Java</category>
      <category>jMatter</category>
    </item>
    <item>
      <title>Virtues of Window Managers</title>
      <description>&lt;p&gt;I have been using linux on the desktop for about a year now.  I do love it.&lt;/p&gt;

&lt;p&gt;Like most people, I do have a penchant for a great desktop and lots of critical opinions about what makes a good desktop.&lt;/p&gt;

&lt;p&gt;I must admit recalling using windows with joy a decade ago and how productive I could be in that environment (windows 3.1, windows 95).&lt;/p&gt;

&lt;p&gt;The two virtues I look for in a good window manager are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;performance&lt;/li&gt;
&lt;li&gt;stays out of your way, allowing you to be productive&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ok, now that I think of it:  keyboard accessibility is also &lt;em&gt;very&lt;/em&gt; important to me.&lt;/p&gt;

&lt;p&gt;As I try to rate Gnome and KDE against these qualities, I find that Gnome has had less than perfect performance but has done a good job staying out of your way.  I also rank it highly on keyboard accessibility.&lt;/p&gt;

&lt;p&gt;With KDE the opposite seems to be true:  the performance is great, but I found myself continually futzing with it, being distracted from the work I actually needed to do.&lt;/p&gt;

&lt;p&gt;So I have been a Gnome user, and a happy one at that.  I'm also looking forward to Gnome 2.14 and Dapper Drake, which will improve the performance of the window manager.&lt;/p&gt;

&lt;p&gt;I'm also looking forward to a year from now where Core Duo notebook prices will be lower, and the improved performance that will come with it.&lt;/p&gt;

&lt;p&gt;I suppose I should also say a word about the MacOS.  It stays out of your way nicely and it's fast.  The problem is that it ran on hardware that was slower than a snail (the G4).  They fooled a lot of people into thinking the G4 was a fast processor.  Anyhow I digress and Apple is not what this blog entry is about.&lt;/p&gt;

&lt;p&gt;So I am writing this as I download Xubuntu:  Ubuntu + Xfce window manager.  I don't know why I overlooked Xfce before.  I just checked out the screenshots and the movies and it &lt;em&gt;appears&lt;/em&gt; to be what I have been looking for all these years.  The price of ignorance is indeed high.  I hope in a future blog to recount how things go between me and Xfce.&lt;/p&gt;</description>
      <pubDate>Fri, 07 Apr 2006 12:46:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c45c94dc3bdd5beeec3c30b7c8a6a08c</guid>
      <author>Eitan</author>
      <link>http://www.u2d.com/articles/2006/04/07/virtues-of-window-managers</link>
      <category>Linux</category>
    </item>
  </channel>
</rss>
