Category Archives: software

Software development and product related posts

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 http://apache.mirrors.timporter.net/ 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 timporter.net 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 (http://sfarmory.com) 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 kink.com (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.

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.

Run From This Job Posting (FAST)

I know bad job postings are a favorite topic of mine and I stumbled across another one that made me laugh today. Here’s the link but I’ll also copy the relevant sections below. Job posting.

This position is scheduled to start in August once we go through the rigorous hiring process. At that time you will be a full time contractor and we will retain you for a minimum of 5 months. Beyond that and through the successful launch of the product we will be transitioning all team members to full time employment positions. Equity will be granted for those that join our team but only after we have gone through the trial period. Compensation for this particular position will be $4,000.00 per month. Yes it is the Bay Area and we are all used to making more, but startups require risk and the willingness to take chances and we are looking for those candidates because they are the ones that will make it through the good and bad times with us.

Okay, why is this bad? First off, they’re hiring you for 5 months at $4,000 a month. Contracting with no benefits should pay at least that a week in the SF Bay Area. There is no equity for 5 months. They have no obligation to hire you. They could just drop you at the end and walk away without even blinking. If you’re going to work for that little amount of money for the skills they’re asking for you should be getting guaranteed equity (if that’s even a good deal).

There are other reasons to be suspicious of the people doing the job search because of the following skill set they want:

• Extensive experience in J2EE technologies, with a strong understanding of the common design frameworks like Struts & Spring.
• Deep understanding of query Tuning concepts, Web Security concepts like Man in Middle attacks, cross site scripting, sql injection, phishing etc.
• Extensive experience in configuring and deploying applications on JBoss, clustering
• Extensive experience with Apache
• db admin tasks like db clustering, db configuration etc (mysql)
• Experience in working with build utilities like Ant & Maven
• Automated build systems like cruise control
• ability to write db components like Stored procs, Functions, Triggers etc for MySQL
• basic Understanding of networking, and ability to work with SANs

First off, how many people with killer database skills also understand cross site scripting attacks? I can tell you that list will be pretty damn short. On top of that they’re not really even looking for a Java developer based on these skills but more an operations and system engineer that has some Java coding. They have one line dedicated to Java and it only mentions Spring and Struts.

Run, don’t walk, from this job posting. Seriously.

Fonts and Coding

This issue seems to get beaten to death but since I switched back to IDEA from Eclipse recently it was something I revisited(1). While on Eclipse I had just used Courier New but I’ve never really been totally sold on it. In general I don’t like serif fonts for coding. The serifs seem to take away from on-screen readability. But I never really liked any of the sans-serif monospace fonts available either. Lucida doesn’t look good to me…something about the spacing bothers me. Fonts are one of those purely subjective things, though. I have tried some of the bit mapped fonts that I’ve seen listed by other people in the past as well but since I run at relatively high resolutions they don’t ever work well. I really needed a scalable font.

Enter Consolas. Consolas is this new monospaced font from Microsoft that is standard on Vista and available for those that have Microsoft Visual Studio. The installer won’t actually even let you install it unless you meet those constraints. But luckily you can install the free version of Visual Studio, install the fonts, and then remove it. 🙂 And then you can save the font files off by themselves for future use.

Here’s an example of the font on IDEA with font anti-aliasing turned on, running under Java 6. Even running under Java 6 you still need to turn on font anti-aliasing to get it to look similar to Eclipse. I’m hoping the next version of IDEA that officially supports Java 6 will be able to use the platform anti-aliasing that comes built-in.

fontexample.png

I’d be interested to hear if anyone else has switched to this font or if they’ve tried it. This is my favorite so far and I’m really happy with it. It’s funny sometimes how something that would seem so insignificant as a font can change your productivity. Well, I should say that a bad font can really screw with my concentration at times…I’ve had enough experience with typesetting/publishing in the past that crappy fonts bother me a lot.

(1) Switching was not really my choice. My new group uses IDEA while my previous one used Eclipse. They’re both good IDEs. This isn’t really a post about the merits of each IDE.

Warning Signs About a Job Posting

