<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Amy Fowler&apos;s Blog</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/" />
<modified>2008-05-19T17:32:16Z</modified>
<tagline></tagline>
<id>tag:weblogs.java.net,2008:/blog/aim/48</id>
<generator url="http://www.movabletype.org/" version="3.01D">Movable Type</generator>
<copyright>Copyright (c) 2008, aim</copyright>
<entry>
<title>responding to questions on Swing, RIA, and JavaFX</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2008/05/responding_to_q.html" />
<modified>2008-05-19T17:32:16Z</modified>
<issued>2008-05-19T17:32:05Z</issued>
<id>tag:weblogs.java.net,2008:/blog/aim/48.9831</id>
<created>2008-05-19T17:32:05Z</created>
<summary type="text/plain">JavaOne raised many questions for Swing developers regarding the future of client development and I&apos;d like to take a first stab at answering some of them.</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[To me, one of the most enjoyable parts of JavaOne is hanging out in the audience in Hall E-135 (traditional home of the Desktop track) and chatting face-to-face with developers between presentations.   Kirill Grouchnikov (of Substance look-and-feel fame) always asks us insightful and often difficult questions.  This year he asked if he could interview me post-JavaOne to address many of the concerns which the conference raised for desktop developers.  Read the <a href="http://www.pushing-pixels.org/?p=312">interview</a> if you're curious, and please post any follow-up questions.]]>

</content>
</entry>
<entry>
<title>Embedding Swing components in a JEditorPane</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2007/07/embedding_swing.html" />
<modified>2007-07-19T18:31:57Z</modified>
<issued>2007-07-19T15:15:21Z</issued>
<id>tag:weblogs.java.net,2007:/blog/aim/48.7810</id>
<created>2007-07-19T15:15:21Z</created>
<summary type="text/plain"><![CDATA[I was talking to a developer at JavaOne who didn't realize you can use the &lt;object&gt; tag to embed Swing components inside HTML within a JEditorPane.  This turns out to be easy, modulo a small hook in the javax.swing.text package.   Here I explain in reasonably short form how to do this.]]></summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>
In the early days of Swing we spent many lunches arguing over the best way to do GUI layout.  Tim Prinzing, the original architect of Swing's text package, believed that one sensical approach would be to leverage the power and popularity of  HTML for GUI screen layout, and so from the very beginning he made sure it was possible to use the &lt;object&gt; tag to embed GUI components within HTML inside a JEditorPane.   The page below embeds a JButton in the center of an HTML table:
<xmp>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
      <table width="90%" height="90%" align="center">
          <tr align="center">
              <td align="center">
                  <object classid="javax.swing.JButton" label="just do it">
                  </object>
              </td>
          </tr>
      </table>
  </body>
</html>
</xmp>
<p>
I've used a JButton here for simplicity, but this would also work with any java.awt.Component subclass.
And here is the Swing code that loads page into a JEditorPane:
<pre><code>
    JEditorPane htmlPane = new JEditorPane();
    htmlPane.setContentType("text/html");
    htmlPane.setEditable(false); // very important, as the default is true (sorry about that!)
    try {
          htmlPane.setPage(Demo.class.getResource("resources/jbutton.html"));
    } catch (Exception e) {
          // handle load failure
    }
</code></pre>
<p>
Now I'm not suggesting that we should abandon the use of tools and good layout managers in favor of HTML, but there may be an occasion where you'd find some utility in being able to embed components within HTML.  In my case this is in writing some new demos for SwingSet3;  I want to provide an HTML description (containing links, etc) of the demo and rather than placing that html adjacent to the running demo, it's a little more fun to just embed the demo within the descriptive html.
<p>
Displaying the components in the page is the easy part.   The tricky bit is in how to access the handle to the component instance in order to make the GUI do something useful in your application.    You'd think you could simply dig around in the
editorpane's view hierarchy until you find a component of the proper class, however setPage() is asynchronous and it turns out it's hard to know precisely when you can count on finding the instantiated component of interest.
<p>
What you really want to do, if you're brave enough to tease open javax.swing.text, is to take control of the view factory to insert your own code at precisely the point when your component is instantiated.    And just to rile up all those who think inheritence is the root of all evil, I'm going to neatly pack up all the code to do this in one simple JEditorPane subclass:
<pre><code>
public class HTMLPanel extends JEditorPane {
    public HTMLPanel() {       
        setContentType("text/html");
        <b>setEditorKit(new CompEditorKit()); // install our hook</b>
        setEditable(false); // VERY IMPORTANT!
    }   
    protected class CompEditorKit extends HTMLEditorKit {
        @Override
        public ViewFactory getViewFactory() {
            <b>return new CompFactory();</b>
        }       
    }   
    protected class CompFactory extends HTMLEditorKit.HTMLFactory {
        public CompFactory() {
            super();
        }
        @Override
        public View create(Element element) {
            AttributeSet attrs = element.getAttributes();
	    Object elementName = attrs.getAttribute(AbstractDocument.ElementNameAttribute);
	    Object o = (elementName != null) ? null : attrs.getAttribute(StyleConstants.NameAttribute);
	    if (o instanceof HTML.Tag) {       
                if ((HTML.Tag) o == HTML.Tag.OBJECT) {
                    <b>return new CompView(element); </b>
                }
            }
            return super.create(element);
        }
    }   
    protected class CompView extends ObjectView {
        public CompView(Element element) {
            super(element);
        }
        @Override
        protected Component createComponent() {
            Component component = super.createComponent();  // COMPONENT IS CREATED HERE
                                 
            <b>// DO SOMETHING USEFUL WITH COMPONENT INSTANCE HERE</b> 
	    return component;	
        }
    }
}
</code></pre>
<p>
Note that we're using the &quot;label&quot; attribute in the &lt;object&gt; tag to set the label property on the button.    By default, the text package's ObjectView factory (that we extended above) will 
use the JavaBean introspector to match up any html tag attributes with writable bean properties of type String.  However,
if a property name happens to also be defined as an attribute type in <a href="http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Attribute.html">javax.swing.text.html.HTML.Attribute</a>, then
this mechanism will fail due to a bug in ObjectView.   Unfortunately this happens to be the case for both the &quot;text&quot; and &quot;name&quot; properties (two I'd like to set for a JButton, drats).
<p>
So if you are putting more than one component in the page and want to use an attribute value to identify them, you cannot rely on &quot;name&quot; being set for you.   You'll have to specifically check for some other non-conflicting attribute.
<p>
Now for the caveats.    We've been appropriately skewered by developers for our less than stellar HTML support.  We are steadily improving it, however JEditorPane may struggle with more complex layouts.   Also, I don't even gloss over how CSS might play in all this, however if you can imagine skinning Swing components with CSS, I recommend checking out Josh Marinacci's <a href="http://today.java.net/pub/a/today/2003/10/14/swingcss.html">2003 article on Swing and CSS</a>.   
<p>
I do think Tim's idea of leveraging HTML for GUI layout still has merit, however the irony is that using HTML doesn't really make it any easier to get good ones.  I've spent untold hours struggling in Dreamweaver to get my nested tables behaving just right; frankly I'd rather use GridBag and a good beer.   But arguing over the holy grail keeps us all engaged.]]>

</content>
</entry>
<entry>
<title>the smartest person in the room</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2007/05/the_smartest_pe_1.html" />
<modified>2007-05-13T17:55:35Z</modified>
<issued>2007-05-12T22:15:10Z</issued>
<id>tag:weblogs.java.net,2007:/blog/aim/48.7385</id>
<created>2007-05-12T22:15:10Z</created>
<summary type="text/plain">A special tribute to the person who is most responsible for my survival in this zany field of computers and software.</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>A little more than 50 years ago, a team of brilliant engineers and mathematicians set out in the confines of an old battery factory in Philadelphia to build the world's first supercomputer, the <a href="http://en.wikipedia.org/wiki/UNIVAC_LARC">UNIVAC LARC</a>.  My mother (Mary Cush, at the time) was on that team.   So this year, as I sat in my seat at JavaOne, glancing at the sea of predominantly male geeks around me, I thought about how I came to be a software engineer and I realized that I pretty much owe that to her.</p>

<p>After my mother graduated college with a Math degree in 1955, she considered her options;  become a teacher or get married.   With no desirable marriage prospects at that time (we'll get to that later), she did what any smart, resourceful individual would do.  She sent out a bunch of letters to corporations and was ultimately hired by Remington-Rand (formerly Eckert-Mauchly) to be a Logical Designer.   There she worked on a small team writing machine code to drive the LARC computer, which is pretty incredible if you realize that topping the list of <a href="http://www.loti.com/fifties_TV/Television_and_the_Unmarried_Career_Woman.htm">important single career women characters of the 50's</a> is Kitty of Gunsmoke.     A few years later a team of Livermore Lawrence Laboratory engineers came out to Remington-Rand (then renamed Sperry Corp) to learn about maintaining the LARC and my Mom met James Moore (my Dad), they got married, moved to California, and started a family.   She then did what every respectable woman of 1960 did; she left her career behind to dedicate her life to raising her four daughters.</p>

<p>So I grew up with stories of rooms filled with transistors with <a href="http://www.nma.org/about_us/publications/pub_gold_uses.asp">gold-plated connections</a>, counting by 1's and 0's, and a general love for math and logic.   But most importantly I grew up in a household where the smartest person in the room was always my mother (my Dad is brilliant too, but that's a different story) and it never, ever occurred to me that there was anything boys could do that girls couldn't, except perhaps tackle football, which really only highlights an exceptional series of synapses in the woman's brain.     Thanks to her, I emerged from the carnage of teenage-girlhood with an unshakable pride in being smart.   Thanks to her, I've steered my way through a software career dominated by men without losing my sense of being a girl.  Thanks to her, I've kept my pinky hooked into a job I love while raising my own children (yes, Sun has helped there too).    </p>

<p>So Mom, this year for Mother's Day I'm skipping cards and flowers and giving you this blog instead.  You've made such a difference in my life.   You're still the smartest person in the room.  </p>

<p>For fun I'm including an excerpt from the Univac LARC Programming Manual, which shows just how far (and not far) we've come in 50 years:</p>

<p>&quot;<i>The Larc computer is an extremely high-speed computing device.  Its high speed is obtained in part by using overlapping instructions, that is, the computer does not wait until and instruction has been executed before extracting the next from storage.  Consequently, instructions follow each other rather closely through the stages of the control unit.   In fact, as many as four instructions may be in the control unit at any one time.</p>

<p>This overlapping of instructions of course increases the complexity of the computer and imposes certain sequencing restrictions on the programmer.  In some cases by careless use of instructions a programmer may increase the running time of his program.  In rare instances errors can be caused by failing to observe the restrictions.  </i>&quot;</p>]]>

</content>
</entry>
<entry>
<title>Invitation to weigh in on the future of javadoc</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2006/01/invitation_to_w.html" />
<modified>2006-01-28T00:25:45Z</modified>
<issued>2006-01-27T22:48:29Z</issued>
<id>tag:weblogs.java.net,2006:/blog/aim/48.4018</id>
<created>2006-01-27T22:48:29Z</created>
<summary type="text/plain">If you&apos;ve ever found yourself cursing in silence or otherwise because you can&apos;t find the answer to a J2SE programming question in the javadoc, then we have a survey for you...</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>J2SE</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>For some time I've been peddling this theory that one of the greatest barriers to Swing adoption is our monolithic API documentation (javadoc).  I'm a personal fan of javadoc and rely on it for solving a large percentage of my programming questions, but you could say I know where to look, and that, at least in the Swing case, over the years my brain has learned to block out that 80% which isn't actually needed to construct a GUI.  Picking on JButton - I only really need 3 or 4 of the 300+ methods and the ones I need arn't even listed in the Method Summary table because they are actually defined in its superclass, AbstractButton.  But I know that, so it's not a problem.  But what about the poor soul embarking on his or her first Swing client?  And of course this problem isn't limited to Swing, but afflicts many of the larger APIs in J2SE (JDBC, XML, etc).  Sometimes bigness creeps up on you.</p>
<p>
Javadoc's structure really hasn't changed at all in the last 10 years because it serves quite well as the Java platform's API <i>reference</i>.  The questions we are trying to answer for JSR260 are <i>should it evolve?</i> and <i>how?</i>   So I entreat you to take this short(!) survey and tell us what you think:<br>
<br>
<a href="http://java.sun.com/webapps/survey/display?survey_id=5382">http://java.sun.com/webapps/survey/display?survey_id=5382</a>
</p>
<p>
Your answers will make a difference.]]>

