<html><head>
<title>Desafio NetBeans - the Plugin Writing Contest - Announcing the Winners</title>
</head>
<body>
<h1>Desafio NetBeans - the Plugin Writing Contest - Announcing the Winners</h1>
<br/>
"Desafio NetBeans" means "The NetBeans Challenge" in Portuguese.
In November of last year, <a href="http://sun.com">Sun Microsystems</a> and
<a href="http://globalcode.com.br">Globalcode</a> announced a Brazil-wide contest
to write plug-ins (modules) for NetBeans.  The prize:  Three winners get an
expense-paid trip to the <a href="http://java.sun.com/javaone/sf/">JavaONE 2006</a>
conference in San Francisco.

<p>
Last Monday, the <a href="http://desafionetbeans.dev.java.net/result_en.html">winners</a>
were announced at <a href="http://blogs.sun.com/roller/page/roumen?entry=java_studio_enterprise_and_mobility">
NetBeans Day Sao Paulo</a>.  The plugins were judged on criteria such as runtime quality,
code quality, originality and usefulness.  Some plugins were developed by individuals, some
by teams.  All are open-source.

<p>
First place went to Wagner Bastos&amp;
<a href="http://desafionetbeans.dev.java.net/01-rsi.html">RSI Prevention Module</a>.
It is a simple, well executed idea - repetitive strain injury is a serious problem.
His module monitors your use of NetBeans, counting keystrokes, etc., and not
only tells you when you should take a break, but actually provides animations of
various stretching excercises.  The module is very nicely integrated into NetBeans,
well written and quite polished and professional.

<p>
Second place went to the
<a href="http://desafionetbeans.dev.java.net/02-mousegesture.html">Mouse
Gestures Module</a>.  This is also a relatively simple - but incredibly original
idea - instead of invoking an action from a menu or key-binding, you draw a
shape on the screen while holding down the right mouse button.  You can bind
whatever combination of motions you want to any action available within NetBeans.
Talk about thinking out-of-the-box!  This module was developed by a team &mdash;
Paulo Silveira, Evandro Augusto Munhoz Machado, Edson Kiyoshi Sato and
Hideyuki Sekiguchi.  Since only three tickets to JavaONE were available, and
one of them goes to Wagner, the whole team is splitting the cost to bring the
other two with them to the conference in May.

<p>
<center>
    <a href="../../images_www/articles/winnerCertLarge.png"><img src="../../images_www/articles/winnerCertSmall.png" border="0" alt="Winner certificate" border="0"/></a>
</center>

<p>
There were four runner-up teams - they didn't win, but they did good work and
in some cases wrote a <i>lot</i> of code:
<ul>
    <li><b>UML Designer</b> &mdash; a basic tool for viewing source code as UML
    by Andre Piza, Nemer Daud, Rogerio Menegelli Gatto.
    </li>
    <li><b>Code Review</b> &mdash; a tool that lets you associate code review
    remarks with lines in source code, written by Marlon Luz and Lucas Luz.
    </li>
    <li><b>Hibernate support</b> &mdash; Hibernate is quite popular in Brasil;
    this module provides basic support for generating Hibernate mappings.  This
    plug-in was created by Wagner Santos.
    </li>
    <li><b>SpinJob</b> &mdash; This interesting tool lets you take a snapshot
    of a database and compare it against a later snapshot, created by
    Leonardo Goncalves da Silva, Ronaldo Cezar Spido and Paulo Henrique Muller.
    </li>
</ul>

<p>
To learn more about the winners of the contest, have a look at the plugins and more, see the
<a href="http://desafionetbeans.dev.java.net/result_en.html">winners page</a>
in the <a href="http://desafionetbeans.dev.java.net">Desafio NetBeans</a> home
page.

<p>
<center>
    <img src="../../images_www/articles/wagner.png" border="0" alt="Winner certificate"/><br>
    <i>The Awards Ceremony at NetBeans Day Sao Paulo</i>
</center>


</body></html>
