Series: Meet the Dream Team Members

(In January 2007, we announced the 11 charter members of the NetBeans Dream Team, a community-oriented group of highly skilled NetBeans users devoted to promoting NetBeans and working on the NetBeans Project. In these interviews discover who they are, why they are passionate about NetBeans and what goals they have for the NetBeans project.)

Emilian Bold

NetBeans Dream Team Member Emilian BoldEmilian, Please tell us about yourself.

I work as a full-time consultant in Timisoara, Romania, and I make my living mostly doing NetBeans Platform development. I'm pretty passionate about it. I left my previous job specifically to work on NetBeans Platform projects after I had written enough blog posts about the platform to feel confident that it was a good development choice. Since then I've always had my hands in platform-code in some way or another.

I've also done server-side stuff or clustering code but always something connected to the platform. Basically I'm more of a Java desktop-programming guy but I have found some passion for clustering recently. I also blog about the NetBeans Platform.

Why do you work exclusively with the NetBeans Platform?

The NetBeans Platform is a tried and tested framework for modular development of Swing applications. With the platform, the worry of how best to implement menu bars and combo boxes has been taken care of; all you have to do is just use them.

The main benefits of working with the NetBeans Platform are speed and quality. Knowing that the platform is of top notch quality means I can focus on the business logic. By speed I mean not only development speed due to proper API usage and basically not reinventing the wheel but also Swing speed. The platform is amazingly snappy and with the customized look and feel, people sometimes can't believe it's a Java application.

Thanks to the platform's open-source nature and that it's been around for a while, the codebase is better than what I would usually write.

What is your favorite API in the platform?

The Lookup API is the backbone of the NetBeans Platform and I like it the most. It encourages you to implement a proper SPI and have a modular architecture and modular code. One might say that any programmer will implement modular code, but the truth is that it is either incomplete or comes late in the game and thus requires too much refactoring. But with the module system and the Lookup API you get modular code from the start. Sure, this will be refactored and will evolve in time but it is a better starting point.

Are you currently working on any major RCP projects?

I have a year-long RCP project for a big banking company. It's a rich desktop client with a server back-end and also a cluster on the side for massive financial simulation. I can't say more about it though because I have a non-disclosure agreement with the company. But I can provide two screenshots that show the usage of the Explorer & Properties APIs, Matisse, JFreeChart and Visual Library in the NetBeans Platform.

RCP Screenshot 1
RCP Screenshot 2

I'm also trying to bring back the standalone editor (which is now discontinued) in the NetBeans Platform. The NetBeans Editor API is probably the biggest asset of the IDE and it's a shame people can't use it in their standalone applications. True, there are few that may need this feature but those that do will surely appreciate the quality and the function it provides.

If I have enough time, I would also like to finish my BitTorrent AutoUpdate integration. It's a feature for the platform that I thought about for a long time and finally figured out in January. How to allow the NetBeans Platform to download modules from the Update Center via BitTorrent. And I don't mean pirating movies here, I'm just talking about a smarter download method than pure client-server. To me it makes sense not to hammer the server but to allow users worldwide to chip-in and share with others, thus reducing the load. I just thought it was a pretty cool idea.

What I need to do next is have two functional torrent download implementations. The current one is based on the Snark library and I'm not entirely sure of the compatibility with trackers. So I would like another torrent downloader extracted from the Azureus codebase (which is open-source Java). These two will implement a common SPI and register themselves in the Lookup.

I would have something like this SPI: com.example.TorrentDownloadProvider with a downloadTorrent(URL torrent) method. Each implementation would register their implementation in META-INF/services and then my URL handler can just pick one from the Lookup (based on some user option maybe): Lookup.getDefault().lookup( TorrentDownloadProvider.class).

The second part would be actually providing update centers which are torrent-based. Now, the update center is just an XML file, so hosting that should be easy and rather painless bandwith-wise. We just need to keep it in sync with the main update centers. The problem is that we need to seed the files via torrent trackers somehow (and I'm not sure there's an “open-source” tracker that can do this for us).

Ideally I would have people download the module, select the prefered downloader (Azureus engine or Snark) then register to our Torrent Update Center. And that would be it!

Of course, the API/SPI will be a bit more complicated and the user must be allowed to set various options like how much to share, maximum speed, etc.

