An Odd Side Effect of the Google Calendar Sync module

I installed the Google calendar sync tool when it came out recently and I have it working pretty good. The one side effect is that I had to login in to my work e-mail address Google account and then give my normal Google account permission to change/manage that Google calendar and then put the work calendar into my normal account’s Calendar view. It works pretty slick now but it definitely could be documented better. Non-geeks are not going to do well figuring this out.

The strange side effect that I noticed however is that each time it runs it adds like 60 calendar entries into my deleted items folder. They are all set with a start time of 12/31/1979 and a meeting time of 4:00pm to 4:30pm. So after running this for a while I have 17000+ items in my deleted folder. It’s a good thing I noticed this. I’m guessing that each entry corresponds to an entry in my calendar and that it’s used as some sort of temporary calendar object used during the sync but it’s really just a wild guess.

This is probably something that needs to be fixed. 🙂

Update: They have fixed this!

Spring Annotations, Spring MVC and an interesting bug in 2.5.1

I’ve been doing some work in Spring MVC (Spring v2.5.1) and using annotations to see how simple I can keep my XML configuration (pretty small so far) and while coming across a few interesting gotchas that I’ll be describing in another entry I come across this most maddening problem. If you have a Spring MVC controller defined and it even has an inner class in it, the Spring loader will not find it. It basically ignores it. I had been using inner classes for form beans and validators on some of my controllers and it would just not work. By pulling them out into their own classes, however, everything worked.  That was pretty annoying to say the least.

Here’s the bug:

And it is fixed in 2.5.2. So if you’re using annotations in Spring, just go ahead and upgrade. It will save you lots of pain.

The other thing, mind your base packages on annotation scans. I’ll be posting that experience in the next day or so. I’m still slapping my head over that on.

My NetBeans 6 Wishlist

I’ve been using NetBeans 6 for a while now. For the most part I like it. I give it a thumbs up overall and at this point I generally prefer it over Eclipse for general web development.

Here, however, is my wishlist:

1. Give me an easier way to find the implementations of a particular interface in my code.  IDEA makes it easy by having a little icon I click on to see a quick list of what implementations the project is aware of for that interface.  The only way I’ve found so far is to hit alt-shift-f12, then select the interface to see the list of implementations.  Pretty much every developer I know codes to interfaces nowadays so this should seem a pretty reasonable request.

2. TestNG integration.  I’ve got a work-around right now but it sure ain’t pretty if I need to debug a test.

3. Better bracket matching in the JSP editor.  I generally write jspx and tagx files so maybe this is just with the JSP XML editor but the jsp:root end tag never lines up with the start tag.  It’s always indented one column.  It’s just strange.

4. Better completion in the JSP editor.  I wasn’t sure I was going to add this but it seems the editor could be better at completing closing tags for me.  I don’t like it to auto-create the closing tag when I start a tag bug when I start to close the tag it should be a little smarter about this.

5. Cut down on the weird errors and warnings.  In one of my entity classes I have a warning that the project does not contain a persistence unit.  What does that mean?  I’m pretty sure it is getting confused and thinks I am running an EJB3 application (I’m not).  This is most likely due to the fact that I am using EJB3 annotations for defining my data model.

6. A better debugging interface.   The debugging interface is just a royal PITA.  It’s completely clunky to navigate local variables and inspect my way through an object graph.

7. Make it easier to debug a web application.  It just seems non-intuitive with the different logging screens that pop-up or are used when you launch your web app in Tomcat (I haven’t tried Glassfish).  It also seems like it launches my application twice.  I’ve seen Spring start itself twice where as it doesn’t do that when I run outside of NetBeans.  IDEA has this streamlined much more.

Overall I am actually pretty happy with NetBeans but these are just things that cause my some slight pain on a day-to-day basis.

Strange Ant Weirdness

I got a new desktop for home the other day and I was downloading all my development tools and something strange happened. I downloaded Ant 1.7.0 and unzipped it into my Java tools directory, set my ANT_HOME variable and added all this to my PATH and typed “ant” and it couldn’t find it. Weird.

I go to the Ant bin directory and there are only 3 .cmd files in the directory. None of which are the ant.bat file. The checksum on the zip file was fine as well. I check the Ant distribution zip file size and it’s 11,288,363. I figure I’ll just do a sanity check and download it again and the new download is 11,390,509. WTF? I haven’t modified either of the zip files since downloading.

The first download came from the mirror. I originally downloaded the file on December 21st. I just downloaded it again and now it’s the same size as the distribution I downloaded earlier tonight that works fine. I’m not sure how a build fails like that and gets mirrored…just strange I guess. At least the problem on has already been fixed.