</content>
</entry>
<entry>
<title>The JDNC project debuts</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2004/06/the_jdnc_projec.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2004-06-23T20:37:39Z</issued>
<id>tag:weblogs.java.net,2004:/blog/aim/48.1385</id>
<created>2004-06-23T20:37:39Z</created>
<summary type="text/plain">We introduced the concept at JavaOne&apos;03, and now  we&apos;re taking the JDesktop Network Component  (JDNC) project open source on javadesktop just in time for JavaOne&apos;04.</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>At JavaOne '97, we kicked off project Swing and as we raised the toolkit scaffolding in the crazy months that followed, we released frequent snapshots of the bits to get our developer base (or at least a hardy core) in on the action. Feedback, both positive and 'constructive', was relentless, and the API improved steadily because of it. We still get email from folks who tell us they've been using Swing since those 0.2 days, and we always bow our heads in honor.</p>
<p>
So we're looking to get you in <i>early</i> on the action again.  This time with a new technology called <b>JDesktop Network Components (JDNC)</b>, which takes on the goal of simplifying development of data-centric Java desktop clients by providing shortcuts in the form of high level Swing components and an optional XML configuration language.  Taking advantage of the open source boon, we're launching this as a javadesktop.org project, from which we can involve you not
only in trying the stuff out, but in shaping and coding it directly. The JDNC project is a place where we can explore solutions and tune them long before they get baked into a standard.   It is still in the rough early stage, so your impact could be significant.</p>
<p>
So read up about JDNC in my latest <a href="http://javadesktop.org/articles/JDNC2/index.html">article</a>, visit our <a href="https://jdnc.dev.java.net/">project site</a>, and join in on making it happen.  After all, who knows better than you what would make your development life easier. </p>
<p>
And for those of you heading to San Francisco next week, we'll be at
JavaOne talking more about the project.  Come chat directly with us:
<ul>
  <li>TS-2865: JDesktop Network Components (JDNC): Simplifying JavaTM
           Desktop Client Construction<br>
           Tuesday 1:30 PM   Hall E #135
  </li>

  <li>Hands-on Lab-7222:  Rapid Data-Driven Client Construction with JDesktop Network Components (JDNC) XML Configuration Language<br>
    <ul>
      <li>Monday     2:15 PM   Hall E 132/133</li>
      <li>Tuesday   12:15 PM   Hall E 132/133</li>
      <li>Wednesday 12:15 PM   Hall E 132/133</li>
      <li>Thursday   1:00 PM   Hall E 132/133</li>
    </ul>
  </li>

  <li>BOF-2859: Meet the JavaTM Foundation Classes (JFC/Swing) Team<br>
  Wednesday 7:30 PM   Esplanade 302
  </li>

  <li>JDNC Demos in J2SE Client Pavilion Booth</li>
