Archive for the 'java' Category

Name Dropping

Tuesday, August 22nd, 2006

What do you get when you create a Java-based desktop RSS/Atom aggregator backed by a MySQL database? Robust searching and storage.

What do you name it if you’re trying to convince people to try it? Irritator. No, Frustrator. HemorrhoidMaker? Wait… I’ve got it…. Aggrevator!

Good thing it is open source. I’d hate to have to pay to be aggravated. In all fairness, I haven’t tried Aggrevator yet, so I can’t vouch for how well it works. However, I’m not so sure that reverse psychology works well in marketing…

  • Diet Coke: None of the taste, all of the chemicals.
  • Carls Junior: The more that drips on your shirt, the less you have to taste.
  • GM: Please buy a car to support our repair shops and failing pension fund.
  • Linux: None of your games will work, but you can be smug that you don’t run Windows.
  • Flickr: Creepy people are doing creepy things while looking at your family photos right now.
  • Macintosh: No games to buy, but you can be smug that you don’t run Windows.
  • U.S. Congress: Vote for a lawyer who craves power and will have tremendous influence over your economic well-being.
  • inkBlots: Might as well read it if you’re not going to be productive today.

- M

To Compile or Not to Compile

Monday, August 21st, 2006

A discussion I overheard recently got me thinking about compilers. (Wait, don’t fall asleep!)

A software developer complained that a Java 1.5 metadata annotation was preventing him from compiling a class. In this particular case, the @Overrides annotation was choking because the superclass no longer had a method to override. The suggestion was made that the developer simply delete the annotation, compile the class, and continue with his work.

(Nobody suggested the hard work that needed to be done: Get the older version of the superclass and find why the method was removed/renamed in the new version. Analyze whether the functionality in the subclass is still necessary and needs to be called from somewhere else in the stack…)

Yes, deleting the annotation would be so much easier.

We all hear the joke, “It compiled, so check it in!” It is a joke…. right? Compiling isn’t supposed to be the goal of software development, is it?

Charles Hummel once wrote, “The urgent is the enemy of the important.” The urgency of a deadline tempts all programmers to “just make it work.” That’s an unfortunate reality of software development that can’t always be avoided. But when the decision to “just make it work” becomes the rule rather than the exception, we’re in trouble.

To state the obvious, I’m coining this phrase:

The Compiler Axiom
Code that won’t compile is not my enemy.
Bad code that will compile is my enemy.

Most software developers will agree with this in principle, I suspect. After 11 years in software development, however, I don’t often see them actually take it to heart. More often than not, the shortcuts I see people take are less rational and more rationalization.

Here’s a reality-check list to see if you don’t really believe The Compiler Axiom:

  • I have set my editor to suppress compiler warnings so I don’t have to ever see them
  • I habitually ignore exceptions that aren’t part of what I am directly working on
  • I have commented out code I didn’t like or didn’t understand without researching its purpose or contacting the author
  • I have recreated a class/library/application rather than figure out an existing one

If you answered “yes” to any of the above, perhaps it is time to re-evaluate why you write software. Is your goal to compile/source control/ship code, or is it to deliver something that meets requirements and works as designed?

Ironically, if you have answered “yes” to anything on the checklist (as I have), another developer may someday have to deal with your code and decide whether to ignore exceptions, comment out code they don’t understand… or simply replace it altogether.

Website as Graph

Tuesday, June 6th, 2006

HTML as art… who knew?

On a lark, I ran inkBlots through the “Website as Graph” generator as a fun diversion. The tool parses the HTML tags on your site and creates a colored node tree. The resulting graph looks like something between a site map and fractal art. (Now, if only each link dot would actually take you to the corresponding page.)

Watch my graph unfold in real time (requires Java applet support), or click the image below to see a larger static version.

websiteasgraph for inkBlots

You can also check out the Flickr gallery of other sites. One of my favorites to watch unfold is Apple.com’s graph… check out the “dandylion” grow in the middle as the graph expands.

ION: Media & Podcast Player

Friday, May 26th, 2006

ION

Nathan Freitas has just announced the 1.0 release of ION, a desktop open-source media/podcast player that supports an array of audio/video/image file formats. ION works on *nix, Windows, and Mac platforms.

A video tour of ION and screenshots are available, or you can try ION right now via Java Webstart (~5MB):

From Nathan:

ION Screenshot “Written in Java, available for Windows, Mac OS, and Linux/Solaris/*nix, uses ROME and the Modules subproject heavily, and is licensed under the Mozilla Public License.”

“… Learn about our playlist sharing service at http://iondb.com … Drag and drop any posts or media from other feeds or searches into a custom playlist… This is accomplished by ION being not only a parser/consumer of feeds, but also a generator - remixing items from other feeds into a new feed which is published up to our servers as RSS.”

ROME Mano: Server-based Feed Aggregation in Java

Monday, May 1st, 2006

Alejandro Abdelnur has just started the Mano subproject in ROME, a Java web application that will parse, transform, and aggregate multiple RSS or Atom feeds using a REST-ful API. This is seriously cool stuff that will let you do things like:

  • Request an RSS feed but have it formatted as Atom. Or vise versa.
  • Request multiple feeds in various formats, returned in a common format of your choosing.
  • Merge, store, and paginate feeds on demand.
  • Improve your love life.*

For more information on the project, see the ROME Mano Wiki page.

* Only in cases where your significant other gets excited by the Java servlet filter pattern.