Sunday, May 24, 2009

Review: Java FTP Servers

I needed an FTP server to perform functional testing of some FTP client Java code (commons vfs). The top 5 Google results for "Java FTP Server" were:

Apache MINA FtpServer - Runs as standalone or embedded; free and open source (Apache License)

FtpGoServer - Runs as standalone; source can be purchased

jftpd - Runs as standalone; appears outdated (last release in 2001); incomplete implementation

Java Secure FTP Server - Runs as standalone; free and open source (GPL)

Colorado FTP - Runs as standalone; free and open source (LGPL)

My pick is Apache Mina FtpServer. It's an active project. It can be easily embedded into any functional test -- the alternatives require peering into the source, writing adapter classes, etc.. It's also the only one that shows significant activity in Google Trends.

UPDATE 5/26/09: Documentation of Apache Mina is pretty thin (as with the other FTP packages).

Reduce IDE clutter with Mylyn

One of the problems with working on a large project in Eclipse (or in any IDE) is navigating through various project resources (e.g., classes, methods, and etc..). Mylyn, a Eclipse feature, attempts to solve this problem by providing a focused view that shows only the relevant resources for a given task:

Skip the first 4 section because the speaker blathers on and on about various impediments to a software developer's productivity. Begin at section 5 and watch until you get bored (~30 minutes).

Key features of Mylyn include:
  • Integrated view with ticket issue tracker software such as Bugzilla, Trac, and JIRA. Issues assigned to you are downloaded into the Eclipse project so that they can be viewed offline without the delay of launching a browser and waiting for a page load.
  • As you work on an issue, Mylyn tracks your visits to classes, methods, and resources to create a task context. You can upload the task context to share with other developers who would be able to view the classes, methods, and resources relevant to the ticket issue.
  • Bug numbers inlined in code comments can be clicked to bring the ticket issue into view.
In other words, Mylyn integrates Eclipse with your issue tracker so that only the relevant project resources are visible at any given time.

Sunday, May 17, 2009

JavaScript is elegant

I used to think that jQuery made JavaScript elegant. I was wrong. JQuery just helped me understand what is already a quite elegant language. Watch this entertaining 1 hour Google Tech Talk by Douglas Crockford, author of JSLint, JS Min, and several essays on JavaScript misconceptions.

Among the things he discusses are:
  • The origins of JavaScript and the design flaws
  • General constructs to avoid in JavaScript
  • How closures are used to create objects
  • Benefits of using as a functional language
  • Uses of the triple equality (===) operator
Probably his best statement about JavaScript is that most of us know how to use JavaScript without taking the time to understand it.

If you've done or will do any work in JavaScript, please take the full one hour to watch this talk. It's worth it.

Saturday, May 16, 2009

Inspirational talk

Damien Katz talks about the path that led him to develop CouchDB, an open source document oriented database. It's not very technical and it's inspirational in an ordinary down-to-earth way.

Thursday, May 14, 2009

Clean code talks

Below are four fantastic talks (~30 min each + Q&A) on clean code and unit testing. I wish I came across them a few years ago when I was first starting out unit testing -- would have saved me so much pain.

If you're a developer with a few years down your belt, you should know why:
  • if statements are bad
  • new statements are generally bad
  • singletons are an anti-pattern
  • service locators were the pre-cursor to dependency injection
If not, watch the talks and you will feel much smarter!