<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #195 - Apr 06, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-04-06">

<link rel="stylesheet" type="text/css" href="/netbeans.css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">

<!-- ====================================================== -->
<!-- Please do not edit this file by hand, it is rebuilt    -->
<!-- automatically and your changes will be lost.  Contact  -->
<!-- webmaster for details.  Rebuilt at                     -->
<!-- #TIMESTAMP# 06-Apr 14:33 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #195 - Apr 06, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #195 - Apr 06, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-04-06.html'>https://netbeans.org/community/news/newsletter/2005-04-06.html</a>&gt;<br>
Interested in becoming a newsletter editor?  We're always looking<br>
for editors to help out. Contact <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a><br>
Please send news contributions to <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a><br>
<hr><pre>The community has chosen the final winner in the NetBeans win an iPod
competition. Congratulations to Ben Suter and his submission, Getting
Started with NetBeans and Java. All submissions can be found at:
&lt;<a href="https://netbeans.org/competition/win-with-netbeans.html">https://netbeans.org/competition/win-with-netbeans.html</a>&gt;

Get On-Board with NetBeans Day 2005
On Sunday afternoon, June 26, the day before the JavaOne 2005 Conference,
the NetBeans team is hosting a FREE companion event at the Argent Hotel
near Moscone Center. Learn from the experts what's happening with the
NetBeans IDE and other Sun tools. You can find early information at:
&lt;<a href="https://netbeans.org/community/articles/javaone/2005/nb-day.html">https://netbeans.org/community/articles/javaone/2005/nb-day.html</a>&gt;

The Java Developer's Journal, LinuxWorld Magazine, and the Web Services
Journal are holding their annual Readers' Choice awards. NetBeans has
been nominated in all three! Please take a few minutes and vote for your
favorite IDE! The voting period runs through July 31st but why wait?
&lt;<a href="https://netbeans.org/community/news/index.html#606">https://netbeans.org/community/news/index.html#606</a>&gt;

Building and Running Project Looking Glass with NetBeans
This document illustrates how easy it is to get a development environment
up and running for the java.net Project Looking Glass with NetBeans. As
you will read in this document, using NetBeans as the development tool for
building and running Project Looking Glass makes Project Looking Glass
development very simple.
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

NetBeans 4.1 Quick Links
Are you looking for a quick list of resources that will get your up and
running with NetBeans? Charles Ditzel has put together a nice list on his
blog. If you are not yet familiar with his work you can visit his blog at
cld.blog-city.com or go directly to the NetBeans Quick Links section here:
&lt;<a href="http://files.blog-city.com/files/aa/1263/b/NetBeansWorking.html">http://files.blog-city.com/files/aa/1263/b/NetBeansWorking.html</a>&gt;
I also recommend taking a few moments to read:
GUI Builder Study finds NetBeans Superior to Eclipse and more...
&lt;<a href="http://cld.blog-city.com/read/1167505.htm">http://cld.blog-city.com/read/1167505.htm</a>&gt;

Roumen's Weblog
New to the blogging scene is Rouman Strobl. If you are looking for some
interesting topics around NetBeans you can't go wrong at Roumans. Czech out
Code Completion Faster in 4.1, Splitting NetBeans Editor Windows, Make your
IDE beep and much more.
&lt;<a href="http://blogs.sun.com/roller/page/roumen/Weblog">http://blogs.sun.com/roller/page/roumen/Weblog</a>&gt;

New NetBeans Module: smallx
This module allows a developer to run smallx XML pipelines from within the
NetBeans IDE just like XSLT transformations. A pipeline is a sequence of
steps (transformers, code, etc.) that process XML. These steps are specified
in an XML document called a pipeline document which the module helps
NetBeans recognized and treat as a specialized XML vocabulary. These
pipeline can be run standalone or as part of a web application or web service.

Online Survey: Help Shape the Future of the NetBeans Profiler Project
There is still time to help the NetBeans Profiler team define the projects
future direction. Whether you currently using the NetBeans Profiler, some
other profiling tool, or do not use profiling at all, it will be very
useful to hear from you! Please take a minute now to complete the survey:
&lt;<a href="http://services.netbeans.org/profiler_survey.php">http://services.netbeans.org/profiler_survey.php</a>&gt;
</pre><hr>This issue of NetBeans Weekly News was brought to you by Robert Demmer.<br>
The next editor will be Robert Demmer. (New volunteers are welcome!)<br>
Please send news contributions to <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a></BODY>
</HTML>
