NetBeans 7 has no UML tools?

After mentioning earlier that I am using Omnigraffle to create UML diagrams, I remembered that NetBeans once had a decent UML tool. Unfortunately I haven’t been able to find anything for the most recent NB 7 or 7.0.1 version. Oddly, the NetBeans page itself refers us to JDeveloper for UML support. Why point me to JDeveloper? I really want to use NetBeans.

The same page above also recommends a 3rd party plugin from Visual Paradigm, but Visual Paradigm seems limited to NB 6.2 if I’m reading its page correctly.

My suggestion for the above “UML support” page is this…just remove it. Having the page refer to out-of-date plugins or different IDEs altogether is no help. NetBeans crew, you know I love the product, but I also have to say it how it is. If there’s no current UML plugin, just say that and maybe give us an indication whether one is in the pipeline. Don’t tease me with a support page that points to other IDEs and outdated, presumably non-working 3rd party plugins for older versions.

Omnigraffle and UML?


Some coworkers recently recommended Omnigraffle to me as a UML diagramming tool. After installing a copy, I discovered that although UML “stencils” are available, the tool is not in fact a dedicated UML tool at all. Ahem…obviously I should have read the description a little better.

Now that I have Omnigraffle, however, I will need to use it at least until I find something better for UML diagrams. I have found a few stencils — stencils are pre-made template objects that can be used in your diagrams. So far I’ve found these:

  • Bantik UML — not really full featured but certainly nice looking. It’s not a reasonable choice because it just doesn’t have a full set of UML diagram types.
  • UML 2 — again, just not nearly a full set of diagram types.
  • UML 2.1 Collection — has practically everything I need for now. Best set of diagrams I’ve found. The only trouble I had was that the unzipped stencil wasn’t properly named. When I finally added the .gstencil extension to the unzipped file, Omnigraffle recognized it.

If you know of a better set than the UML 2.1 Collection above, let me know. Until I find something better, that’s what I’m using. I feel a bit silly for using OmniGraffle in the first place. It isn’t exactly a UML tool, but it can be forced into it as needed.

Since I started using NetBeans again recently, maybe I’ll check out the plugins available for it. Surely someone has created a UML plugin. I’ll check that out tomorrow and let you know what I find.

NetBeans vs Eclipse for Maven Projects

I thought yesterday that I had pumped up NetBeans unfairly without regard to other tools. To be fair, I decided today that I’d try to open up the very same project in Eclipse, just to see if it matched NetBeans’ ability to immediately understand the project.

First thing I noticed was that Eclipse did not automatically understand Maven. A quick search of “maven plugin eclipse” put me in contact with a couple plugins. I tried the first one. Installed it like Eclipse likes by pointing to the plugin repo. Downloaded the plugin and then restarted eclipse. I thought Eclipse would behave like NetBeans on this, but no it didn’t. No good; the plugin options, if they even exist, don’t appear anywhere in the menus.

So, back to the search. I find another maven plugin. This time, I’m more successful installing the “m2eclipse” plugin. It actually exposes a “Maven” project in the menu system this time. So I point to my source code, and try to open the pom file. It opens the pom file, but it doesn’t open up all the modules or seem to understand that I want to see the source code in my ide. Hmmm, I wonder if I’m just not doing something right.

Of course, I’m not doing something right. I’m really a maven newbie. If I really knew what I was doing, I’d have this project up and humming in only minutes. Instead, I’ve been fiddling around with Eclipse for 1.5 hours, trying to figure out how to open an existing maven project in the tool. I can’t show anything productive for my labor. I’m disappointed.

So I go back to NetBeans, wondering if what I did before was something special. I did nothing but point NetBeans at the file directory, chose the File->Open Project menu and pointed it to the root directory of my Maven project. NetBeans just understands this is a Maven project. And I downloaded how many plugins? None, nothing at all. Worked right out of the box…again.

Yes, I know I didn’t give Eclipse a fair shake this time either. But why should I at this point? I can become an expert in Maven later and learn whatever it is that I need to integrate Eclipse later. But I have coding to do now, and don’t have time to mess with Maven. I have to work on my actual product, and time wasted on integrating my IDE with it is just wasted time.

Gotta love NetBeans. It just works.

Using the Virgin Mobile 2200 as a USB modem


I recently purchased the Virgin Mobile 2200 MiFi device. You can read about the device all over the ‘net, and reviews are generally favorable.


The device is primarily advertised as a wifi hotspot for up to 5 devices, but I’ve discovered that I can also tether it to my laptop. Why do that? Well, the device doesn’t have the best battery life. Connecting it to you pc or mac os x laptop will disable the wifi functionality, but it does charge the device. Sometimes you need to be online and charge the device simultaneously, and if you’re the only user, you may not really care if the hotspot wifi is disabled. In this situation, you can tether the device to your laptop, using it as a USB modem.

