« July 2007 | Main | September 2007 »

August 2007

Aug 30, 2007

Why should people pay when they can get it for free?

One of the most common question people ask me is: "why do you think people will pay for your software when they can get it for free?". Just to put things in context, I'm working on an Eclipse based tool. Eclipse is free and many of the Eclipse plug-ins are free. People working in the Eclipse ecosystem are used to getting stuff for free. So, for me, this question becomes extremely relevant, even though there isn't a free tool that can do exactly what I offer.

I wrote a few posts in the past about giving software for free and the added costs of using free software, including:

A great post by Bob Walsh over at 47 Hats blog explains why you can still sell, even when your competition is giving it for free. It's worth reading (and I should add it's a good blog altogether).

Bob discusses ways of making yourself more competitive by reducing the Total Cost of Ownership (TCO) and by making your software and your site more approachable. The emotional side is a strong topic. I would have to add that, plainly, making your software cool is a great factor here. Take the iPod for example. Sure, you can get a cheaper player. But the thing is so freakin' cool. This is a stronger factor when you sell to consumers (B2C), but it will also help getting end-users on your side and eventually convincing the manager he/she is making the right buying decision.

Aug 29, 2007

Finally, a new Bloglines

I can't begin to describe the importance of RSS feeds and blogs. I spend at least half an hour every day reading RSS feeds, usually more. It's much like reading the newspaper or watching the news. In fact, I find that a growing number of RSS pieces are finding their way to the printed paper, usually a day or so later.

I have almost 150 feeds in my growing list of RSS subscriptions. If I would read them all every day, that will probably take most of the day... that's a huge issue, which is yet to be solved. But this is a topic for a different post. Today I'm focusing on the RSS reader (or aggregator).

I'm an addicted Bloglines user for more than 2 years now. I ALWAYS have a tab with Bloglines open. I believe I've tried most (if not all) the online RSS reading solutions out there and Bloglines is the best. Period. Well, the new Bloglines beta is finally here. The Bloglines team was lazy for the past two years, releasing only minor (and useless) additions. But not this one, this is a whole new interface.
Or should I say that the best just got better...

If you're using another reader, it's time to check out Bloglines. Yes, even you Google Reader users. Trust me, I've tried it switching several times and returned to Bloglines at the end of the day. If you're using Bloglines, it's time to check out the new Beta. And, if you're not using any RSS reader... it's a good opportunity to start.

Personally, I think there's a lot of untapped potential around RSS. It will be interesting to see what Bloglines has up its' sleeve for the new beta. It's something worth tracking.

Aug 24, 2007

The Sun goes down on Java?

Sun Microsystems announced yesterday that they will change their stock symbol from SUNW to JAVA. Check out the following blog post by the CEO, Jonathan Schwartz. It pretty much reminds me of the move Apple made a few months back, when Steve Jobs announced that it will change its' name form Apple Computer to Apple. It's a marketing move, no doubt. I don't see a lot of real substance behind it.

Why is it good for Sun?  As their CEO points out, the Java trademark is far more ubiquitous than Suns'. Let's face it, other than us computer geeks, who knows about Sun?  Do a quick poll, ask your mother, your father, your 60 years old aunt, do they know Sun? How about Java?  I can guess what will be the answer.

Yet, there's a sense of betrayal. One of the best things about the Java platform is the open standards. There's no Microsoft who is the main (read: sole) vendor behind the platform. You have a choice of vendors. You know that decisions regarding the future of the platforms are being made by the community and not by one company that emphasizes its' goal to make more profit.

Java is finally gathering the momentum and it is now a very successful platform.  But one of the key driver behind this success was the fact that this is an open platform. If it was just a Sun proprietary platform it would probably be as successful as Sun's NetBeans IDE (sorry for the cheap shot, I had to take it). It's true that Sun is leading Java for a long time, but it does not own Java. Java belongs to the community now and it is too late to take it back now.

But, no fear. Sun is not claiming to be Java's sole proprietor. Coming back to what I said at the beginning, this is just a marketing ploy, nothing more. Sun cannot reclaim Java even if it wanted to. But even if it could, why would it?  The community is the reason for Java's success, so why cut off the branch they're sitting on?

Now, I like to see the Java platform moving forward. Sun is constantly pushing the Java platform to new levels. Hence, in general, I appreciate Sun's efforts around Java. Hence, I would like Sun to stick around and keep stirring the Java platform. Hence, I would like Sun to be a successful company: the more profit they make the more money they invest in Java. If they lose, the platform loses. If they will perish... this could be a death blow to Java. So, I'm saying that Sun should do whatever it takes to survive. We need them. And if they need the Java flag to keep their head above the water, let them use it.

Aug 23, 2007

Summarizing 3 months of blogging

