GridPulse

as stimulating as black coffee and just as hard to sleep after.

Archive for the ‘Development’ Category

Back to work, for the fun of it

leave a comment

“The supreme accomplishment is to blur the line between work and play.” – Arnold Toynbee

I’m back!

I’ve missed work – just a little – but don’t let anybody know. The second day after my leave I had something really interesting to do, which kept me at work until midnight. Finishing successfully gave me the self esteem boost that I call “I love my job”. It’s one of those rare (rare now, once often) moments that remind me why I became a developer. Enough of that, back to business.

I’m married now, to a beautiful and fun woman that understands what makes me tick, and that’s wonderful. We are fixing our future house, which I hope we are going to finish by December which will include my hopefully spacious office (I say hopefully because we are going to share it, as she want gym stuff in it too). I’m going to use the new office for my fun work (that means work that I don’t perform at the office, which isn’t as fun anymore).

This fun work includes rewriting GUtil into something much better which will take full advantage of Firefox 3, working on the XUL data collection application that I’m going to hopefully finish this year (and which I’m going to use to catalog my stuff – 100+ SciFI and business books, currency collection, god knows how many DVD’s – so I am actully going to dogfood it) and testing Shredder/TB3.

Speaking about ThunderBird 3, it’s almost in Alpha 3 now, so we need all the help we can get. If you have a few hours, please join the testing effort and help us make the next version of Thunderbird a smash hit! After you read some testing instructions for Alpha 3 you can complete a smoketest in a little over an hour and give something back. It’s that simple.

For the grand finale, I’m leaving you with another great book. Odyssey by Jack McDevitt is a great space adventure, in the spirit of The Voyage of the Space Beagle. It’s not very big and it’s easy to digest.

I’m switching to George Martin for this week’s “on my way to work reading”. Cheers!

Written by Bogdan

October 6th, 2008 at 9:58 pm

Posted in Open Source

Let your team members be creative

leave a comment

“Where all think alike, no one thinks very much.” – Walter Lippmann (1889 – 1974)

I have always considered the induction process used in companies a joke when applied to technical employees, especially to software developers.
Getting the new guys and gals to learn and follow procedures such as purchase requests or others related to the internals of the company is OK, teaching them about technologies, code style, general programming and design principles is also OK, reshaping the way they think forcefully is just stupid.

Ligh bulb

The uniqueness of every technical resource in you team must be harnessed and used to benefit the project.
If you are coordinating a project try to nurture creativity, don’t force your idea on how to implement a certain feature, let your developers invest fresh ideas into the products they are working on.

This way you create a win-win situation, your project benefits from fresh ideas and your developers relate better to the project they are working on.
Technical people devote more of their time and passion into the things they enjoy, such as following their own plan. The most important thing about letting your team members be creative is to stop them when they are wondering off.

You can also use this in brainstorming sessions. Never let any of your team members just listen without interacting. Ask them what they think and what would be their solution to the problem at hand.

What they consider to be a dumb idea could be the best approach to your problem.

Written by Bogdan

July 24th, 2008 at 12:48 pm

Some tips on porting Spring web applications to OC4J

2 comments

As OC4J has some drawbacks, here are some tips on porting Spring Framework 2+ web applications.

1. Forget about XML Schema, use DTD’s

As I was about to touch the first base, after throwing my exploded WAR in j2ee applications, OC4J started complaining about XML issues. This is what I mean:


javax.xml.parsers.ParserConfigurationException: Unable to validate using XSD: Your JAXP provider [oracle.xml.jaxp.JXDocumentBuilderFactory@1571dff] does not support XML Schema. Are you running on Java 1.4 or below with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support.

Yea, …nasty. As you don’t want to place Xerces and Xalan in your JRE/JDK lib, all you must do is strip the XML Schema related information and use Spring DTD’s.

2. Use ContextLoaderServlet, bootstrap listeners are for smart containers!

Oracle IAS Logo

Don’t use ContextLoaderListener. It won’t work, as OC4J is Servlet 2.3 compliant and does not enforce loading of Listeners before load-on-startup Servlets. So, to escape the bean not found hell, use ContextLoaderServlet.


<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

Read more about it in the Spring Framework ContextLoaderServlet javadoc.

3. Specify UTF-8 encoding

No encoding filters needed, as oposed to the Tomcat crowd. All you need to do is edit global-web-application.xml and make sure that you specify default-charset. Read more about it in the web module configuration files documentation at Oracle.

Example:

<orion-web-app
jsp-cache-directory="./persistence"
servlet-webdir="/servlet"
development="false" jsp-timeout="0"
default-charset="UTF-8" >

Written by Bogdan

June 17th, 2008 at 7:51 pm

Posted in Development,Java

Looking forward to eLiberatica 2009

leave a comment

eLiberatica 2008 is over, long live eLiberatica.

It’s been a great conference, with wonderful speakers and just as wonderful participants, you really should take a look at the conference website.

eLiberatica 2008 Speakers

The eLiberatica 2008 speakers

The main topics of the conference have been open source adoption in the enterprise, open source business models and licensing. Conferences like eLiberatica raise awareness and promote open source in a fun and extremely interactive way.

Oh yeah, Microsoft came, and they were incredibly friendly and sincere and proved the community one more time that they are not evil, they just want to sell stuff in this new world.

For me, the most interesting parts were the presentations made by Mozilla’s David Ascher, ActiveState’s Shane Caraveo, Navarik’s Bill Dobie and surprisingly the talk given by Constantin Teodorescu, part of the Romanian Ministry of Communications and Information Technology.

img_0520.JPG

I got some new ideas, confirmed some old ones, met some interesting people and generally had a lot of fun.

At the end of the conference, the O’Reilly rep did something that I extremely liked. They donated all the books that weren’t sold to the four universities present at the conference, quietly, the kind of thing that makes you respect them even more.

Written by Bogdan

June 1st, 2008 at 8:10 am

Posted in Open Source

The importance of reliable, reproducible and independent build process

leave a comment

It’s a known fact: I like maven.
It improves some aspects of the development process but it also has a lot of drawbacks.
One of these drawbacks comes directly from maven’s online distributed repository architecture and can make your build process unbearable and worst of all non-reproducible.

The usage of maven assumes the presence of all required repositories and most of all the presence of a reliable Internet connection.
What happens when you need artifacts that are temporarily unreachable or you are bound behind an unreliable connection? In the worst case you get build failures but more frequently you get build times that are measured by the tens of minutes.
This would be ok if it happened once a week but it’s not ok when it happens daily to you and a dozen other team members working on the same project.

The solution we used in the past to fix this problem was a maven repository proxy called Proximity.
Proximity introduces other small problems and latencies and has proven a little unstable, requiring weekly restarts. Plus it included some settings.xml modifications in our previously hands-off newbie development setup. If you want to read a little more about Proximity you can take a look at the project website.

Proximity 1 has been deprecated and until the new Nexus will be out I decided to look for something different.

Introducing Artifactory
Artifactory is not (exactly) a caching proxy, like Proximity, it works by simulating and acting as a maven repository.

Every artifact cached is available as part of the local Artifactory repository and when offline, the build process is exactly the same.
It is installed in a copy/unzip and run process and works right out of the box. Some customization is needed only if you use exotic repositories that are not included in the defaults.

Artifactory also returned the development setup to its hands-off svn checkout, mvn eclipse:eclipse or idea:idea nature. It contains a good graphical interface with artifact cache invalidation, which really helps sometimes.

Take a look at the live demo, it’s worth the 5 minutes.

Written by Bogdan

February 28th, 2008 at 8:59 am

Posted in Development,Java