</ul>



]]>

</content>
</entry>
<entry>
<title>Itty Bitty Things</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2003/11/itty_bitty_thin.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2003-11-19T06:49:58Z</issued>
<id>tag:weblogs.java.net,2003:/blog/aim/48.486</id>
<created>2003-11-19T06:49:58Z</created>
<summary type="text/plain">Returning from an extended blog hiatus, I celebrate the beauty in the tiniest usability features and contemplate time lost around the edges of a lackluster
user experience.   Corporations need to understand the hidden costs of
mediocre software and we need to do better as a developer community at
delivering the goods.</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>
True confession:  I love my Mozilla mail filter panel.<i>(For non-mozilla users,
this is the ever-present textfield that filters my message 
headers as I type, making it so very easy to find messages quickly)</i>.  
I'm also wildly fond of browser smart-fields that use auto-complete to 
recall my userid/password at the umpteen different websites where 
my memory always shorts.  Auto-complete in general has changed my life.
</p>
<p>
Itty bitty things make such a difference - nuggets of gold 
that seem so obvious in hindsight that we wonder how UIs ever
existed without them.  <b>These are examples of usability features 
that help reduce what I call the &quot;fuss-factor&quot; in software, which is
that intangible time spent around the edges of tasks, quietly
accumulating, hard to measure, but adding up in the long run.</b></p>
<p>
System admin, virus warfare, and lengthy install wizards are a few
examples of the fuss that remains in software. But also fitting this bill are
the more subtle quirks that cause an unnecessary context switch or 
pause in the natural flow, like having to bring up a heavy search
dialog to find something, or using HTML applications 
that refresh the page on every mouse click. (<i>Please - give me real-time sort, 
search, and filter of my <a href="http://www.rottentomatoes.com">rottentomatoes</a> movie lists!</i>). You'd think software could make smarter use 
of the 2.3GHz sitting in our laps.</p>
<p>
Just imagine if corporations accounted for this fuss-factor in their 
&quot;total cost of ownership&quot; assessment of software.  It just might
change the purchasing habits of IT departments everywhere, now
wouldn't it?  Why is it that extreme degrees of usability are
often relegated to the &quot;consumer&quot; market?  No human being from
my mother-in-law to James Gosling wants to waste time fussing at
anything but the definitive task at hand, be it viewing grandchild
photos or a little friendly <a href="http://weblogs.java.net/jag/page3.html#28">mudslinging</a>.  Being
technical or not has nothing to do with it.</p>
 <p>