Warning: Shameless plug! I’m still looking to hire some great Java developers. I just found one the other day but still have 3 open reqs (what can I say, we’re growing). If you’re in the San Francisco area, drop me a line. We have an amazing space ( in the Mission district that we just moved into and a great group of people to work with. You also need to be okay working in the adult industry. One of the developers I work with has a great post about the jobs.

My NetBeans Experience (part 1)

This will end up being a multi-part posting since I’m still evaluating NetBeans but my experience this morning has me really wondering if I can use it.  But not for the reasons you might expect.  NetBeans itself has been fine for me.  It’s a little weird to use their ant build if you have a build.xml as well but that’s another story.  Does anyone know if there is a way to show more than one row of files that you have open at the top?  It’s key bindings aren’t very friendly to Mac laptop keyboards also but those can be remapped pretty easily.

Anyways, on to important things.  I like to unit test my code.  I like unit tests, integration tests, etc.  And I like to use TestNG over JUnit4.  Why?  Because I can not stand the fact that JUnit4 requires your @BeforeClass and @AfterClass methods to be static.  There are other reasons as well but it just feels so awkward to have that requirement.  Anyway, the reason that impacts me with NetBeans is that there is not currently a TestNG plugin for NetBeans.  I want a way to easily start a test run with the debugger attached already.  Normally I don’t do this very often but this morning I needed to and I realized I can’t do that!  Of course you can find a way but that’s not really the point.  It’s a huge time savings to make this easy.  But I don’t like NetBeans more to justify the time actually build it myself.  Has anyone else out there started one?  I’ll help if you need some help, though.

The NetBeans editor is pretty good now.  I still think IDEA is better, though.  Part of that is just habit I think, though, since most of the features I use a lot in IDEA are now available in NetBeans.  So far it seems extremely stable in my use.  It’s easier and simpler to understand the file/project navigation than in Eclipse, also.  The built-in profiler has been awesome for me so far as well.  It has the font anti-aliasing now, too.  Well, maybe that’s just the Mac thing kicking in…not sure.

I do wish they did an auto-import like IDEA has.  Their import dialog can get a little overwhelming if you copy in a chunk of code and need a lot of imports resolved.  It’s easy to not realize you need to scroll down to verify more.  I think IDEA does this better going from one import to the next that it can’t automatically determine which instance of a type you are attempting to resolve .  IDEA’s ant editor seems better as well.

More to come another day.

A New Gig

I recently took a new job at (warning: not safe for work) to manage the software development team.  I had managed a software development group in the past but for the last few years I was really more into just building software and staying heads down.  If there’s any constant in the software field, though, it’s that things always change.  The change for me was that I wanted to get back into leading a software group and working more with other groups inside a company.  Just building the software wasn’t enough for me anymore.  I’ll probably write about this more at another time but I’ll just leave it there for now.

One interesting aspect about working at a company like this is that the place has an amazingly positive vibe to it.  People just don’t go and work at companies in this industry unless they want to be here so I think that is one of the things that really contributes to it.

We’re also hiring so send me a resume if you can work in San Francisco, know Java well, work with and like Hibernate (we run it as our EJB3 entity provider) and have some usable XHTML/CSS/JavaScript skills you might be a good fit.  You have to take the quality of your work as a matter of personal pride to do well in this group, also.  We tend to mostly run on Macs and you’ll usually have a 30″ monitor to work on.  I can also pretty much guarantee that we have one of the most unique work environments you’ll ever experience.

Why Maven Drives Me Crazy

Step 1. Create a maven project with war packaging

Step 2. Run mvn eclipse:eclipse

Step 3. Open Eclipse. It’s not a dynamic web project.

Step 4. Yell.

Step 5. Look things up on Google.

Step 6. Try some of the things you find on Google.

Step 7. Yell some more.

Step 8. Create a dynamic web project and configure all your libraries by hand.

Step 9. Run web app on server within Eclipse.

Step 10. Go back to Ant and get things done.

I mean seriously, I can’t believe it’s this hard to take a web project and have the eclipse:eclipse task build out an Eclipse project (Eclipse 3.3) that will deploy into a Server instance to make it easier to run/debug.

I’m sure some people have it running but if it’s not relatively simple or documented more clearly or findable on Google within the first page or two then I’m sure I’m not the only one that has thrown up their arms with Maven and use within Eclipse.

On top of all that, just try learning this thing and using it with a Hibernate based project and having to go out and hunt down all the plug-ins you need to make your project do what you want it to do. Any project that makes me do this much hunting around to get it to do relatively simple things that I can do in Ant really quickly is just not going to succeed. The sad thing is that most of the initial impression problems are solvable but no one that is a Maven fan seems to be doing anything about it. Just take the ten or so most popular open source projects, throw a cookbook style doc out there that tells you how to quickly integrate the plug-ins for those projects and do common tasks and you’ll get people that will spend more time trying to use it. As of now, virtually none of the developers I know will use Maven.

(note:  I wrote this up about a month ago and just got around to publishing it so maybe it’s been fixed, maybe it hasn’t but I’m tired of trying to make it work for other reasons as well)

Spring 2.5 Released

It looks like Spring 2.5 was released today. I’ve already been using the annotations for both service definition and web controller definition to greatly reduce the size of my configuration files. These are a great addition and I’m sure that I’ll be exploring them a lot in the future.

The other area that grabbed my interest was new integration test classes that support TestNG since previously they didn’t really seem to support TestNG with their test framework.

Fantasy Football 2007 – My Initial Roster

The fantasy league I play in had my draft yesterday. We do a live open bid draft process. It takes about 4-5 hours normally to do a 16 player per team draft. This year’s league consisted of 10 teams. Here’s my current roster:

QB Jeff Garcia

QB Jake Dehlomme

QB Rex Grossman

RB Larry Johnson

RB Reggie Bush

RB Willis McGahee

RB Warrick Dunn

WR Javon Walker

WR Donald Driver

WR Jerricho Cotchery

WR Chris Chambers

TE Vernon Davis

TE Alge Crumpler

PK Matt Stover

DEF Philadelphia

DEF Green Bay

How do I think I did? I have mixed feelings. I definitely have some stud running backs. We start two RBs and three WRs in this league. I only made one real big mistake and that was overlooking the bye weeks of my RBs. Two of my top three backs have the same bye week. I definitely have two pretty consistent WRs that I’ll play most of the time (Walker and Driver) and then we’ll see how the other two do to determine who to start. What about QB? I have mixed feelings about this one. None are great but they are servicable and one will hopefully emerge to have a good season. Dehlomme is on the hot seat and he has Steve Smith, Garcia is scrappy and finds a way to win usually, and Grossman…well, he was hot and then extremely cold last year. I have a habit of picking QBs off the scrap heap (last year I got Brees for the minimum $1 bid) so I’m hoping I continue that trend here. Plus, once you get past the top couple of QBs that people paid through the nose for there is a huge bunching from a point standpoint so the premium was not as warranted as it is in RBs. I feel pretty good about my TEs. I have two top 10 TEs so I’m better off than others in my league. For Defenses I think I also have two top 10 defenses. Philadelphia is always a disruptive defense and Green Bay’s defense is definitely underrated. Yes, I’m a Packer fan but that defense saved their butts last year at the end of the season. Two top corners, 2 very good LBs, at least one good safety and a very underrated front 4.

What I learned this year, though, is to maybe not blow so much cash on Larry Johnson and pick up a couple top 20 backers for about the same price to give me more depth. I am most worried about depth at this point. I usually do well also in watching the waiver wire where others don’t seem to watch it as much so we’ll see how that progesses with the season.

Why Use a Recruiter?

This question is something that’s been nagging me lately. And the question is for both sides of the equation, both job seekers and employers. This is also just about external recruiters. Internal recruiters at companies aren’t really part of this entry.

Let’s start from the employer’s view. What does the recruiter bring other than a flurry of resumes? The recruiter really doesn’t care about the well being of your company nor do they usually take the time to get to know enough about your organization to find the proper fit people wise. Some even try to force you to follow their process instead of yours (Boylston Group anyone?) In my experience with recruiters I have heard them me outright lies about why a person was late, lie about what is in their contract and forget to screen resumes properly before sending them to us. Shall I go on? Most don’t even proofread the resumes they send us for spelling and grammer mistakes. Most aren’t technical enough (even though they are technical recruiters) to understand the most basic things about the technologies we work with to know what’s applicable for our organization and what’s not. They send resumes that are too long for the experience level of the candidate (the 9 page resume for a 6 year career is evidence of that). And for this we’re supposed to pay them somewhere between 15 and 25% of the person’s first year salary? It’s almost as bad as when you use a real estate broker and/or realtor. The recruiter only gets paid when you hire someone so of course they’re going to throw everything at you to see what sticks. It doesn’t cost them anything to flood you with resumes.

So again, why use them? From an employment seeker (aka me) I guess the only reason might be is if they bring me a company I didn’t find on my own or when my network isn’t producing any leads that are appealing at the time. That’s their value add at the moment. I’m really surprised that job sites haven’t gotten better at filling these gaps. Most are just nothing more than glorified classifieds so I suppose that’s one reason. Small to medium sized companies don’t want to bother with the full time expense of a recruiter or don’t have enough jobs to fill to justify one either.  I’m not sure why they don’t just use a contract recruiter, though.

The real rub here from an employer’s standoint is that if you actually have a company that is fun to work at and your workers really enjoy it they would probably actually bring in friends and old co-workers they liked working with. Something to think about if none of your engineers are referring people. Actions speak louder than words.