I used the short ~13-15″ black USB cable to connect the device to my Mac OS X laptop. When I first connected it, my laptop recognized the device and installed drivers. Once the drivers were installed, I rebooted the laptop. The installation added a Novatel Wireless Modem device in my Network settings

NewModemEntry.jpgThe “default” configuration installed the modem as an “Other” vendor, and selected the EVDO support for me.

Using the default settings, I simply clicked on the “connect” button, and I was connected to the internet. I’m typing and posting this blog using the modem functionality not the wifi connection. In fact, you can see that my settings (to the left) show that my only connectivity is my Novatel Modem.

Of course, all this functionality assumes you’ve gone through all the first steps to activate and enable your device. Don’t skip that. Instructions for initial setup are included in your purchase, so I won’t cover those instructions here.

The part that I find interesting is that NOTHING in the included documentation or online documentation will tell you about this USB modem functionality. The only thing said is that your wifi connectivity is disabled when you connect the USB cable to your laptop, which I did find out is true.

I’m generally pleased with the device so far. And it came in particularly useful for me this weekend, when my DSL service was disrupted. The $150 price tag is a bit steep, but the $40/mo unlimited data without a contract is very attractive.

In case I’ve diluted the point of my post, here’s the gist:

  1. Attaching the USB cable to your laptop will disable the wifi hotspot feature of the device, but does recharge the device’s battery.
  2. Although you can’t connect to the device wirelessly, you can use it as a USB tethered modem.
  3. My laptop (and probably yours too) recognized the device and installed appropriate Novatel Wireless Modem drivers.
  4. Nothing in the docs tells you that you now have a USB modem, but it does work and allows simultaneous recharging of its batteries while using it.


Picking a scripting language

I’ve been working with Java for a dozen years now, actually more. I don’t really want to learn another language, or forget one. I’ve already forgotten perl too many times. But the problem is that I actually do need to learn another language. Java just doesn’t do everything for me.

For example, when I need to process a huge log file and write some data to another file, I don’t really want the overhead of writing in Java. What I want is to scribble something out and run it. I might keep the script around, but I might throw it away too. I need another tool. Perl once did this for me, once long ago. Then for whatever reason, I didn’t need it anymore. Now I need it again, but remembering how many times I’ve forgotten perl, I’m thinking maybe there’s a better language. Maybe there’s something that I can actually remember from week to week as my infrequent needs call upon it.

I’ve been thinking about a few language options:

  • Python 
  • Ruby
  • Bash
  • JavaScript

I’ve only read the introduction sections of books about Ruby and Python. Python just irks me with its dependence on space. I’m sure that’s a frequent complaint. For those who overcome that somewhat petty problem, the language seems to satisfy. But something about those procedures and method with __something__ surrounded with those underscore characters. Come on, what’s up with that? But the things that really do appeal to me about Python are the general ideas that explicitness is better that obscurity, that one common way is better than a dozen equally flexible ways, and that there is a best way to do something….well, those ideas are comfortable and appealing.

Ruby is fully object-oriented, and it actually does read nicely. I’m also interested in multiple spoken languages, character sets, etc., and I’m not sure whether it fully embraces Unicode as it’s character set. Maybe there are ways to make it work with UTF-8, but I haven’t quite advanced that far.

Bash? Uh no.

Can you believe that I actually considered Javascript briefly. When run under a vm with the Rhino implementation, your JavaScript code has full access to the JRE class libraries. Used this way, it really is only a way to script Java calls. For what I want, no “native” javascript functions exist to read the underlying file system or to create new files.  Without the boilerplate overhead of a full Java application, I suppose I could squeak out some extra productivity. In the end though, it really is just a way to work with Java code. JavaScript might be great within a browser, but on the file system? Hmmm, probably not.

So what are your ideas about a general purpose scripting language? Is perl still the best choice for system work, moving files around, parsing out some key values and writing them elsewhere? Did you move to Python and finally just accept the annoying white space issue? Or is Ruby a good tool for me. What do you know about these? Any suggestions?


Mac OS X and server-ish software

I’ve owned a Macbook Pro before…it wasn’t a great experience, but it was acceptable. It was during a period of my career when my primary job was to communicate with other developers and to evangelize Java. The Macbook worked in that environment.

Now my needs are different, but I find myself using another Macbook Pro. Fine machine, don’t get me wrong…but I have to admit that I’m a bit lost regarding how to update the tools that were preloaded with the OS. For example, I find most of the common tools on this machine:

  • perl
  • php
  • apache http server
  • java

In all cases, these tools exist but are outdated in some way. They have newer versions that have features that I’m interested in, and I want to upgrade.

The question now is simple…what is the best way to find and upgrade these types of developer tools in a Mac OS X environment? Colleagues have mentioned “fink” and “Macports”. Are there other sources of Mac OS X software ports for these common developer tools? Do those sources place the new tools in the same locations used by the old tools, effectively replacing them in the system? Or do they place the new tools in a separate, different location?

I’ll find out the answers to these questions on my own as well, but I’m curious if you have tips and suggestions before I get too far down my own newbie path.