I recently googled &quot;usability&quot; and was delivered straight into 
the hands of Dr. Jakob Nielsen at <a href="http://www.useit.com">useit.com</a>.  This
turns out to be a rare source of information (some for
free, some for fee) on how usability impacts return on investment.
He focuses largely on the web, but his meta-message applies to
user-experience in general and, unbeknownst to many, once upon a time
he worked at Sun.
So if common sense (wastedTime == lostMoney) isn't enough, the data
is there for those willing to confront it.</p>
<p>
Our challenge in the Java platform group is to make it
radically easier to build usable (less-fussy) client applications.
And here is where I weave a tie-in to my current project...</p>
<p>
Java Desktop Network Components (JDNC) is all about simplifying
the task of building and deploying rich Java desktop clients that deliver an 
exceptional end-user experience.  We do this by providing
high-level UI components with built-in networking smarts, great visuals,
and usability features (like a filtering and other itty bitty things).  On top of these
Java components is an XML configuration layer for easy construction. </p>
<p>
We introduced JDNC at JavaOne 03 and have been working steadily 
since to produce a bag of useful bits worthy of evolution in the open
source community.  We hired ourselves a 3-year XML veteran to ensure
we do the XML part justice (thankfully the schema has evolved since I
wrote the original <a href="http://www.javadesktop.org/articles/JDNC/index.html">JDNC whitepaper</a>).  We've been quiet because we've been busy.</p>
<p>
I just remembered another usability diamond of mine:  
Alt-tab (for navigating active windows) - the single feature that
transformed me into a laptop-only woman, having kissed the mouse goodbye.</p>
]]>

