« June 2007 | Main | August 2007 »

July 2007

Jul 31, 2007

Eclipse Europa: Java Development Strives to Perfection

Eclipse, the most popular development platform for Java developers, is about to release version 3.3, dubbed Europa. I've been an avid Eclipse user for more than 4 years and I like seeing the platform evolve. Eclipse today is much more than it was 4 years ago. The RCP is a real alternative for developing rich cross-platform desktop applications. Many plug-ins and tools are offered which allow development in all sort of languages and environments.  However, I want to go back to where it all began and take another look at the Eclipse Java Development Tools (JDT).

There are many new features in JDT for Europa. I want to focus on some features which I found especially useful and convenient. This is not a thorough review, but rather some highlights which caught my attention.

Creating a new project

True, it's about the same wizard as in the previous version. However, the wizard creates a src and bin directories for your sources and compiled binaries respectively. This is unlike previous versions where you have to specify this yourself. This is a minor change, but I think it makes a difference. It shows that the people developing JDT care about usability and ease of use. It's a very minor feature, yet, it was important to include it.

Refactoring Refactored
There are several new refactoring features. I found myself using more and more of these features, which really make life easy. Traditional developers are used to doing things themselves, but the platform can do so much for you now, it's just a shame not to use it. Some example:

  • Renaming local variables. I love it. Great feature. The UI is much improved, you see the change as you type it. Really cool feature.
  • Introducing of parameter object - allows encapsulating method parameters in a single value object. Creates the objects and makes all necessary changes. Again, very useful for those methods which become bloated with too many arguments.

In general, I think giving a second look to the growing refactoring menu is a must. It can save valuable time.

Clean it up
The all new "code cleanup" feature was really called for. It allows fixing many code problems and "beautifing" your code on the fly. You can invoke it upon save or manually from the source menu. I turned it on upon save. This keeps my code aligned at all times. It has some great features like adding "final" to all parameters/variables (something PMD always nags about) and organizing imports (which many people forget). By default, the feature of "clean up" on save is turned off. Turn it on under the preferences->Java->Editor->Save Actions. I have a feelling we haven't heard the last of this feature.

Byte-code Viewer

Allows watching the byte-code when opening a compiled file with no attached source. Actually, being a human being, I find that cryptic and useless. I preferred the previous form of just looking at the interface, and, unfortunately, I didn't find any way to revert. Of course, one may install a decompiler plug-in, I just wish it was simply bundled with Eclipse.

Opening Multiple Files from "Open Type..."
The "Open Type" feature is one of the best features of JDT. I use it constantly. One annoying thing was the inability to select multiple classes to open. Well, no longer. Again, great usability enhancement.

There are many other great features including many content assists and quick fixes. I started working with the new JDT and all these new features immediately feel natural, like they were there all along. The JDT is evolving, but it is still usable and great to work with.

Bottom line: this great tool just got better.

Jul 27, 2007

Another example: either you succeed or explain

Another example which popped into my head. Let's say you have a strong reference. Maybe an advisor that supports your product, a customer that said he/she will buy your product once it's available. Maybe you want to state your own achievements in order to show that "you know best". When you tell someone about this reference, do you need to explain? 

If it was that successful and that strong, a name of a person/customer/product would be enough. They're successful, so there's no need to explain.

Something to think about when looking for references. And, it's also something to think about when developing your own career.

Jul 25, 2007

Coding on the Mac

I've been busy in the passing week, since I started coding a prototype for my product. I really had to start doing something that shows some immediate results, so I decided to go ahead and code.

My machine is working really well. I'm so glad I decided to switch over. Just to give you a sense of what's running on my machine right now:

  • I'm running with an external 20" monitor, at 1680X1050. I don't think you need a larger monitor for programming.
  • My network is wireless, my keyboard and mouse are wireless (Bluetooth) as well.
  • Currently running:
    • 2 Eclipse instances running, one 3.2 and one Europa
    • Firefox with about 20 tabs open - I use the tab counter plug-in, I can really lose track of things if I don't.
    • iTunes - playing a radio station from the Internet.
    • iCal & iGTD for tasks and calendar.
    • Freemind - a mind mapping software in Java, that's another JVM (about 1.5GB allocated).
    • NeoOffice - an Office application in Java, that's a 4th JVM (about 1.6GB allocated).
    • Adium & Skype - instant messaging applications.
    • Preview, showing me about 3 PDFs and an image file.
    • Dashboard, with about 9 widgets running.
    • More background apps - Quicksilver, Mozy (backup), SideNote, Google Notifier, ...
  • My machine works perfectly. That's insane. The most amazing thing about it is the memory management. Windows is always busy with swapping. Even if you have 2 gigabytes. Here, I can switch to an application which wasn't active for some time and it will respond, no waiting.
  • I'm starting to really appreciate the Apple JVM. The performance seems to be great and they're very stable.

I will try to do a head-to-head comparison between Eclipse instances running on Mac and Windows in the upcoming days.

Jul 16, 2007

When will the "free edition" work?

After writing the previous post regarding the "free edition" option, I felt there was some injustice about it. The bottom line was that it's practically impossible to get anything useful from having a "free edition" and that's not true. It does work in some cases. I wanted to explore these specific situations.

First, one of my main arguments was that it is a different product, aimed at a different market segment, so it will need it's own marketing efforts and it will not contribute to the marketing efforts of the main product. This claim is based mostly on the concepts described in Geoffrey Moore's "Crossing the Chasm". While I do think this is a great book, I also think that: (a) like most rules, there are exceptions and (b) the internet has changed the market. Especially evident is the long tail effects on the web as a consumer market.

