|  | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | 
|  | <html> | 
|  |  | 
|  | <head> | 
|  | <title>Netbeans Platform Interview: ThinkingRock and Getting Things Done</title> | 
|  | <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> | 
|  | <meta name="author" content="lloyd.dunn@sun.com"> | 
|  | <meta name="description" content=" | 
|  | Interview with Jeremy Moore, lead developer of ThinkingRock on the NetBeans Platform | 
|  | "> | 
|  | <meta name="keywords" content=" | 
|  | NetBeans, IDE, Platform, integrated development environment, interview, ThinkingRock, Getting Things Done | 
|  | "> | 
|  | <link href="../../../netbeans.css" rel="stylesheet" type="text/css" media="screen" /> | 
|  | <style type="text/css"> | 
|  | .photobox { | 
|  | float: left; | 
|  | padding: 0 1em 1em 0; | 
|  | } | 
|  | .photobox p.caption { | 
|  | margin: 3px 0; | 
|  | font-size: smaller; | 
|  | } | 
|  |  | 
|  | .lead { | 
|  | margin: 1em 0; | 
|  | font-size: 1.2em; | 
|  | } | 
|  |  | 
|  | .callout { | 
|  | font: 1.5em/1.5em serif; | 
|  | color: #ee6b00; | 
|  | border-left: 1px solid #d1d1d1; | 
|  | width: 180px; | 
|  | float: right; | 
|  | padding: .25em 1em .75em 1em; | 
|  | margin: .5em 0 .5em 1em; | 
|  | } | 
|  |  | 
|  | .infobox { | 
|  | width: 180px; | 
|  | border-left: 1px solid #d1d1d1; | 
|  | float: right; | 
|  | padding: 0 1em .75em 1em; | 
|  | margin: .5em 0 .5em 1em; | 
|  | } | 
|  | .infobox p { | 
|  | color: #ee6b00; | 
|  | margin: .7em 0 .3em 0; | 
|  | padding: 0 0 3px 0; | 
|  | border-bottom: 1px solid #d1d1d1; } | 
|  | .infobox li { margin: 0 0 0 -2em; } | 
|  |  | 
|  | hr { | 
|  | clear: both; | 
|  | border: 0 none; | 
|  | height: 1px; | 
|  | border-bottom: 1px solid #d1d1d1; | 
|  | margin: .25em 0 1em 0; | 
|  | padding: .25em 0 1em 0; | 
|  | width: 100%; | 
|  | } | 
|  |  | 
|  | h1, p { line-height: 1.5em; } | 
|  |  | 
|  | q:before { content:"“";} | 
|  | q:after { content:"”";} | 
|  |  | 
|  |  | 
|  | </style> | 
|  | </head> | 
|  |  | 
|  | <body> | 
|  |  | 
|  | <h1>NetBeans Platform Provides the Pre-invented Wheel <br>So You Can Get Things Done | 
|  | </h1> | 
|  | <h3>An Interview with Jeremy Moore, Software Developer of ThinkingRock</h3> | 
|  | <p class="lead"> | 
|  | The time management book "Getting Things Done", by | 
|  | David Allen, promises to help readers handle work-life tasks more | 
|  | productively through a simple five-step plan: collect, process, | 
|  | organize, review, and do. The book's approach has become a popular | 
|  | model in the personal management and productivity industry, and has | 
|  | earned an eponymous  acronym: GTD<sup>®</sup>. Now, a two-person | 
|  | development | 
|  | team in Australia has repurposed the GTD concept for the digital set, | 
|  | creating a software application to help the tech savvy but disorganised | 
|  | get things done. The application, <a href="http://www.trgtd.com.au/">ThinkingRock</a>, | 
|  | was built on the <a href="http://platform.netbeans.org/">NetBeans | 
|  | Platform</a> and has been getting rave reviews. We spoke to the lead | 
|  | developer of ThinkingRock, Jeremy Moore, to learn about his team's | 
|  | experience using the NetBeans Platform. | 
|  | </p> | 
|  |  | 
|  | <div class="photobox"> | 
|  | <img id="thinkingrock" src="../../../images_www/articles/interviews/thinkingrock.jpg" | 
|  | alt="ThinkingRock development team" title="ThinkingRock development team" /> | 
|  | <p class="caption">The ThinkingRock development team out on a rock, er, thinking</p> | 
|  | </div> | 
|  |  | 
|  | <p><b>What drew you to NetBeans?</b></p> | 
|  | <p> I first started using NetBeans back around 2000 when I was learning | 
|  | Java. I think it was NetBeans 3.0 or something. The | 
|  | non-commercial and open-source nature of it was a big draw for me | 
|  | and there were no problems getting at any of the code. The | 
|  | documentation back then was lacking a bit, but there was always a good | 
|  | vibe with the NetBeans community. There was always help via the email | 
|  | lists. | 
|  | </p> | 
|  | <p> <b>As a long time NetBeans user, what changes have been the most | 
|  | striking or useful for you | 
|  | over the years?</b> | 
|  | </p> | 
|  | <p> NetBeans has come a long way and now has good documentation. I | 
|  | can't remember exactly what functionality was or was not there when I | 
|  | first started using it, but I do remember having all sorts of problems | 
|  | building an application on the Netbeans Platform, just trying to get | 
|  | the things that were supposed to work to actually work. | 
|  | </p> | 
|  | <p> Now it is very easy to build a Rich Client Platform application | 
|  | (although the platform is not quite as separate from the IDE as I would | 
|  | like). There was not a lot of documentation back in those days and you | 
|  | really had to get your hands dirty. Now it's much better and there are | 
|  | blogs and lots of info on the Web as well as the NetBeans web site. | 
|  | </p> | 
|  |  | 
|  | <div class="callout"> | 
|  | <q> We first just built ThinkingRock without using any platform at all, | 
|  | but soon realized that we were re-inventing the wheel in many aspects. | 
|  | </q></div> | 
|  |  | 
|  | <p><b>Did you evaluate other platforms?</b></p> | 
|  | <p> Yes. We first just built ThinkingRock without using any platform at | 
|  | all, but soon realized that we were re-inventing the wheel in many | 
|  | aspects. For example, there was no need for us to implement our own | 
|  | drag-and-drop when that problem had been solved already. We then looked | 
|  | at various platforms, with the main contenders at the time (just over | 
|  | two years ago) being Eclipse and NetBeans. | 
|  | </p> | 
|  |  | 
|  | <p> We first looked at using Eclipse, but found it lacking. Our main | 
|  | reason for discarding it was their poor implementation of the Standard | 
|  | Widget Toolkit. Basically, it worked great on Windows, but not so great | 
|  | on the Mac. And, support for SWT was either buggy or non-existent on | 
|  | some platforms. (In fairness, the situation is probably a bit better | 
|  | today). | 
|  | </p> | 
|  | <p> We wanted our application to work on as many platforms as possible, | 
|  | therefore we felt we needed a 100% Java solution. We also evaluated | 
|  | other platforms, but most were just getting started. They either lacked | 
|  | some functionality we really wanted, such as a plug-in architecture. | 
|  | Either that, or they were not mature enough. | 
|  | </p> | 
|  | <p><b>What did you like about the NetBeans Platform?</b></p> | 
|  | <p> It's 100% Java, and has the plug-in architecture that we needed, | 
|  | for starters. Also, it's now a mature IDE. I like the fact that it's | 
|  | open source and it's continually improving. Also, the NetBeans | 
|  | community spirit is a real plus. | 
|  | </p> | 
|  |  | 
|  | <div class="callout"> | 
|  | <q> NetBeans is now a mature IDE. I like the fact that it's open source | 
|  | and it's continually improving. | 
|  | </q></div> | 
|  |  | 
|  | <p><b>Earlier you said you found the NetBeans documentation particularly valuable to you?</b></p> | 
|  |  | 
|  | <p> The documentation has gotten much better and the tutorials help a | 
|  | lot. For example, the | 
|  | Selection Management tutorial was a great help when we were working on | 
|  | that functionality.<br> | 
|  | </p> | 
|  | <p>Also, the e-mail lists, especially openide-dev, proved very | 
|  | useful. I would have to also say that the <a | 
|  | href="http://www.amazon.com/Rich-Client-Programming-Plugging-NetBeans/dp/0132354802/ref=sr_1_2?ie=UTF8&s=books&qid=1227622445&sr=1-2">Rich | 
|  | Client Programming book</a> | 
|  | has been really helpful in understanding the NetBeans architecture. </p> | 
|  | <p><b>What about NetBeans' plug-in architecture? How was it valuable to | 
|  | you?</b></p> | 
|  | <p>Our rich client application consists of many modules which we can | 
|  | easily update and deliver via our update center—without making the | 
|  | user download the whole application. We are also adding new | 
|  | functionality which, because of the platform, we can deliver as plug-in | 
|  | modules. It's also nice that users have the flexibility to choose to | 
|  | add or remove functionality and modules. </p> | 
|  | <p>Because NetBeans is open source, a main benefit is the fact that | 
|  | anyone can get the source, see what it actually does, and change it if | 
|  | they need to. So the developer is not totally reliant on some company | 
|  | to provide a solution that might be missing—usually for a fee and on | 
|  | their time schedule.</p> | 
|  |  | 
|  | <div class="infobox"> | 
|  | <p><b>What is ThinkingRock?</b></p> | 
|  | <ul> | 
|  | <li>ThinkingRock, a time-management  application based on the principles laid out in David Allen's book "Getting Things Done"</li> | 
|  | </ul> | 
|  | <p><b>How do I get it?</b></p> | 
|  | <ul> | 
|  | <li>Download ThinkingRock <a href="http://sourceforge.net/project/showfiles.php?group_id=194713">here</a>.</li> | 
|  | </ul> | 
|  | <p><b>Operating systems?</b></p> | 
|  | <ul> | 
|  | <li>Windows, MacOS X, Linux</li> | 
|  | </ul> | 
|  | </div> | 
|  |  | 
|  | <p><b>What APIs did you like?</b></p> | 
|  | <p>The Lookup mechanism is probably one of the most useful. One of the | 
|  | things we use it for is with the service provider scenario. We can | 
|  | define a service API and then we, or anyone else for that matter, can | 
|  | provide service implementations and deliver them as plugin modules. | 
|  | </p> | 
|  |  | 
|  | <p>For example, we have a text component which allows the user to enter | 
|  | notes. They can also enter URL-type links to web pages and other | 
|  | things. | 
|  | We want this to be extensible so that we can easily handle new types of | 
|  | links or protocols so that, when the link is selected, the appropriate | 
|  | application will be fired up and take the user to the linked resource. | 
|  | We accomplished this by having a Service Provider API. Then we can look | 
|  | up all the provider instances to see if any can handle the selected | 
|  | URL, | 
|  | and if so, we call the provider application to handle it.</p> | 
|  | <p>But there are other APIs I like, too, such as the windowing system, | 
|  | the explorer, the module system. ...</p> | 
|  | <p style="font-weight: bold;">How many people are developing | 
|  | ThinkingRock? Does NetBeans offer you | 
|  | any advantages in working collaboratively with other programmers?</p> | 
|  | <p>There are mainly two of us developing ThinkingRock, although we have | 
|  | had various contributions from our users. We haven't really needed | 
|  | collaboration tools apart from having our source in a subversion | 
|  | repository on SourceForge. For that, we use the NetBeans plugin for | 
|  | subversion, which works very well. </p> | 
|  | <p><b>Any closing words about the NetBeans community?</b></p> | 
|  | <p>You are always treated with respect when you ask questions on | 
|  | the email lists. I've seen that people go to a lot of trouble to help | 
|  | you. People have put a lot of effort into Netbeans over the years and | 
|  | not for financial reward (even though some are Sun employees). I think | 
|  | that the members of the NetBeans community really believe in what they | 
|  | are doing—and it shows.</p> | 
|  | <h2>Additional Resources<br> | 
|  | </h2> | 
|  | <ul> | 
|  | <li>Learn more about <a href="http://www.trgtd.com.au/">ThinkingRock<br> | 
|  | </a></li> | 
|  | <li><a | 
|  | href="http://sourceforge.net/project/showfiles.php?group_id=194713">Download | 
|  | ThinkingRock</a> at SourceForge</li> | 
|  | <li>Learn more about <a href="http://platform.netbeans.org/">NetBeans | 
|  | Platform</a><br> | 
|  | </li> | 
|  | </ul> | 
|  | </body> | 
|  | </html> |