</content>
</entry>
<entry>
<title>Would you run in flipflops?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2003/07/would_you_run_i.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2003-07-12T06:33:17Z</issued>
<id>tag:weblogs.java.net,2003:/blog/aim/48.890</id>
<created>2003-07-12T06:33:17Z</created>
<summary type="text/plain">The death of my cassette player has led me to discover the wonder of a
web service client with a real user interface - so I ramble and dream of a
world filled with applications that make the overhead of using a computer
fall away as the value delivered by those applications increases exponentially.</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>Recently my 15-year-old cassette walkman that I use for running 
finally keeled, leaving me with no choice but to upgrade to an iPod.  
But this rant is <i>really</i> about iPod's companion, iTunes, and 
more specifically about Apple's dogged willingness to ensure that the 
<b>user experience dictates the UI</b> rather than the other way around.
</P>
<p>
Now Apple could have built their music store as a classic web-based
interface a la Amazon or cdnow, but they knew better.  Prior to iTunes, 
my attempts to browse and buy music on the web were frought with the 
classically annoying &quot;give me a new page on every click&quot; 
molasses-like experience -- never quite edging to a net positive on 
my precious-time meter - so I rarely bothered.</p>
<p>
But iTunes is a real user interface dedicated to making the music hunt
(and purchase) effortless.  It's not even flashy - it uses basic
controls (lists, tables, etc), no wizards (thank you!), and only an
occasional spare confirmation popup.  Browsing and searching provide
instantaneous and *complete* results that can be sorted, filtered and
scrolled without ever roundtripping to the server.  Playlists can be
edited and re-arranged using direct manipulation. It's so simple, it's
glorious.  The result is that I've spent more money on music in the
last 4 days than I have in 4 years.  </p>
<p>
I can only hope and predict that this is a preview of things to come.
It may have taken Apple to start this sensible trend, but if Amazon
and Ebay are as smart as I think they are, it won't stop at OSX.  Java
and Java Webstart make it possible to build iTunes-style web service 
clients that run everywhere, enabling the possibility of putting browsers back in the
browse-document and form-submit business, where they belong. </p>
<p>
So it occurred to me, as I was running to the sounds of my freshly 
downloaded rendition of &quot;I'll Take You There&quot; by General Public, 
that if I was forced to wear flipflops (or Birkenstocks) while running, 
I wouldn't go very far. </p>]]>

