<HTML>
  <HEAD>
    <TITLE>NetBeans Innovators Grant Contest Winners &mdash; Where Are They Now?</TITLE>
    <meta name="author" content="Ruth Kusterer" /> 
    <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
    <style type="text/css">
      blockquote { font-style:italic;color:rgb(80,80,80);font-size:110%;}
      .quotebox { width:150px;font-size:90%;font-style:italic;float:right; }
    </style>
  </HEAD>
  <BODY>

    <h1>NetBeans Innovators Grant Winners &mdash; Where Are They Now?</h1>
<i>December 2008</i>
<p><p>
    <p>
    Launched in February 2008, the <a href="https://netbeans.org/grant/">NetBeans Innovators Grant Contest</a> was part of Sun Microsystems initiative
    to give US$ 1 million to open source developers worldwide
    to work on their favorite Sun-sponsored projects.
    <p>
      In September 2008, the winners of the NetBeans Innovators Grant contest were announced and prizes awarded.
      In this post-contest update, learn about future plans the developers have for their projects, as well as how they intend to use or have used their winnings.
    </p>

    <p>
      [&nbsp;<a href="#scala">Scala Support</a>&nbsp;]
    [&nbsp;<a href="#nbproj">NB Project</a>&nbsp;]
    [&nbsp;<a href="#spaces">JavaSpaces</a>&nbsp;]
    [&nbsp;<a href="#ivy">IvyBeans</a>&nbsp;]
    [&nbsp;<a href="#spot">NetBeans Sun SPOT Plugin</a>&nbsp;]
    <br />
    [&nbsp;<a href="#cubeon">Cube&deg;n</a>&nbsp;]
    [&nbsp;<a href="#darkstar">Project Darkstar Tools</a>&nbsp;]
    [&nbsp;<a href="#numbookmarks">Numbered Bookmarks</a>&nbsp;]
    [&nbsp;<a href="#monoh">MONOH</a>&nbsp;]
    <br />
    [&nbsp;<a href="#cash">CashForward</a>&nbsp;]
    [&nbsp;<a href="#sql">PL/SQL Editor</a>&nbsp;]
    [&nbsp;<a href="#resbundle">Resource Bundle Editor</a>&nbsp;]
    [&nbsp;<a href="#pdfviewer">PDFViewer</a>&nbsp;]
    </p>

    <p><br clear="all"></p>
    <div class="trail-box half-width" style="margin:auto">
      <div class="trail-box-header">
        <img src="../../../images_www/v6/trails/trails-box-tr.png" width="7" height="21" class="right">
        <img src="../../../images_www/v6/trails/trails-box-tl.png" width="7" height="21" class="left">
        <h1>Winners Podcast</h1>
      </div>
      <div class="trail-box-content">
        <a href="http://mediacast.sun.com/users/sunmink/media/NetbeansWinners.mp3" style="float:right"><img
        src="../../../images_www/articles/podcast.jpg" alt="" width="100" height="100" border="0" /></a>
        NetBeans community lead Kuldip Oberoi talks with NetBeans Gold Award winners Anuradha Gunasekara (Cube&deg;n) and Hong Wei Deng (Scala Support) about their projects. Listen to the podcast in <a href="http://mediacast.sun.com/users/sunmink/media/NetbeansWinners.mp3">MP3</a> or <a href="http://mediacast.sun.com/users/sunmink/media/NetbeansWinners.ogg">OGG</a> format.
      </div>
      <div class="trail-box-bottom">
        <img src="../../../images_www/v6/trails/trails-box-br.png" width="7" height="6" class="right">
        <img src="../../../images_www/v6/trails/trails-box-bl.png" width="7" height="6" class="left">
      </div>
    </div>
    <p><br clear="all"></p>


    <h2><a name="scala"></a><a name=""></a>Scala Support</h2>

    <p>
      Project home: <a href="http://wiki.netbeans.org/Scala">Scala Support</a>
      <br>Project owner: Caoyuan (Hong Wei) Deng
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11854">Plugin Portal</a>
    </p>
    <p>
      The Scala plugin provides a full featured Scala editor (including coloring, navigator, instant rename, formatting, error annotations, code completion), project management (build/run/debug project), a debugger, an interactive console, JUnit and Maven integration. A stable version of the Scala plugin was just released for the NetBeans IDE 6.5.
    </p>

    <blockquote><p>
        <strong>What are you working on?</strong> &quot;After [the release of NetBeans IDE 6.5], I may rewrite most parts of Scala plugin in Scala
        itself. I'll try to integrate the new Parser APIs and ClassPath APIs that
        are planned for NetBeans 7.0 and plan to implement Refactoring, Usages features etc.
        I also have a plan to rewrite Erlang for NetBeans based on <a href="http://wiki.netbeans.org/Gsf">GSF</a>.&quot; -- Caoyuan
    </p></blockquote>

    <p><br clear="all"></p>

    <h2><a name="nbproj"></a>NB Project</h2>
    <p>Project home: <a href="http://nbproject.dev.java.net/">NB Project</a>
      <br>Project owner: Alessandro Dourado
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11762">Plugin Portal</a>
    </p>
    <p>
      NB Project is a tool to manage software projects. It lets you define project resources (employees), tasks and dependencies, and track progress.
      The application uses a client/server architecture and the client is built on the NetBeans Platform.
    </p>
    <div style="float:right;text-align:center;margin:10px"><a href="http://adourado.softag.com.br/"><img src="../../../images_www/articles/alessandro-dourado.png" border="0" <br />Alessandro Dourado</a></div>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;NB Project now begins a new phase. You can expect more documentation, new members and new functionality. Planned features include a resource utilization view, HTML reports, cost management, email alerts, a work calendar, and improvements to the Gantt diagram. Read more details on the <a href="http://nbproject.dev.java.net">NB Project homepage</a> and on my <a href="http://adourado.softag.com.br">blog</a>.&quot; -- Alessandro
      </p>
    </blockquote>

    <p><br clear="all"></p>

    <h2><a name="spaces"></a>JavaSpaces</h2>

    <div style="float:right;text-align:center;margin:10px"><a href="http://students.mimuw.edu.pl/~md209461/"><img src="../../../images_www/articles/magdalena-dukielska.png" border="0" <br />Magdalena Dukielska</a></div>
    <p>Project home: <a href="http://javaspaces-netbeans.googlecode.com/">JavaSpaces</a>
      <br>Project owner: Magdalena Dukielska
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11608">Plugin Portal</a>
    </p>
    <p>
      The JavaSpaces Netbeans project is aimed mainly at students of Computer Science learning <a href="http://en.wikipedia.org/wiki/Linda_(coordination_language)">Linda</a> concepts as a part of their Concurrent and Distributed Programming courses. Thanks to the JavaSpaces Netbeans project, the way Linda is taught will change dramatically: Instead of solving problems on the blackboard or on paper, students program their solutions in Java using the Netbeans IDE. They will also be able to test their programs with the help of a specialized debugger.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;First of all, I'd like to write a paper about the project together with Jacek Sroka from Warsaw University. Also, I received some feedback from the users and I plan to implement additional configuration for my plugin according to their suggestions. There are several other extensions mentioned on the project's web page - maybe I'll find time to work on these as well.&quot; -- Magdalena
    </p></blockquote>
    <blockquote>
      <p><strong>How did you use the grant?</strong> &quot;I've just moved from Poland to Zurich in Switzerland to work as a Software-Engineer for Google. At least some of the money will be spent on that.&quot; -- Magdalena</p>
    </blockquote>

    <p><br clear="all"></p>

    <h2><a name="ivy"></a>IvyBeans</h2>

    <p>Project home: <a href="http://code.google.com/p/ivybeans">IvyBeans</a>
      <br>Project owner: Laurent For&ecirc;t
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=10575">Plugin Portal</a>
    </p>
    <p>
      IvyBeans integrates Apache Ivy into the NetBeans IDE's library manager. Ivy helps you manage dependencies between your projects and third party libraries, especially open source libraries.
    You can read more in this interview with <a href="http://www.sun.com/aboutsun/media/features/2008-0924/qa_foret.jsp">Laurent For&ecirc;t</a>.</p>

    <blockquote><p>
        <strong>What are you working on?</strong> &quot;I will try to resolve all open issues and deliver a 1.1 version of Ivybeans for the 6.5 Netbeans final release. There is not a lot of downloads (~100) but I am pleased to see that some users use it and provide feedback by filing issues.
      </p><p>
        Some of the new features for Ivybeans are support for Netbeans Java EE projects and Ant Free Form projects, reuse of the current Maven integration index support, a progress bar, node tooltips, and an Ivy console (see <a href="http://code.google.com/p/ivybeans/wiki/RoadMap">Roadmap</a>). Two of them are already implemented. One of the most important ones that I want to implement in this list is the JEE support which is not the simplest.
      </p><p>
        One other of my open source projects I am working on is to finish the Apache Continuum integration in Netbeans.&quot; -- Laurent
    </p></blockquote>
    <blockquote>
      <p><strong>How did you use the grant?</strong> &quot;I shared the prize with Xavier Hanin. I'll travel to India and will try to keep some money to buy some geek stuff, a new PC for example.&quot; -- Laurent</p>
    </blockquote>


    <h2><a name="spot"></a>NetBeans Sun SPOT Plugin</h2>

    <p>Project home: <a href="http://netbeans-spot.dev.java.net/">NetBeans SPOT</a>
      <br>Project owner: Thiago Galbiatti
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11774">Plugin Portal</a>
    </p>
    <p>
      Sun SPOTs are small wireless sensor devices. They are built on the Squak virtual machine and are programmable using the Java ME platform.
      The NetBeans SPOT plugin provides you with integrated tools for Sun SPOT development, such as editor integration (refactoring, code completion), project templates, deploying, running and debugging, and more.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;The next steps of our project is to improve the information displayed in the info panels, and add over-the-air sensor monitoring with charts (accelorometers, battery, temperature, light, ...) - this is already in beta stage. Beside this, we will create an instrumentation module to insert code inside the SPOT to monitor sensors together with a running application.&quot; -- Thiago
    </p></blockquote>
    <blockquote>
      <p><strong>How did you use the grant?</strong> &quot;When I get the money, I'll share the prize with the Netbeans SPOT team.&quot; -- Thiago</p>
    </blockquote>

    <h2><a name="cubeon"></a>Cube&deg;n</h2>
    <p>Project home: <a href="http://code.google.com/p/cubeon/">Cube&deg;n</a>
      <br>Project owner: Anuradha Gunasekara
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=10575">Plugin Portal</a>
    </p>
    <p>
      Cube&deg;n integrates issue tracking systems into the NetBeans IDE. You can use the Task Explorer to manage tasks, and sort and filter them by priority, status, etc. Presently it supports a local, Jira, and Trac repositories.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;I am currently working on a <a href="http://trac.edgewall.org/">Trac</a> connector with [NetBeans Dream Team member] Sven Reimers.
        We are making progress and the next milestone will be release with NetBeans IDE 6.5.&quot; -- Anuradha
    </p></blockquote>
    <blockquote>
      <p><strong>How did you use the grant?</strong> &quot;I will invest the money in a car. This will save me more time to work with my open-source projects (Maven support and Cube&deg;n).&quot; -- Anuradha</p>
    </blockquote>

    <h2><a name="darkstar"></a>Project Darkstar Tools and Mobility Support</h2>

    <p>Project home: <a href="http://darkstarmobile.dev.java.net/">Darkstar Mobile</a>
      <br>Project owner: Karel Herink
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11778">Plugin Portal</a>
    </p>
    <p>
      The open-source <a href="http://www.projectdarkstar.com/">Project Darkstar</a> lets you create your own virtual worlds and massively multi-player online games.
      The purpose of this Innovation grant project is to integrate Java ME APIs and tools for Project Darkstar developers into the NetBeans IDE's workflow.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;I am currently working on debugging support for Darkstar Server
        applications. This means that each Application node in the Services
        tab will also have a "Debug" action enabled. This feature was released October 31.
        After that I am considering making Darkstar an actual platform and creating a project
        type for it (similarly to the way Java ME/SE/EE are all platforms).
        This will allow a more natural integration of Darkstar and the IDE.&quot; -- Karel
      </p>
    </blockquote>
    <blockquote>
      <p><strong>How did you use the grant?</strong> &quot;The prize money is covering most of the costs for a motor bike (an older CBR 600) which I am about to purchase.&quot; -- Karel</p>
    </blockquote>

    <h2><a name="numbookmarks"></a>Numbered Bookmarks</h2>

    <p>Project home: <a href="http://numberedbookmarks.dev.java.net/">Numbered Bookmarks plugin</a>
      <br>Project owner: Samitha Jayasundara
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11811">Plugin Portal</a>
    </p>
    <p>
      The NetBeans IDE allows you to place bookmarks in the editor to mark lines that you want to revisit. The Numbered Bookmarks plugin greatly improves bookmark navigation: It allows you to cycle through bookmarked lines with a handy shortcut, and toggle the order of bookmarks.
    </p><blockquote><p>
        <strong>What are you working on?</strong> &quot;The ideas that I had I have already implemented.
        I had one feature request to save bookmarks when closing NetBeans.
        There will be a bug fix release by the end of this month.
        &quot; -- Samitha
    </p></blockquote>

    <h2><a name="monoh"></a>MONOH</h2>

    <p>Project home: <a href="http://monoh.dev.java.net/">MONOH</a>
      <br>Project owner: Carlos Oliveira
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11670">Plugin Portal</a>
    </p>
    <div style="float:right;text-align:center;margin:10px"><a href="http://monoh.dev.java.net/"><img src="../../../images_www/articles/monoh-logo.png" border="0" <br />MONOH<br>speech recognition</a></div>
    <p>
      The MONOH plugin enables speech recognition for Netbeans IDE actions in addition to normal keyboard shortcuts. Set up your microphone, say a command out loud, and the action will be triggered. If you don't remember a specific action or shortcut just say "monoh help" and a window pops up showing all possible actions.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;Our plan is to release a new version in the first or second quarter of 2009. We'll extend the actions for MONOH: Everything you can do with the keyboard or mouse, we want available using only the voice. Also the plugin is huge right now, about 11,5mb, so we're looking for a way to shrink it. And finally we will make new languages available, starting with Brazilian Portuguese.&quot; -- Carlos
    </p></blockquote>

    <p><br clear="all"></p>

    <h2><a name="cash"></a>CashForward</h2>

    <p>CashForward provides intuitive ways to track household cash flow and to create and compare spending plans. This Java desktop application is based on the NetBeans platform.</p>

    <p>Project home: <a href="http://code.google.com/p/cashforward/">CashForward</a>
      <br>Project owner: Bill Snyder
      <br>Download: <a href="http://code.google.com/p/cashforward/downloads/list">Download</a>
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;The next milestone (due in January) will focus on improving the user-experience and syncing with existing bank data.
      </p><p>
        I've had over 1000 people download the application, which has surpassed my expectations by far. The existing version 1.0 is more in-line with a 'preview' release; I am anticipating the user interface and functionality updates in the next few milestones to really make CashForward competitive with similar programs.
      </p><p>
        I will say that having developed applications with the Eclipse RCP, my experience with the NetBeans Platform was superb. A night and day difference between the platforms. Both platforms are powerful and complex; but in my opinion, the NetBeans APIs are more concise and easy to use. The tooling support also sets NetBeans apart.&quot; -- Bill
    </p></blockquote>
    <blockquote>
      <p><strong>How did you use the grant?</strong> &quot;The grant money was a huge help - our family relocated this summer (in fact, the day after the grant deadline) and the money went toward housing.&quot; -- Bill</p>
    </blockquote>

    <h2><a name="sql"></a>PL/SQL Editor</h2>

    <div style="float:right;text-align:center;margin:10px"><a href="http://www.sun.com/aboutsun/media/features/2008-0924/qa_soumbatov.jsp"><img src="../../../images_www/articles/alexandre-soumbatov.png" border="0" <br />Alexandre Soumbatov</a></div>
    <p>Project home: <a href="http://code.google.com/p/pl-sql-editor/">PL/SQL Editor</a>
      <br>project owner: Alexandre Soumbatov
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11549">Plugin Portal</a>
    </p>
    <p>
      This plugin adds support for editing Oracle PL/SQL objects right inside the NetBeans IDE, including syntax highlighting, code folding and indentation.    You can read more in this interview with <a href="http://www.sun.com/aboutsun/media/features/2008-0924/qa_soumbatov.jsp">Alexandre Soumbatov</a>.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;The next release will be available November/December 2008. In this release I will fix a few bugs and add most of the requested features. In the long run I would like switch to <a href="http://wiki.netbeans.org/Gsf">GSF</a> (Generic Scripting Framework). The second thing is integration of my module into the existing database explorer of the NetBeans IDE. I will start to work on this at the beginning of 2009.&quot; -- Alexandre
    </p></blockquote>

    <p><br clear="all"></p>

    <h2><a name="resbundle"></a>Resource Bundle Editor</h2>

    <p>Project home: <a href="http://wiki.netbeans.org/ResourceBundleEditor">Resource Bundle Editor</a>
      <br>Project owner: Denis Stepanov
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11754">Plugin Portal</a>
    </p>
    <p>
      The Resource Bundle Editor is a localization tool integrated into the NetBeans IDE. It lets you edit all localized property files of a Java project in one window.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;I will release the next version of my plugin after the final release of NetBeans IDE 6.5.
        Also I plan to add some new features, such as moving properties,
        saving properties in property files in sorted order, and finding and filtering properties.&quot; -- Denis
    </p></blockquote>

    <h2><a name="pdfviewer"></a>PDFViewer</h2>

    <p>Project home: <a href="http://code.google.com/p/netbeans-pdfviewer/">NetBeans PDFViewer</a>
      <br>Project owner: Steve Tzou
      <br>Download: <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11676">Plugin Portal</a>
    </p>
    <p>
      This project uses Sun's PDF Renderer library to add a PDF viewer to the NetBeans IDE.
      With this module, you can read PDF files directly in the NetBeans IDE.
    </p>
    <blockquote><p>
        <strong>What are you working on?</strong> &quot;I have got 8 issues and will fix them in the new release (planned before Christmas).
        I will add new features such as a two-page view, fullscreen mode thumbs navigation, a select tool
        (for cropping), and performance improvements. I also want to try to use JavaFX to rebuild this module.
      </p><p>
        I will keep on contributing to netbeans.org, I have several new
        modules planned&mdash;Editor Column Mode and Docbook integration.&quot; -- Steve
    </p></blockquote>


  </body>
</html>
