<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
    <meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8">
    <title>NetBeans 6.8 Community Tester Ulf Zibis</title>
    <meta name="AUTHOR" content="Tinuola Awopetu">
    <meta name="description" content="Ulf Zibis, a NetBeans 6.8 community tester, explains how participating in NetBeans' Beta testing program helps his development needs.">
    <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
  </head>
  <body>
    <h1>Meet the Top Community Testers for NetBeans 6.8</h1>
    <span style="font-style: italic;">January 2010</span><br>
    <h4>Ulf Zibis: Six Advantages of Being a NetBeans Beta Tester <br>
    </h4>
    <span style="font-style: italic;"><br>
    </span>
    <h2>Tell us about your background as a developer and NetBeans user.<br>
    </h2>
    <img src="../../../images_www/articles/interviews/ulf-zibis.png" alt="Ulf Zibis - NetCAT 6.8 Participant" style="width: 150px; height: 201px;" align="left" hspace="5" vspace="2">I
    started with the KAWA editor in 1999. My first IDE was Sun's
    Forte; then replaced by Sun Studio and then later the NetBeans IDE.
    Intermittently, I tried Eclipse, but I didn't see any advantages for
    me. For example, it lacked the Mobility and GUI Builder capabilities of
    NetBeans.<br>
    <br>
    <p>My interests: I've been hacking at the JDK code for a long time. It started with
      finding and fixing several bugs in the JDBC-ODBC driver because I
      wanted to integrate a simple object oriented interface (<a href="http://jdbc-odbc-enhanced.dev.java.net/">jdbc-odbc-enhanced</a>).
      While bug fixing, I stumbled across a performance leak caused by
      the inability of the java.nio.charset API to handle zero-terminated
      native strings efficiently. So I thought about adding such an ability
      to this API (<a href="http://java-nio-charset-enhanced.dev.java.net/">java-nio-charset-enhanced</a>).
      Looking
      into the code, I found out that there was a big potential to
      enhance the charset implementation in performance and footprint. At
      that time, almost 20% (~7MB) of the Java runtime footprint was occupied
      by the charset coding implementation. In theory, it could be reduced to
      ~1MB, and performance enhanced significantly by up to five times. I'm
      still working on this.</p><p>
    </p>
    <h2>As a <a href="http://qa.netbeans.org/processes/cat/68/index.html">NetCAT</a> participant you experienced
      <a href="https://netbeans.org/community/releases/68/">NetBeans 6.8</a> before the masses did. Your thoughts on the new features and the
      quality?<br>
    </h2>
    <div style="padding: 10pt 10pt 10px 10px; background-color: rgb(238, 238, 255); width: 190px; float: right; font-size: 100%;">
      <div style="font-weight: bold;">Ulf Zibis<br>
      </div>
      <div style="font-size: 90%;">Location: Cologne, Germany<br>
        <br>
        <span style="font-weight: bold;">Projects</span><br>
        <a href="http://jdbc-odbc-enhanced.dev.java.net/">jdbc-odbc-enhanced</a><br>
        <a href="http://java-nio-charset-enhanced.dev.java.net/">java-nio-charset-enhanced</a><br>
        <br>
        <span style="font-weight: bold;">NetCAT 6.8 Stats</span><br>
        Bugs Filed: 55<br>
        RFEs Filed: 9<br>
        Emails Sent: 92<br>
        Total NetCAT Points: 330<br>
        <a href="http://qa.netbeans.org/processes/cat/68/activity.html">NetCAT 6.8 Activity Log</a><br>
        <br>
        <span style="font-style: italic;">More NetCAT 6.8 Spotlights:</span><br>
        <a href="https://netbeans.org/community/articles/interviews/netcat68-eric-smith.html">Eric Smith</a>, <a href="https://netbeans.org/community/articles/interviews/netcat68-michel-graciano.html">Michel Graciano</a><br>
      </div>
    </div>
    Because I worked mostly on very low-level code, I won't comment on the
    big features. But in NetBeans 6.8 I saw steady enhancements in
    usability and flexibility of the basics. 6.8 is the first release in
    which I could develop and debug JDK 7 library code inside the
    IDE, using standard Java project without the need for too many half-baked tricks. Also,
    performance increased, and I think 6.8 is the most stable release we've
    ever had.<br>
    <br>
    However, I still think the "Compile-on-Save" feature has a troublesome naming for new users.
    This caused many heated discussions during the testing program. As the NetBeans IDE always
    compiles the code immediately and not only after save, I prefer a name such as "Smart-Deploy". (See NetBeans Forum thread: <a href="http://forums.netbeans.org/viewtopic.php?t=10903&amp;highlight=rethinking+cos+again">Rethinking CoS
      again</a>.)
    Additionally,
    there are still pending standard editor
    capabilities such as better search/replacement handling,
    column-oriented block editing/pasting, <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=46020">one-hand-mouse-copy</a>, or
    offset-diff
    inside same file; some context menus could be enriched and
    additional tools such as javap and JDK make&nbsp;
    integrated.<br>
    <p>
    </p>
    <h2>Have you participated in other software Beta testing programs? Can you compare them to NetCAT?<br>
    </h2>
    Rarely. I've been a NetCAT member since version 4.1, and
    I can't think of anywhere else where there is a better response and contribution about bugs and RFEs
    than from the NetCAT team. I'm highly involved in
    JDK 7 development, and I can say that the work flow for that is much harder. &nbsp;
    <p>
    </p>
    <h2>What
      motivates you to contribute to the NetBeans
      project?<br>
    </h2>
    <ul>
      <li>
        If I'm missing certain features participating in the NetCAT program gives me the chance to have them in future releases.</li>
      <li>Knowledge sharing with the experts.</li>
      <li>
        Benefiting from new features before releases.</li>
      <li>
        Participating in the community.</li>
      <li>
        Fun.</li>
      <li>
        Free T-Shirts!</li>
    </ul>
    <p>
    </p>
    <h2>How would you encourage other users to participate in future NetCAT cycles?<br>
    </h2>
    <ul>
      <li>
        You will get a deeper understanding of how NetBeans works, as well as experience in professional software development.</li>
      <li>
        You can leave your mark on the IDE: Many of your development needs stand a good chance of becoming part of the release build.</li>
      <li>You
        will learn more about Java and other advanced features of the IDE, as
        well as get free support from the NetBeans team and fellow NetCAT
        participants.<br>
      </li>
    </ul>
  </body>
</html>