Time flies and it has been 3 months since I started my blog. Here are some random thoughts about it:

  • I enjoy it. I like to take a break from everything else and focus on writing a post. I often find myself thinking about good topics for posts or just working on something and saying to myself: "I should blog about it".
  • It is time consuming. I did my best to write at least one article per week. It usually takes about 2-3 hours. Some took much more.
  • I focused on generating my own original content. Quoting posts from other blogs seems a bit like plagiarism, even when you quote the source. Something feels wrong. Nevertheless, I plan to start doing it in my blog - I read a lot of other blogs and I'm always sifting through tons of posts. Taking the jewels and highlighting them on my blog can provide real value to my readers.
  • It sounds funny to say "my readers", but I did get over 3000 visitors during that time, which is an average of over 30 people per day. I have about the same amount of subscribers (you don't count them as visitors, they usually get it by RSS or email). That's not a lot, but that's a start.
  • I found that the best way to promote my blog is posting the links on other sites like discussion groups and bulleting boards.
  • I tried to reach out to fellow bloggers with little success. I still fantasize  about having a feature on a post I wrote in one of my favorite blogs which have massive publication. I'm constantly thinking about how...

That's it. I hope you enjoy it as much as I do :-)

Aug 21, 2007

Did you know: there's a browser compatibility issue

A few days ago I came across a poll posted on the web site of one of the major Israeli banks. The poll was asking: "what was your browser of choice". I'm not sure exactly where the poll was posted on their site. I got the link directing me to the poll, but I couldn't find it on their main page. I'm guessing that their goal is to decide whether supporting Firefox is a requirement. Today they support only Internet Explorer.

Can they infer the results from their site statistics? Of course not. People who use Firefox on a regular basis already know that it doesn't work there, so they use their site with IE.

Can they really get a good answer from that poll? In my opinion - no, they can't.

Let me ask you a question: what browser are you using? If you answered "Firefox", "Safari", "Opera", "Internet Explorer 7" or any of these, I think you're a minority. Most of the people would say: "I'm using a web browser". I'm saying that most people are not really aware that they have a choice. They install windows and use the browser they get. They don't wonder if they can get a better browser, from the same reason they don't wonder if they can get a better operating system.

From that reason, such people won't even bother taking the poll. Firefox serves the innovators and early adopters. It is also very popular among techies, which are innovators by definition. In my blog, for example, IE users are about 15% of the population. Chances are you're now using Firefox to read this post.

So, my point is, that most people don't know and don't care. It seems like browser compatibility issues are a hot topic. But it's really just a hot topic for those who care.

Aug 17, 2007

H2 Database engine: a developer presepective

I'm now coding a prototype of my product (more on that in the near future) and one of the first things I was looking for was a repository to keep data. The repository needs to be embedded in my software with no external server running. After considering several alternatives, including exotic ones like RDF repositories, I decided to go for a relational database. Naturally, I was thinking of Oracle's Berkeley DB. It is a highly regarded embedded database, probably the best on the market.The main obstacle was the license: it is free if your software is free. So, I started looking for alternatives.

I had two main alternatives now. First one, Java DB. This is a new feature in JDK 6, which is actually a re-branding of Apache Derby, another popular embedded database. The next option was HSQLDB, the database engine used in Open Office. For those not familiar with Open Office, let's just say that if Open Office is the alternative to Microsoft Office then HSQLDB is the alternative to the Jet database engine (or the later "desktop" versions of SQL Server) used by Microsoft Access.  Open Office has an Access like application called Base, which uses it. Needless to say, the Microsoft alternatives were out of the question since I'm working on a Mac.

Then I came across an interesting product: H2. The H2 database engine is a free, open source, fully functional relational database management system written in Java. It can run in embedded mode or as a server. What caught my eye was a claim by the developers that H2 is faster than both HSQLDB and Apache Derby. Being an innovator myself, I like disruptive new products, hence, I decided to give it a shot.

Starting off
Installation was a breeze. I was up and running in literally minutes. What you get from their site is a zip file (installer if you're on Windows) and a PDF manual. That's it. You unzip the file and you're good to go. The manual is very useful, and got me started in no time. Once you start the server, by using a Java archive, it starts a web server which provides a web client for working with your database. So, again, unzip, run a Java command and that's it. You got a fully featured database server AND a database management application working.  BTW, starting the server takes about a second on my MacBook Pro, even when I've got over 10 other applications running in the background.

Working with H2
H2 supports SQL and JDBC, so it's much like any other database. The data is kept in a few compact files which you specify in your connection URL. If the files does not exist, they are created on the fly and you can start using them immediately. Backing up just means backing up your files. For those familiar with Jet, it is pretty much the same only much smaller and faster. The web client is great for viewing your database structure, viewing/editing table data and executing SQL commands. If you're looking for a tool that will help you design your database (i.e. you're too lazy to write the SQLs for creating the tables by hand), you can also use the Open Office Base wizards and table views or use other tools which support JDBC, like SQuirreL SQL (free, open source and cross platform).

The Developer Perspective
Since I'm working on a prototype, agility is my main concern. I'm using the Spring Framework JDBC Templates and it is working perfectly together. H2 also supports Hibernate, but I don't really need it at the moment. I can create new queries in minutes. I'm working in embedded mode and starting the server is very fast, usually less than a second, and it has a minimal memory footprint. This is important since I often want to execute simple tests and get instant results. I didn't get a chance to measure its' SQL execution performance, but that will happen in the near future.

I had one issue: once my process starts it locks the file, so I cannot see what's going on in the database using another client. I posted a question in the H2 Google group and quickly got a response, by the lead developer, that I can continue to work in embedded mode and still open up a port for remote connections. It took me about a minute to set this up and it just works. This is what I like about H2, it is very simple and easy to use.

Bottom Line
I'm happy with H2. It is just what I needed. It is a breeze to install, it is compatible with my ecosystem and it is quietly delivering results without disturbing my work and becoming a burden. I haven't used it for production systems or for heavy data crunching, but for my needs it works great. If you're writing a Java software and you need a simple, instant, persistent storage, this is a viable alternative to consider. H2 is currently in beta and it is still under development. This is something to keep an eye on.

Aug 09, 2007

Eclipse Europa JDT: "Save Actions" rocks!

Last week I wrote a post reviewing some of the new features of Eclipse Europa. Since then, I had a chance to do some more heavy coding with the platform and experience it in greater depth. I feel my previous article did not do justice with one feature which I can single out as THE most important addition to Eclipse JDT in the Europa release: the "Save Actions".

Let me put it this way - this can completely change the way you write code.

The scenario is simple. You write your code, you don't need to worry about formating, imports and a whole bunch of other nuisances that just take too much time to worry about. You hit the "save" and that's it. Your file is as good as new. One keystroke, which you're already using today, fixes everything and aligns you with the standards. Amazing.

You need to give it a try in order to understand how radical it is and how much time it can save you.

Unfortunately, the feature is turned off by default. I can understand why, however, by all means, turn it on and see the wonder in action.

Here's a partial list of the fixes that can be done with the "save actions":

  • Formating - indentation, braces, white spaces, blank lines, control statements structure, line wrapping, comment structure
  • Organize imports - no more unnecessary imports in your file. EVER.
  • Code style - enforce using blocks for if/while/for/do, automatically add final modifier, etc.
  • Member access - automatically quality  field and method access, etc.
  • Unnecessary code - remove unused members, local variables, casts, etc.
  • Missing code - add @Override and @Deprecated annotations.
  • Code Organization - sort members, sort enum constants, remove white spaces

As I see it, this is a great start. This is just the initial version of this feature and I hope the list will grow longer. I would also like to see some customization options, but that's another issue.

Bottom line - this feature is a true hidden gem. Use it.

Aug 05, 2007

Game Review: Command & Conquer 3

Yes, and now for something completely different...

I love computer games. I wouldn't call myself a hardcore gamer, but I enjoy an occasional game. I usually have my peak periods of gaming, followed by dry seasons. From all genres, I'm a big fan of Real Time Strategy (RTS) games, ever since the days of "Dune 2". I was a student back then, and I can still remember starting to play in the evening and suddenly discovering the sun has come up.

I never discovered any interest in games taking place in past times, I prefer current or futuristic games. That's why I like the "Command & Conquer" (CNC) series, as well as WarCraft and StarCraft. All great games. I think my most favorites aspects of the game is discovering the special units as the game plot unfolds. I didn't get into the network games (time... time...), and I prefer playing according to the plot and not just simple skirmish (which is boring after a while).

The latest addition to EA's glorious "Command & Conquer" family if #3 in the series, aka CNC3. Here's a short review of the game. Nothing thorough, just my perspective.

In general, I enjoyed the game very much and I highly recommend it. The game-play is much like all other games in this genre. Very familiar, almost boring at first sight. But there are new units and new ideas and the game did surprise at some points.

Graphics & Sound
The graphics are great. I played on high detail level and it looks fantastic. Yes, it could improve, but it is very realistic. For example, when a plane goes by you can see the heat coming out of the engines. Cool. The sound is good, too, and creates just the right atmosphere. Nothing new here.

Units
I think EA really nailed it. There are surprising units, like the Scrin mastermind, which is something I haven't seen before. There are nice ideas like the ability of engineers to revive the walking mechanical units. However, many units (over half) are well known and not surprising. It's nice to see the 3 factions, each with really different strengths, yet well balanced.  It was funny to see the "Planetary Assault Carrier" which is simply taken from StarCraft. Overall, nice job here.

The Storyline
The nice thing is that you play 3 storylines and they don't contradict, but rather give you a complete picture from all angles. Eventually, the Scrin (last) storyline was short an lacking. It feels like they were saving money here. The other 2 are great and provide hours and days of fun. It's good to see that there are less surgical missions and more brute force ones with lots of resources. Again, it's fun.

Skirmish
I was disappointed to find out the challenges introduced in CNC:Generals were not included. I really liked it. Other than that there's an ability to select the AI tactics, which is cool and makes a big difference. I must say that it's still possible to win many missions with the simple tactic of letting your opponent exhaust his resources. However, it's not that easy anymore.

Final Thoughts
I like "forgetting myself" in a good RTS game and CNC3 delivers. It's an improvement over a known formula that still works. However, in most cases I did feel there's nothing new here. I hope they come up with new ideas for the expansion pack...