What features in the NetBeans Platform would you encourage people to explore?

This can be a bit hard to do because I'm so knee-deep in it that I sometimes take things for granted and fail to realise what impression they might have on others. But the most interesting features of the platform that I tell people about are its modular nature and the auto-update feature. These scream “good quality product” to me. When you write modular code and also provide your customers with an update center it sends a nice message: “Not only do we support this, but we do it with minimal disturbance to your workflow”. Telling the user to re-download a big setup is laziness when you could just let the program update itself.

What could be improved in the NetBeans Platform?

A problem that I have long noticed about the NetBeans codebase: we have good quality code with nice features, but sometimes it's just too platform-specific. Some developers already have huge codebases and don't want or can't afford a migration to the platform, but they just find a particular feature nice: like the new Diff module or the “progress bar” we have from the Progress API. I think it would help our cause to just make sure some of the code works as standalone. This would allow developers to gradually adopt NetBeans Platform APIs up to the point when they realize that a migration might be worth making. Or, even if they don't migrate, they will still use and care about the open-source piece of code they have from us.

Is NetBeans IDE and Platform adoption high among developers in Romania?

Java developers in Romania are fairly Eclipse-centered. A large problem is that Eclipse usage is so big that new developers don't have an option. They select Eclipse because it's what others use or they pick it because that's how the project they've signed on to works.

I do try to evangelize NetBeans IDE and Platform. Sadly we don't have JUGs here so it all boils down to the very few main programming-related events where I put on presentations about NetBeans. I gave a NetBeans Platform talk recently at ITFest Romania. It was a small crowd of students and some high-school seniors. I was quite technical and got some blind stares in the room. But some heads were shaking so even young programmers “get” the idea behind the platform (I touched mostly modularity, Lookup, auto-update).

In order to get a higher share for NetBeans among the developers here I think we need more presentations and trainings. People need to be made aware of the features it has and how it can replace or complement Eclipse. For example, the NetBeans Profiler that comes by default now with the IDE is a top-knotch product. Years ago, good Java profilers were mostly commercial products, and the NetBeans Profiler might be a good entry point to show people the IDE's other features.

How would you convince an Eclipse RCP user to give the NetBeans Platform a try?

It depends on what they do with Eclipse RCP. If they already have a huge SWT codebase and they want to use existing Eclipse plugins then they are kind of stuck. On the other hand, with a Swing desktop application there's little that Eclipse RCP seems to offer there (except the OSGi module system which is nice). The NetBeans Platform has a good Swing Windowing API and other useful APIs such as Nodes, Properties and Explorer, which really cut down development time and are quite easy to use.

As a Dream Team member, how do you contribute to the NetBeans project?

In the past year or so, I've had a rather busy period with my consulting business, so I've dedicated less time than I would have wanted to NetBeans. I'm waiting for things to settle down so that I can once again have a routine that involves a big chunk of Platform work.

In the past month, I've been active in the community with some emails on the public and internal mailing lists. I post bugs as I find them and I'm working on getting the Editor API working (again) in standalone mode. This was a nice feature in the pre-6.0 world which is now gone as few people used it. Well, I'm working now to bring it back and it's nice to see a simple desktop application have a CSS editor with syntax highlight for free. By simple desktop application I mean application that isn't platform related.

I also did a photo shoot for the NetBeans 6.0 launch—I had my face on the website—so I guess modeling is always a choice if this consulting work gets stale!

Your last name must bring up quite a few puns.  What's the origin?

“Bold-italic-underline.” “The Bold and the Beautiful.” I've heard them all and I've gotten used to them. It also means “pin” (like the needle) in Romanian so that's a source of even more jokes from the Romanian perspective. I think the name might be of British or German origin but I have never found out. One day I'd like to trace it and my lineage and create a family tree. But I'm saving that for my “retirement” hobby list.

Thank you, Emilian, and good luck with your projects!

Emilian Bold's Blog
(April 2008)

More Dream Team Profiles

Adam Bien
Vincent Brabant
Wade Chandler
Fabrizio Giudici
Joerg Plewe
Vinicius Senger
Edgar Silva
Ibon Urrutia

Not logged in. Log in, Register