I tend to look at local job postings on a semi-regular basis. Not because I’m looking to leave my current job usually but rather because I’m curious and like to see what trends are forming and to see how healthy the local job market is.

But by watching these listings I’ve definitely formed opinions about what I think are warnings signs to stay away from a particular company/post.

1. They say how great or HOT they are in a given area

I’ve seen both Nextag and now Next Internet using this tactic on Craigslist. If you’re so hot, why do you have to tell me about it? If you’re so hot, you’re going to get interest without having to ask for it just because you’re at the center of the known geek universe and word tends to travel pretty fast.

2. They post for the same job every few months

Unless it’s a large company that I know is in growth mode then either one of two things probably happened. One, it’s a really crappy place to work and every person they find leaves within a few months. Or two, they didn’t find anyone and decided to put it off for a few months. Most of the time it seems like it’s from one of those companies that’s probably just barely staying afloat. They aren’t going under but they’re not really growing either. I’ve worked for one one of the latter before and it’s not fun at all.

3. They have completely unrealistic expectations

This one is more obvious but I’ve learned that a company that has unreal job requirements either expects a superhero / rock star developer or they really haven’t defined the job they’re looking for. The exception to this if they say something to the effect that they know that no one has all of these things but they are looking for someone with a certain set of them. It’s still a little worrisome because it still kind of smells like they don’t know what they are looking for but it’s not a definitive red flag. The times that I’ve talked to companies that want the rock star it’s amazing that they generally are also companies that balk at paying at rock star levels. I’ve seen one on in the east bay that is always looking for consultants in the 5 year experience range with a number of technology requirements and actually posts a salary level of sub 60,000. In the Bay Area that just isn’t happening. Well, unless it’s not a full time job.

And that leads me to my last one for now…

4. They post salary levels that are just insanely low

This one is really obvious but it’s more an amazement thing on my part that a company is so out of touch that they think they’ll get anyone by listing a salary that is at least 20K below market for a given job. It’d be one thing if it was a startup offering huge stock grants and being up front about that but it’s another when it’s just some consulting firm that has been around for a while.

Overall, at least here in the bay area, the job market is doing pretty well so if you are talented it puts you in a pretty good place to be a lot pickier about the type of company and environment you decide to work in. You just have to be diligent about looking for the warning signs of a company that would not be a good fit or has internal issues that would drive you crazy.

What other red flags do you notice in job postings?  I’m sure there are a ton of them and these are just the ones that I thought of off the top of my head.

Continuous Integration Server Overload

At my new place of employment (okay, so it’s been a few months already — time flies!) we recently decided to put a continuous integration server in place.  We had started with cruise control because a company we partnered with already had it setup and in place.  Cruise control has never been the most user-friendly and easy to use server and so we set out to find another one.

Before you think this is a review of a bunch of integration servers, I’ll just say it’s not and get that out of the way.  We didn’t really have the time do a thorough review of every server out there.   We just needed an integration server that was easy to setup and run.  Luckily we found it when we tried out Bamboo from the folks over at Atlassian.  We are already using Jira and Confluence in house so it also made sense to just get most of our communication tools from one vendor.  It was extremely easy to get going and to integrate with our Subversion repository. Its unit test run integration seems to work extremely well, also.  We know we aren’t using all of its functionality but as we have time and new requirements pop-up I’m sure it will get more extensive use (abuse) in our shop.

The thing that struck me, however, was just how many vendors there are that have continuous integration server products.  The ones that we found were Parabuild, Pulse, Bamboo, Anthil, Cruise Control, Team City, and Gauntlet (from Borland).  I know there are some others such as Continuum and Luntbuild but I didn’t really even have them on my list.

I guess I look at this and see two things.  One, the market is extremely saturated.  Some of these products are probably not going to see a lot of adoption.  These generally aren’t expensive products and so you have to sell a lot of them to justify even having a few full time developers and QA engineers on the product.  The second is that this shows just how much adoption there is for continuous integration and testing in Java development shops nowadays.  I think this is a great thing because it means more and more developers will get exposure to the concept of unit testing and continuous integration.  I still see too few developers that have exposure and experience with this concept.

I think next I’ll come back to more discussions about hiring woes and some recommendations for developers that are out looking for a new job.