Oh, the joys of using maven. I had the great opportunity today to spend an extended amount of time on a task that should have required 10 seconds of typing and about 20 seconds of waiting. All I wanted to do was check out a new project from subversion and run "mvn eclipse:eclipse" so that I could import the project into Eclipse. Unfortunately, about a week ago, while doing a similar thing, I must have downloaded the latest version of the maven eclipse plugin (version 2.7) which decided that it was going to throw up all over itself.
The problem ended up being the inclusion of two elements in the pom that pointed to the same directory (src/main/resources). This is totally legal and very much necessary for the project in question. The first block uses filtering and includes a couple of files while the second resource block does not do filtering and excludes the files from the first block. It is basically a standard way to put all resources in one directory and filter some of them, while not filtering a certain set, for instance binary files like images which will react poorly to filtering. Regardless, the new version of the maven eclipse plugin couldn't handle this while its predecessor versions had no trouble with it. To be exact, the error that pops out is Request to merge when 'filtering' is not identical.
Now there are a couple of ways to handle this. One way would be to explicitly put the version of the plugin that I want into the pom of the project. This works, however I would need to do this in every project or put it into a parent level pom that all projects inherit from. Again, that works, but my main issue with this solution is that it now puts IDE specific information into our projects which really shouldn't care what the development environment is. And this error really only effects myself and the two other developers on the team that use Eclipse, not the four guys that use NetBeans or the one crazy mofo that uses emacs. Another solution would be to specify the plugin version number on the command line. This works as well, but my tiny monkey brain is well trained to type "mvn eclipse:eclipse' without thinking about it and I would never remember to get it right.
The solution that seems to make the most sense at this time is to use a plugin-registry.xml file, which prior to today I have never heard of. Thanks to the crazy emacs mofo mentioned earlier for pointing me in the direction of this link that describes how to set up the plugin-registry.xml file. If you want to skip reading through the info on the link, here is the cliff notes version...
Go to your settings.xml file and add "<usePluginRegistry>true</usePluginRegistry>" directly under the opening tag. Then create a file called plugin-registry.xml in the same directory as your settings.xml file. (NOTE: maven will auto create this file if you run any maven command at this point, but it is probably easier just to create it ourselves). In the plugin-registry.xml file, add the following content...
<?xml version="1.0" encoding="UTF-8"?><pluginRegistry>
This is basically telling maven that we currently want to use v2.6 and that v2.7 is rejected for all of eternity. When a new version gets released eventually, you will be prompted the next time you run an eclipse plugin goal and you can decide whether to use the latest version or not. Maven will automatically update the plugin-registry.xml file for you based on what you decide.
Maven is in the process of redesigning this functionality as the warning on the top of the earlier link states, but for now, it works pretty well.
Like all maven bugs, it sucks and takes you a bit to figure out, but going forward I have a quick and easy way to get around broken plugins. If anyone knows why they decided to break the eclipse plugin, I'd love to know.Tags: Maven, Eclipse
A Whole New Mind: Why Right-Brainers Will Rule the Future by Daniel H. Pink
The focus of this book is how left-brained (analytical) jobs are quickly being outsourced and how right-brained (creative) skills are the differentiator that will either help you keep your job or allow you to flourish in a new role within that job. Being in the software industry, this definitely rings true to me. I'm not good at my job if I just sit there and pound out lines of code like a good little code monkey. I'm good at my job if I can go to the next level, using creative thoughts to design complex systems or interfaces or put myself in the position of the end user and figure out what will make the best experience for them.
My father sent me this book. He is a former accountant/accounting firm president that is now in his second career as a practice management consultant. (See his website here, incidentally, the site is designed and maintained by yours truly). The successes that my father and the firm he worked at had was not because they could complete a perfect tax return, it was because they could think beyond that, taking in the full picture of their clients situation to offer then advice in other aspects of their financials and business growth and help them plan for the future. In fact, these days, you can easily outsource the initial processing of a tax return to India and get the results back in the morning. If your only skill is being able to process a tax return, watch out, it is likely cheaper to send that tax return half way around the world than it is to have you do it.
The book highlights six areas where right brained thinking matters most and offers exercises on how you can improve your right brain skills. My personal favorite is the chapter on Empathy. Empathy is the ability to put yourself in someone else's shoes and feel what they are feeling. As a software developer, this skill is becoming more and more important to me. I need to sit there and make decisions based on how the user will feel when they use the tools/programs that I develop. Will an extra click here matter? Does this page layout make sense? How does the user do their job and what will make them more efficient? These aren't things you learn in college (at least I didn't). These are things you have to work out and start thinking about differently. It isn't acceptable for software to just be functional, it has to be usable, and highly usable at that.
The other five chapters pull in additional important themes in right brain thinking. This is definitely a book that you should read if your job involves mostly left-brain thinking, or if you haven't figured out how to bring the right side of your brain along for the ride.Tags: Books
There is a great article on Computerworld and PC World called "Running on AIR: Great office apps you can get now" and lists out several great AIR applications. You can find the article on Computerworld here and on PC World here (same article, but there are screenshots of the apps on the Computerworld article).
One reason that I like this article is because it lists my own Portfolio Viewer application as one of the "great" AIR apps. I have to say I agree completely with the author here. The author mentions that I am working on some new features for Portfolio Viewer and that a new release is going to come out in the next couple of months. If you haven't tried the application yet, go to http://mentalecho.com/portViewer and give it a shot. If you have tried it and have any feature requests, let me know what they are and I will try to get them in to the next release. You can contact me throught he contact link at the top of this page or through the feedback feature in the Portfolio Viewer application.
Other than mentioning my application, there were several other intriguing applications mentioned. One of them, MiniTask, I started using as soon as I read about it and am very impressed. It is just a simple task list application but it does its job pretty well and look good too. Another one I look forward to trying out is Klok which is used to help track time for freelancers.
Take a look at the article try out some of the AIR applications, especially Portfolio Viewer.Tags: PortfolioViewer, AdobeAIR
Categories: General, Technology
So what do I have in common with Thomas Edison? Apparently we are both inventors. While thumbing through some junk mail the other day, I found a letter from the patent and trademark office letting me know that I am now an inventor on patent number 7384380. The patent is for a "Method and System for Detecting and Displaying the Impact of a Blow"and basically boils down to a three part system of embedding sensors in boxing gloves that measure the force of a punch, transmitting the measurements to a computer, and then displaying them.
Now, I hope you note the sarcasm in comparing myself to Edison and even to calling myself an inventor. I don't think the work I did on the system warrants me being called an inventor. The work the others did was truly inventive, but I don't really feel the same way about my contributions. That being said, it is still kind of cool to be named on the patent, and I really do like the work I did and the prospect of that work one day being on ESPN or any of the other big networks is awesome.
I think a more important point to make here is how caught off guard I was with getting the letter saying the patent was issued. Why was I caught off guard? Well, mostly because it has been five and a half years since the patent was submitted. How can it take that long to get a patent issued? It is ridiculous that any process would take that long. I am on my second job since then. I have moved twice. I completely forgot that I was even waiting for the patent to be approved. I don't understand how they could have that much of a backlog and how they couldn't fix the obvious problems with the system.
I hope something can get done to fix the patent system. In the meantime, I will bask in the glory of my new status as inventor extraordinaire (again, please note heavy sarcasm).
Today was my last day of work at my current employer. I have been there for almost three years and it was pretty hard to leave. I am really excited about my new job, which I start on Monday, and look forward to the new opportunities I will hopefully encounter.
In a way, I kind of feel like I am letting people down by leaving, but it was definitely time for me to on. The people at my current employer are great. I am going to miss the entire development team, from the more seasoned developers that I have worked with from day 1, to the newer guys that I like to think I was able to mentor a little bit. I think we all learned a lot from each other, and I hope to one day work with them again.
Around the time I started looking for a new job, I picked up The Dip by Seth Godin. I am a little torn over how I feel about this book. On one hand, there are a lot of good points about making decisions about when to quit something and when to stick it out. But on the other hand, I kind of feel like it is irresponsible. Don't get me wrong, Godin constantly provides a disclaimer that you should only quit for a good reason, but I can see how this book could possibly push someone over the edge prematurely. In my experience, people tend to extract only the information they want to hear from a book/speach/article/etc. I can easily see how someone could gloss over Godin's counterpoints and just hear "Quit Now, Quit Now, Quit Now."
I personally don't think quitting should ever be an easy decision. When I look back at what I gained from my current employer, I realize that I wouldn't be anywhere close to where I am today if I hadn't worked there. The stack of technologies that I consider myself fairly proficient with has doubled or tripled in size from my first job to this last job. Even more importantly than that, I think I have matured a lot with my soft skills and a lot of that has to do with the quality of the team I worked with. Looking back at all of that, plus the relationships I made over the last couple of years, and it is no wonder that it was so hard to leave and say goodbye today.
In the interest of wrapping this up in a logical conclusion, I think if you decide to read The Dip, make sure you read all the words, and make sure you think long and hard about whatever decision you make. I am excited for the future and a little melancholy about what I am leaving behind. I am actually really glad I feel this way. It means that the last 3 years meant something to me. And that is pretty importantTags: Books
Categories: Books, General
Recent PostsHandling Broken Maven Plugins
Book Review - A Whole New Mind
Portfolio Viewer on Computer World
Thomas Edison and Me
Onwards and Upwards
ArchiveJune 2009 (2)
September 2008 (1)
June 2008 (2)
April 2008 (2)