Archive for March, 2007

Hiring Process: Computer Gurus vs Social Skills

Monday, March 26th, 2007

Having a business unit that focus on outsourcing, one of our main needs is to hire qualified people to meet our clients requirements.

At RUPEAL we want our software business unit to specialize in one area: Java. We’re aiming to have the best team on Java development that we can have on the market.

Now the funny part is that as deep as we get on this market (of outsourcing to other companies), we’re finding out that the more versatile the consultant is, the more “marketable” he is!

Different clients, have different recruitment philosophies. For instance, one of our major clients, doesn’t give much value to experts on a given matter, like Java or .NET. The company cares more to know that the person has an attitude of “if I don’t know about the subject, I’ll go and find out as possible as I can”, to having a profile of a computer guru on a given matter! The computer skills aren’t irrelevant, but they tend to go to second place.

The fact is: The final client wants to “buy” a team to whom he expects to trust, and communicate their IT needs. If you buy a team of a bunch of geeks who doesn’t know how to do team work, communicate and ultimately make the client smile… it’s already a lost battle!

I’m learning that “computer gurus” most of the times, don’t have the social skills that are required for a consulting job! I’m talking about selling skills, presentation skills, persuasion skills and emotional intelligence! A lesson to learn here: Computer skills doesn’t bring the bacon home.

This has made me think about a lot of the kind of people that I want to hire for the Consulting business unit of RUPEAL. Do I really want to have a team of (only) geeks?

What would you do on this subject? What do you think about it?

Fluir

Monday, March 26th, 2007

Fluir is a website about Feng Shui, in portuguese, developed by RUPEAL and Ana Vieira.

After two months of part time development we’ve published the website, and we leave here the link for you to appreciate.

Alexandre Gama asked us to develop a website where he could introduce himself, his work, Feng Shui and what he does. Check it out and give us feedback!

The website was developed in Java, using the Spring framework and jQuery library for javascript. The webdesign is from Ana Vieira, who is our designer! She’s quite talented, don’t you think?

Hope you enjoy!

Note to self:

Don’t reinvent the wheel! Next project we’ll be using Wordpress. Have any suggestions for other engines to quickly build this kind of websites?

PS: 

If you find it awkward that the site doesn’t have many projects on the portfolio, it’s because Alexandre is still to upload them!

jQuery and Java Server Faces

Friday, March 9th, 2007

I honestly love jQuery javascript library, and absolutely am disappointed with JavaServer Faces (JSF).

jQuery is a neat library, that eases the javascript development, by enabling CSS (and other) search capabilities.

For instance if you want to change the background color to red for all items with the class “myClass” you just have to query $(".myClass").css("background", "red");.

I’m not going to go further on jQuery since there are a lot of tutorials out there. My problem was when I was trying to integrate jQuery with a JSF application. JSF as the neat “feature” of generating id’s for all our rendered components based on the view (or subview) which the component is on.

So if I have a <h:inputButton id="button1"/> the generated id will be view:button1. Which causes a main problem when you want to apply CSS styles to this element. You can’t simply add style to #view:button1 because it’s not CSS valid. And for making it worse, you can’t query using jQuery for this element to… so you see where I’m getting at.

The solution I found was to use the j4j Tag Library idProxy to generate a chosen id for the components we want to manipulate via jQuery. The j4j idProxy generates an invisible span (I believe it’s label or a span element) with the id we wanted, and a title of the JSF generated id for our component.

So for our later inputButton we would replace with <h:inputButton id="button1"><j4j:idProxy id="myButton"/></h:inputButton> and get a <span id="myButton" value="view:button1"></span> right beside of our rendered inputButton component.

But still, this is not enough because if I want to manipulate via jQuery the input button we still have no way to access our component! So we need a javascript function, let’s name it jsf() which receive a <j4j:idProxy> generated id and returns our JSF component jQuery object!


function jsf(id){
//Finds the j4j Element and retrieves the ID of the target component which is stored on the title attribute
realId = document.getElementById(id).title;

//Finds the JSF component
var element = document.getElementById(realId);

//Returns an jQuery element based on the DOM element of our target component
return $(element);
}


And voila! Now all we have to do to use jQuery on a JSF web application is to put the j4j:idProxy on every JSF component we want to manipulate and use the chosen id with the jsf() javascript function.

Java on the Desktop

Thursday, March 8th, 2007

Just bumped into this article about Java on the Linux Desktop.

It seems that the Linux community is discovering that the open source Java platform is the ideal plaftorm for developing desktop applications for Linux. For me it’s an obvious choice considering that the other option is Mono (.NET).

Is Java (finally) becoming the dominant platform for desktop applications development?

Maven and Jetty6: Speeding web development in Java

Tuesday, March 6th, 2007

One of the annoying things about developing for the web, is the whole cycle of writing code, compiling, deploying, running, debug, write code… etc.

So many development tools, help with this, by automatically exploiting the directory where our WAR was deployed and compiling directly to there. All JSP are copied “on write” to the same directory, and the developer as that warm feeling of never have to wait for a package to be redeployed again.

One way to accomplish this, is using Maven plugin for Jetty6. Just include the following plugin on your pom.xml under the plugins tag:


<plugin> <groupid>org.mortbay.jetty</groupid>
<artifactid>maven-jetty6-plugin</artifactid>
<dependencies>
<dependency>
<groupid>org.apache.geronimo.specs</groupid>
<artifactid>geronimo-j2ee_1.4_spec</artifactid>
<version>1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<configuration>
<scanintervalseconds>10</scanintervalseconds>
</configuration>
</plugin>

After that, just type mvn jetty6:run and your project is automagically deployed on a new instance of Jetty6 which you can access on localhost port 8080. Of course, on the first time, Maven will download the required plugin and it will take a little longer.

If you set your IDE to compile directly to the target directory, the Jetty6 plugin will automatically detect any changes on your java classes, JSP, WEB-INF files, and reload automatticaly.

This plugin has been really helpful on developing web applications for Java here at RUPEAL.