</content>
</entry>
<entry>
<title>Bugs by moonlight</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2003/06/bugs_by_moonlig.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2003-06-27T08:08:14Z</issued>
<id>tag:weblogs.java.net,2003:/blog/aim/48.681</id>
<created>2003-06-27T08:08:14Z</created>
<summary type="text/plain">Strange things happen when the natural and digital worlds collide</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>
Powered by 802.11 and my viao with its duck-taped powercord to prevent
hibernation loops, I'm basking in a balmy California midnight outside
on my deck, coding away, fighting off an onslaught of bugs.
Now you'd think that since I've worked on the JDK for many years that
I'm referring to knats in the software.  But I'm talking about real 6
legged creatures with wings and antennaes longer than their bodies.
Entranced by the luminous glow of my LCD, they're landing on my screen
and creeping around on my source code.  What's freaky is that one little
arthropod is hovering over a method which does some threading magic -- I mean
he's really stuck there and won't leave! Suddenly I'm realizing that my critical section isn't properly encased in a synchronized block....
</p>
<p>
okay, right -- time to turn in for the night.
</p>
<p>
What is it about late nights that warp the rational thought process?
</p>]]>

</content>
</entry>
<entry>
<title>hope for pixel pushers</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/aim/archive/2003/06/hope_for_pixel.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2003-06-13T16:41:26Z</issued>
<id>tag:weblogs.java.net,2003:/blog/aim/48.242</id>
<created>2003-06-13T16:41:26Z</created>
<summary type="text/plain">Renewed focus on desktop Java gives us pixel pushers hope...</summary>
<author>
<name>aim</name>

<email>Amy.Fowler@Sun.Com</email>
</author>
<dc:subject>JavaOne</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/aim/">
<![CDATA[<p>
Rewinding back to JavaOne2000, a few of us on the Swing team put
together a session called &quot;WebAwareWare&quot; (forgive us, this predated
&quot;Web Services&quot; as a household name).  In the session we
built a rich client version of a little web application called &quot;Blogger&quot;, 
written by a couple guys at Pyra Software.  When I first learned of
&quot;blogging&quot;, my first thought was, &quot;who has time to write these things?&quot;,
and my next thought was, &quot;why on earth would anyone read them?&quot;.  Well,
apparently blogging has become an intrinsic part of web life, and so here goes...
</p>
<p>
I think this JavaOne (2003) has been my favorite since we introduced
Swing at JavaOne97.  I could say it's because the tone this year feels
more &quot;real&quot; than recent years -- not just promises and announcements --
but stuff that really (or almost really :-) works.  That would be true, but I think the real
reason is less philosophical -- I'm energized because there's a focus 
on desktop Java again.   
</p>
<p>
The opening day &quot;general session&quot; (formerly known as a &quot;keynote&quot;) was
full of desktop Java.  From Groker to JBuilder to GE Medical to games -- 
all highlighting the sophisticated level of clients which are enabled by
desktop Java technology.  Images flew and performance screamed, showing
how far we've come over the years.  Sessions on building high-performance
Swing/2D clients (&quot;profile, profile, profile&quot;) and integrating 2D
effects into UIs hit that sweet spot of being technically interesting
and practical at the same time (okay, I may show some bias towards my 
team colleagues here, but I'm sure attendees will corroborate this).  And
the Swing BOF was packed.  Questions are not so much about this bug or that,
but more questions about our strategic direction for the future.
</p>
<p>
Those of us who have a passion for UI & graphics are into pixels - 
the more the merrier.  Servers don't have em, and phones have only a 
handful, so I'm quite content to let those fevers be tended by others.  
For the last 8 years I've been blessed with the opportunity to drive 
pixels using Java, and there's simply no place else I'd rather be 
(workwise, that is). 
</p>
<p>
So, I'm just jazzed about this new desktop-focused Java community and 
look forward to working together to build solutions that solve real-world problems and bring truth and beauty to our users.  Apple gets it.  So do we.
</p>]]>

</content>
</entry>

</feed>