Archive for January, 2008

Memory Lost

This just made my day. I saw this on the Daily WTF website in their Error’d section.

MemoryLost

Must have Mac Apps

A coworker was asking me some questions about the Mac, he had just received his new ThoughtWorks MacBook Pro. As a partial answer, here is my list of must have applications for the Mac. I have divided them into two categories - free and not free.

Free Apps

  • QuickSilver - the definitive time saving app getting things done without doing them
  • Growl - displays messages directly on the screen in a little transparent window
  • Adium - Instant Message app that works with just about every protocol out there today
  • Chicken of the VNC - excellent VNC client
  • iStumbler - for finding WiFi hotspots
  • NeoOffice - OS X implementation of OpenOffice.org (a Microsoft Office replacement)
  • xCode - Apple’s IDE, this gives you C compilers and other tools you will need for compiling things like Ruby gems
  • SvnX - Subversion Client (if you don’t want to use the command line)
  • iSquint - converts just about any video format into iTunes, Apple TV, and iPod compliant video
  • MenuMeters - puts a set of graphs in the menu bar that show you what your CPU, Memory, Networks connections, Disks are doing
  • Perian - added codecs for playing back non quicktime compliant audio and video files

Not Free

That is all I can think of right now, as more come to me, I will add them.

Wicket Phone Book and Maven 2

This evening I tried to download and setup the wicket-phonebook example in Eclipse. The application uses Maven2, something I have not had a lot of experience working with. In the root directory of wicket-phonebook, there is a script called Eclipse.sh which configures everything as an Eclipse project. It also downloads into the Maven2 repository almost all the dependencies.

However, there are two steps that are not done:

  1. Set up the M2_REPO environment variable in Eclipse
  2. Download and install JTA

For the first, I found the following command:

mvn -Declipse.workspace=
 eclipse:add-maven-repo

And for the second problem, I found the answer on JUGPadova website. In short, the problem has to do with Sun’s licensing of some of their J2EE jar files. Once I downloaded the JTA.1.0.1B.jar file, the following command put it in place and took care of all remaining errors in my Eclipse project.

mvn install:install-file \
  -Dfile=./jta-1_0_1B-classes.zip \
  -DgroupId=javax.transaction \
  -DartifactId=jta -Dversion=1.0.1B \
  -Dpackaging=jar

New Year’s Story Cards (aka, resolutions)

I have decided this year to set myself three New Year’s projects/story cards. Instead of creating some vague resolutions that are devoid of acceptance criteria or measurable goals, I am creating story cards and projects that have tangible and visible results.

  1. Blog a minimum of once a week.
  2. Resurrect my TeamDocs open source project and bring it to a 1.0 release
  3. Create and release my first Ruby on Rails project

I am also going to manage these three goals as one would manage projects. I am not sure if I am going to use Basecamp or some other software. For TeamDocs, I will probably use the space on Google Code. This means I will be updating the website and checking in new code in the very near future.

As for the third project, more information on that will come. I am not sure if I am going to make it open source or try to release a hosted web application.

I took a look back at 2007 and realized that I had not really accomplished anything. In a nutshell, 2007 was mostly a brain-dead year for me. I made the mistake of relying on all my learning coming from work. Although I have learned lots of things little of it was technical. Instead, most of it was people or soft-skills. This was a mistake on my part; no one should ever rely on their work as their sole source for learning.

Any tips for writing mapping code?

Currently at work I am writing mapping code. Code that takes values from one anemic object model to another anemic object model to another anemic object model. Aside from the usual iteration code, most of the code is comprised of this.setSomething(other.getSomething());. Unfortunately, this code does not map one-to-one from one model to another.

Being new to this kind of coding, I am wondering if anyone has any tips, tricks, or patterns. We are trying to avoid having a large (1000+ line) class filled with procedural, linear code. So we have a bunch of utility, finder and builder methods and classes. This has made something better, but I am wondering if we could do more.