Second, one may argue whether this is a different market segment to begin with. Well, there's no definite answer. In my opinion, it mostly depends on how you distinguish between your editions. For example, a CRM product with a free edition that handles up to 50 clients is probably targeted at a different segment. A photo site that offers extra space for subscription fee is probably targeting the same segment. If you are heading towards the same market segment, then your marketing efforts are joint, you stay focused on your market and it is more likely that you will see contribution to your overall sales.

Another point which I neglected in the previous post is web applications "free edition". Although I focused my research on classic software products, it's not very different when it comes to web applications. I think the key point to remember is that you will have much more users for the "free edition", thus, you will need more servers and bandwidth.  As with classic software, providing a poor service (e.g. slower servers) to your free edition users will have a counter effect, so plan accordingly. And, reiterating the point, if this is a different market segment, this is exactly what "diffusing your focus" means.



Jul 15, 2007

Should I offer a "free edition"?

A few years back, nobody would've thought about giving software for free. It is something I work for, I expect to get paid for my efforts, so why give it away?  And then came the open source revolution and turned things around. Suddenly, giving a piece of software for free makes sense. Well, if not, why so many people are doing it?  Let's face it, almost every piece of software you use today can be replaced with a free software. Operating system, office applications, anti-virus (for those less fortunate who use a virus prone OS), graphical editing tools... everything. True, it may not be of the same quality (as I claimed in my previous post), but it will be free.

Many great articles exist on the topic of open source development. But this is not my focus today. Saying that a software is "open source" does not mean it is given for free, although this is usually the case. Going for open source development is a bigger challenge, as the business model is usually less obvious. I have enough challenges at the moment, so I'm aiming at the good old business model of selling licenses.

I will offer a Free Trial for sure. It will be fully operational, not a demo. The big question is around the free edition. The free edition will provide some functionality and "lure" users into buying the full edition. Let's start with the pros and cons and summarize with some useful points to keep in mind when considering a free edition. I collected these from various articles I read on the subject and from several interviews I conducted.

Pros for giving a "free edition"

  • Instant Market - build an audience, fast. Take a look at SourceForge, possibly the biggest collections of open source projects. One of the great features of SourceForge is the ability to see download statistics for each project. In my area, for example, good tools can easily generate 5000 downloads a month with no marketing effort. I think many vendors in my area will be satisfied with these numbers (again, no marketing efforts). Especially for new projects.
  • People know they can get tools for free, so they look for free alternatives. In my previous company, it was very common to favor free and open-source solutions over paid ones. Many people today prefer getting a little less and pay nothing. It's not just about money: the difference between a $50 and $70 is $20. The difference between free and $20 is a great barrier of opening your wallet. In a large corporate, opening the wallet can be a huge hassle and tons of bureaucracy.
  • Free testing and feedback - people will test your software and report bugs. Most people expect less when they get a free edition, so you're not required to provide the same level of support.

Cons for giving a "free edition"

  • Efforts - it's another edition to release and maintain. It will involve effort for building and testing. People do expect some level of support, so be prepared to provide that. A "free edition" of low quality with no support will have the counter-effect on your sales.
  • Loosing potential paid customers - customers may be content with the free edition and may not see a strong reason to upgrade.
  • It will require marketing. Otherwise, you'll end up slip sliding into a dark corner. True, there are tools with 5000 monthly downloads on SourceForge, but there are 100 times more projects with 10 downloads a month or less... With a very limited audience, you'll miss the goal of marketing the full version and the whole effort will be in vain. The question: if this requires marketing efforts, why not invest them in the original product?  Well, it is easier to market a free product. But then again, the free product is not the basis of your business model.
  • Are you attracting the audience from your targeted market segment?  Relating to Geoffrey Moore's great book, "Crossing the Chasm", efforts should be focused on a limited market segment and penetrate the mainstream customers in this segment. However the people who download the free edition may not be of the same market segment. If it's a different segment, you'll need to struggle to reach mainstream with your free product as well. This, in turn, diffuses your focus from your main market, which is the basis of the business model.

Some key points to remember

  • Carefully consider the difference between the editions. Give too much and nobody will buy your paid edition. Don't give enough and nobody will use your free edition.
  • It's another product you're pushing to the market. It will require all the related efforts - development, deployment, support, marketing, etc. You're probably targeting a different market segment, so be prepared to conquer this segment.
  • It's difficult to estimate how this product will help the sales of your paid products. However, if you have limited resources, you may want to consider safer and cheaper means of marketing.

To sum up, there are many cases where the free edition missed it's target. There are examples where it did help create a reputation and establish market dominance. For me, it's still a possibility. It's very reasonable for me to start with a simple edition, give it for free and proceed to develop the full edition. However, to put bluntly, I need the cash. I cannot afford burning "fuel" without any income. I may offer a free edition, but it will be later on in the process.

About nWire

  • nWire Logo
    Browse & visualize all code association in one extremely powerful view, quick search for methods, fields and more. Boost your coding productivity in Eclipse™.
    Watch a 4 minute demo that will change the way you look at your code.
    Visit nwiresoftware.com

Twitter Updates

    follow me on Twitter
    My Photo

    My Other Accounts

    Delicious Digg Facebook FriendFeed Google Talk LinkedIn Reddit Twitter

    AddThis Social Bookmark Button
    Blog powered by TypePad
    Member since 05/2007