Tuesday 11 December 2007

India's upcoming tour of DownUnder 2007

Later this month, the Twenty20 champions will be traveling DownUnder to play the mighty Australians on their home-turf.

The tour will perhaps be the last visit for a number of Indian stalwarts who will be looking to leave a lasting impression. The team is a good blend of youth and experience and with a new coach (in Gary Kirsten) looking on as a consultant (He joins the team as a coach officially after the tour), the guys will be looking to create the right impression. On the other hand, the Australian team will be without their long time warriors, Warne, Martyn, Langer and McGrath but it hardly seemed to make much of a difference while clinically destroying the Sri Lankans on their recent tour of two test matches.

Can India do any better?? Only time will tell.

We (in DownUnder) are in for an an exciting time this summer and it never really looked better.

Thursday 11 October 2007

Configuring Middlgen to generate Hibernate files from MySQL

Following on from my earlier post , I'll now show you how to configure Middlegen and talk to your MySQL database. You will need to have ANT installed in order to run the ANT tasks that I customized to build the hbms and the Java objects.

I performed the Middlegen connection tasks using ANT version 1.7, MySQL version 5.0.24-community-nt and MySQL client version 5.1.11 and Middlegen 2.1

In your build.xml, set the following Middlegen property
<property name="Middlegen.home" value="${lib}/Middlegen"/>

The lib directory has 2 main jars, Middlegen-2.1.jar and Middlegen-hibernate-plugin-2.1.jar.

Both these jars are required to
(1) Run Middlegen and connect to MySQL
(2) Create Hbm mappings from the database and convert the hbm mappings into Java objects.

Firstly create a directory where you are going to store your generated files using the Middlegen-init ANT task.

<target name="Middlegen-init"
description="Initializes everything, creates directories, etc.">
<mkdir dir="${gen.java}" />
</target>


The next task is Middlegen which talks to the database but inorder to do so, it needs to know where the database is located, what driver file to use and what connection properties to use, so make the task know all this by defining the following properties in the build.xml

<property name="database.initialise.script" value="${main.resources}/database/ddl/FULL_DROP_INITIALISE.sql"/>
<property name="database.driver.file" value="${lib}/mysql-connector-java-3.0.14-production-bin.jar"/>
<property name="database.driver.classpath" value="${database.driver.file}"/>
<property name="database.driver" value="org.gjt.mm.mysql.Driver"/>
<property name="database.url" value="jdbc:mysql://localhost/testdatabase"/>
<property name="database.userid" value="root"/>
<property name="database.password" value="root"/>
<property name="database.schema" value="testdatabase"/>
<property name="database.catalog" value=""/>

You'll notice that the properties talk about a 'database.driver' which should be on the 'database.driver.classpath'.
This driver can be found within the mysql-connector-java-3.0.14-production-bin.jar so it should be downloaded and made available to the application.

Now, write the following ANT tasks in your build.xml

<!-- Middlegen related Tasks --->
<!-- =================================================================== -->
<!-- Run Middlegen -->
<!-- =================================================================== -->
<target
name="Middlegen"
description="Run Middlegen"
unless="Middlegen.skip"
depends="Middlegen-init"
>

<taskdef
name="Middlegen"
classname="Middlegen.MiddlegenTask"
classpathref="lib.class.path"
/>

<Middlegen
appname="${name}"
prefsdir="${Middlegen.prefs}"
gui="${gui}"
databaseurl="${database.url}"
initialContextFactory="${java.naming.factory.initial}"
providerURL="${java.naming.provider.url}"
datasourceJNDIName="${datasource.jndi.name}"
driver="${database.driver}"
username="${database.userid}"
password="${database.password}"
schema="${database.schema}"
catalog="${database.catalog}"
includeViews="false"
>

<!-- Sets up the hibernate plug-in for Middlegen -->

<hibernate
destination="${gen.java}"
package="${name}.persistence"
genXDocletTags="true"
javaTypeMapper="Middlegen.plugins.hibernate.HibernateJavaTypeMapper"
/>
</Middlegen>

</target>

<!-- =================================================================== -->
<!-- Run hbm2java -->
<!-- =================================================================== -->
<target name="hbm2java" description="Generate .hbm and then .java from .hbm files.">
<taskdef
name="hbm2java"
classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
classpathref="lib.class.path"
/>
<hbm2java output="${gen.java}">
<fileset dir="${gen.java}">
<include name="**/*.hbm.xml"/>
</fileset>
</hbm2java>
</target>
<!-- End of Middlegen related Tasks --->

To create the HBM mappings for ALL tables in your 'testdatabase' schema:
Run the 'Middlegen' task which will
(1) create a directory to store the generated files
(2) connect to your MySQL database based on the params supplied and generate the hbm mapping files.

You can customize the hbm files according to your requirements, now run the hbm2java mapper task on these files by invoking the target 'hbm2java'. The java files will be generated and stored in the same directory alongside their respective hbms.

Well, that's all there is to it.

Middlegen is a very useful tool as it takes away the pain of manually creating these files and helps you setup your Hibernate environment within a couple of hours.

For more info on the subject refer to the Middlegen homepage.

Sunday 7 October 2007

Securing your Web-App:The WEB-INF story, FORMS, JBOSS and JAAS

Securing your web application is a multi-step process and requires careful planning.If you are not careful, you can end up leaving the application vulnerable to hacker attacks or lock yourself in and throw away the key which is what happened to me recently.

I was securing a web application that was to be deployed on JBOSS. Taking the first step in security, I placed all my web-resources in my WEB-INF. Good move.No. Bad move.Yes.
It was a good move in the sense that by placing every resource under WEB-INF, I was securing them from being accessed externally, i.e no one could get to them unless they pretended to be a servlet call. I had locked myself in and thrown away the key. Hang-on what if I got to a resource as an Authenticated subject. Yeah, you could. I redeployed the application and pointed it to my login.jsp that was sitting in the WEB-INF under a pages directory. It worked fine except for one thing. My login.jsp requested a style-sheet and try as much as I could, I could not get it to load. That was when the lightening struck.

The call to load the stylesheet was a new request being made before the authentication process had completed and of course the WEB-INF would bar the request. I moved my jsp pages, stylesheets, images and scripts out of WEB-INF and secured them using security tags defined in the web descriptors.

Securing web-resources placed outside the WEB-INF folder is carried out using the web.xml and your server specific descriptor. Access to web-resources is granted based on user-authentication and authorization policies. These policies are user role base.

To secure your web-resource folders in JBOSS, follow this tutorial or follow this link in the Sun Forum. Both tutorials are very succinctly written and bring out the salient features required to configure and set up security in JBOSS. If you are after WebLogic, then this guide will be useful. It also describes FORM based authentication in sufficient detail which is what most web-applications are based on.

Well, there you go! Enjoy locking yourself in but don't throw away the key...yet!!

Wednesday 26 September 2007

Twenty20 Cricket: India are World Champions

5 runs was the difference and India were on the right side of the victory margin for once. They have finally shed the losers tag to pick up the first Twenty20 world championships. On the way to the final they beat South Africa, Australia and Pakistan. All exciting and close matches. It was ultimately a question of who could hold their nerve and hit furtherest and we all know that now.
A fitting victory to the Indian cricket team which was without their big stars, did not have a coach, a new captain and nothing to lose.

Sunday 23 September 2007

India edge out Australia

There are cricket matches and then there are those cricket matches. The India-Australia Twenty20 2007 World Cup semi-final was one of those cricket matches. It began at 2am Australia time and we got to see some scintillating cricket from both teams.

The Indian team, written off before the start of the tournament was a revelation. Sensible batting, clean hitting and some top class bowling in the dying moments of the match meant that India had finally outplayed the world champions,Australia and registered a convincing victory. The Indian Cricket Board was quick to rush in and announce an award of US$1 million for vanquishing Australia and entering the Finals and there was a Porsche911 for the man of the match, Yuvraj Singh.

Having won 6 out of 7 matches in the tournament, there is only question left?Can India lift the cup by beating Pakistan or have they just had their final moment of glory? Tomorrow, we will know the answer.

Friday 14 September 2007

MiddleGen and Hibernate: Making life easy in the middle

If you have been working in the Hibernate or in the EJB space, chances are high that you have had to write intermediate files such as hbms, in the case of Hibernate, that bridge the gap between the database tables and the Java objects (read POJOs) that exist within the application and are responsible for transporting data around.

While writing the hbm files manually, is a good idea if you really want to learn about how they are structured and the different types of relationships that they can be define within the data model, it becomes a tedious task if your data architect is not sure of what he or she is doing and/or keeps changing the DDL regularly.

In an AGILE project scenario, where requirements are welcomed at late stages of the build process, having a tool that can generate the hbm files and the related Java files (which are essentially POJOs) can be a boon. This is where MiddleGen comes in.

While MiddleGen is basically (an open source) database driven tool for generating code from the database to the presentation layer (Struts), I found its confluence with Hibernate to be really useful. It took me basically half-an-hour to set up MiddleGen and configure the Ant Tasks that came with the sample set of examples (in the MiddleGen download), to connect to my MYSQL database and generate a set of hbm files and their corresponding Java counterparts. In my next post, I'll explain the sequence of steps that I followed in setting up MiddleGen to talk to my database and generating the hbms and the Java files.

Tuesday 14 August 2007

Arising from the murky depths...

The Indian cricket team finally has something to smile about after the final test ended in a tame draw. To say that India outplayed the match and took it beyond the reach of the English would be an understatement, although losing three quick wickets in the second innings showed a glimpse of what could have happened.

Rahul Dravid, justifiably proud finally has something to talk about and for once everyone in the team can smile. They have all contributed in a deserving win. It isn't often that there is a Team effort evident in an Indian win but in this case, it was the main reason for their success.

The series win could also be a fitting swan song to the top five veterans who might retire in the near future and could boost their morale to an exciting upcoming series in Australia. Three years ago, India came close, very close to a win Down Under but a gritty 80 from a certain Mr. Waugh prevented the sun from shining for India that day.

This year, half of that famous Australian line up will be missing. Will India captalise or capitulate? Only time will tell..

Sunday 12 August 2007

Subversion : The next generation of version control systems

Subversion has been gaining popularity as a robust and easy-to-manage version system over the last few years but are there specific advantages for a project to use Subversion as a source code control system? This post briefly examines some of the benefits of using Subversion and brings together a collection of resources that can be used to understand, set-up and start using Subversion as a version control system.

What is Subversion?

Subversion is a version control system which maintains different versions of your documents and files, allowing you to get the latest versions or previous versions easily.

Some of the major advantages for using Subversion are:
  1. It is open-source and thus is free.
  2. Setting up Subversion and managing users is a simple affair.
  3. Subversion is rated to handle binary files comparatively better to the widely used Concurrent Versions System. Thus, image files can be handled better.
  4. Subversion can be integrated with Eclipse using a plug-in named Subclipse, which is useful for developers who like working from within an IDE.
  5. An open-source client (TortoiseSVN) makes accessing and using Subversion from Windows systems easy. Tortoise operates as a windows-shell client and is integrated into the windows explorer.
Some strong testimonials and user experiences are given on this page. On a personal note, I have used Subversion in about 5 projects over the last two years have found it to be a very robust and easy to use source control system.

Using Subversion

Subversion is based on a client-server model, which means that a server process actually monitors and manages access to your files.

( Note: you can also run Subversion as a standalone program to store your personal files but if you choose to do so, you will not be able to access your files from other systems. This article is describing a scenario where you would want to access your files from multiple systems.)

To set up a subversion server, follow the steps outlined in this excellent post.

If you have installed the Subversion server successfully (with Apache), then install a client that will be used to access and modify the files managed by Subversion. To keep things simple, we will focus on setting up Tortoise SVN ( a Subversion client) and use it

To set up the subversion client (TortoiseSVN), follow the steps outlined in this post.

Once you have a server and client system setup, you can access Subversion, check out and check in files, as many times as you like.

Subversion / TortoiseSVN resources
  1. Subversion Homepage
  2. TortoiseSVN Homepage
  3. Subclipse download page

Thursday 2 August 2007

Intelligent Lighting in Trains

On my way to work today, in the train, I couldn't help noticing the lights were on while the sun blazed in through the windows.Yeah..Yeah..Melbourne has underground stations..a grand total of 4 but do we need the lights on all the time? I think not. Making the lighting system intelligent is the key.

Power could be saved in such scenarios by fixing a light intensity meter in the engine compartment which would measure the strength of the light filtering into the train.
When the strength of the light would fall below a certain level, the intensity of the power lights increased in the passenger compartments.

Of course such a system will have to be calibrated to take into account temporary changes such as the sun going behind the clouds or another train blocking the sun while passing or we would have the lights coming on and off and passengers getting the Saturday Night Fever.

Monday 23 July 2007

Foxmarks: A bookmark synching tool

While playing around with Mozilla's FireFox, I came across Foxmarks, one of the recommended Firefox add-ons. The main advantage of the tool, apart from the fact that it is free, is that it allows the synchronization of Firefox stored book marks on different machines. I find option to be a pretty useful feature in the consultancy world, where we move from one system to another and sometimes have to do so at a pretty quick notice. While exporting bookmarks and importing them is an option, it requires a third party medium to transport the bookmarks from one system to another. Foxmarks allows you to perform this operation using an intermediate server. The server also acts as a backup device for the storage of the bookmarks.

Two major advantages of Foxmarks are that the installation process is very light and that the tool is easy to use. Foxmarks has one main button "Synchronize now" which pretty much does what it says. It synchronizes the bookmarks on the local machine with a master copy, that is stored on the Foxmarks server. The master copy on the server is created when the user synchronizes for the very first time.Of course , you need to create a user id to use the service. After the first synchronization, the user has the option to synch the local copy with the server or vice-versa.

While the tool is pretty handy and efficient, it has a few annoyances. Why, for example do I need to manually install the tool on every computer before synchronizing my bookmarks. I feel that Foxmarks should offer to self-install, if a user logs into the Foxmarks account from a non-Foxmarks installed browser. Further, the tool does not allow the synchronization of selective folders. This feature would be handy and would definitely speed up the syncing process.

In the world of online bookmarking (delicious), I find Foxmarks to be an interesting and useful application for someone who is constantly on the move.

A camping experience and a message of Hope

This weekend, I was blessed to hear an amazing and inspiring message at OCF Caulfield's Annual July camp, held at Lyrebird camp site, located 300 kms south-east of Melbourne. The camp in itself was an exhilarating experience and it was one of the few instances in the year when I managed to keep myself away from a laptop for over 24 hours.

The camp offered excellent lodging facilities and it gave the perfect opportunity for a group of 35 odd young university students and one software guy to bond. Over the last three days, two nights, we all came one step closer to experiencing the magnificent love of Christ, the Lord.

The highlight of the camp, for me was the awe inspiring, immensely practical and throughly relevant message given by Pastor Ted Fabiyanic, from CityLife church, Hobsons Bay.

Pastor Ted spoke on the need and the importance of Hope in our lives. He explained how we were living in an imperfect world and were susceptible to the everyday frailties of life. Even if we believed that we are living according to God's will, misfortune will befall us at times. We may lose money in a business deal, fail an examination, lose a loved one and feel that we have been betrayed and cheated by God.

At such moments, it may not be possible to think clearly and understand God's plan but what we need to do is understand that God does not cause these events to give us pain but 'uses' them to remove our imperfections. HE uses them and give us a choice, a choice to choose and change our life for the better. The past is gone, the future is here.

Living in the past and dwelling on negative moments, bad choices, depressing events will only keep us in the past. What is required is to make a choice, to move forward in the right direction. We have several examples of successful people in our world, who have repeatedly failed before succeeding and when they did succeed, they succeeded big time.

Pastor Ted explained that God has forgotten and forgiven us for all our past mistakes and now only two people remembered them. We, ourselves and Satan.And by continuing to remember our mistakes, we were living in the past and refusing to move forward.

In our journey of life, God is a constant companion. HE is walking not behind or in front of us but alongside us. HE has given us the tools to succeed and to live in Hope and the most significant expression of this promise has been His son, Jesus Christ. God prepared Christ for His mission of giving Hope to the teeming millions. As a part of this mission preparation, Christ suffered on the cross physically and mentally but His worst moment of anguish and suffering came when God left Him alone and lonely on the cross for a moment. For that one instant that Christ was alone,He experienced utter hopelessness and despair.

The reason that God led Christ into this suffering was that He would know and understand the meaning of not having hope before He could become the fountain of Hope himself. After all, one cannot under stand the suffering and pain of another human being, unless one has experienced it first hand.

Pastor Ted used the life giving words of Psalm 23 to recite the promise of Hope that had been given to us by the LORD. He reiterated that God had a plan for us all (Jeremiah 29:11). To implement this plan and succeed in life, we are required to Act and not live in a world of wishful thinking. An important step towards achieving our goals is surround ourself with positive people and shun negativity. It is the will of God that our past doesn't define our future, if we choose it not too.

The choice is ours. We have to make it, starting now.

Sunday 15 July 2007

The FedEx gets one over Rafa, but only just...

Wimbledon 2007: The FedEx equaled Bjorn's record of five championships at the All England Club by overwhelming the challenger in Rafa but only just.Rafa made the FedEx run for every point. The FedEx had to bring out his best tennis before he could get pass..It was a good match up and for a change, the rankings (No 1 and 2) appeared befitting to the two players.

I guess, we can look forward to some interesting duels in the future.

Sunday 8 July 2007

Sometimes you have to lose, to find what it takes to win

The scoreline 6-4,6-1 doesn't really say it but I just saw one of the toughest fights by an under dog.Marion Bartoli won the crowd over at Wimbledon but could not win the championship. It was not the lack of effort that killed her chances but the lack of chances that the experience of Venus Williams fed her with. Marion fought hard, taking serves at 200 kmph well inside the base-line but there wasn't much she could give that Venus had not seen.

But all said and done, I feel that this defeat will make Marion a better player. She took out world number 1 and world number 3 on her way to the finals and lost to a player who had won the championships 3 times before. There is no shame in this loss , after all sometimes you have to lose to find what it needs to win.

In the men's, Rafa is playing the FedEx again and Wimbledon is not a clay surface.Can Rafa stop the FedEx from equaling Bjorn Borg's five championship titles? Maybe..

Friday 6 July 2007

Jumping Folders : A new security paradigm

I believe that
  • 'Every object should be able to secure itself against malicious access by another object.'
  • 'Randomness in object behavior can be an effective approach in securing themselves against malicious manipulation'

Jumping Folders is a proposal to secure folders and thereby contained Files from malicious access by introducing a default security behavior at creation time. The 'security behaviour'proposed is based on the premise that all objects exhibit a set of repeatable patterns in response to certain pre-defined stimuli. For example : If you double-click on windows based file or folder, it is 'normally' expected to open up.

What if I want to secure the folder or a file? The 'normal' (I keep emphasizing the term 'normal' for a specific reason,

which I will make clear shortly) options available to me could be :
1. Hiding the folder.
2. Preventing access to the folder by encrypting it with a password or even better encrypting the contents of the folder.

But what are we doing here:
We are using some well known and defined services available to us to 'seemingly' secure the contents of the folder. These services are provided by the OS (windows) and can be configured at different levels (users, groups, roles and all that)

Perhaps you must be thinking.Is there an option? The OS is the RingMaster. He or She cracks the whip and the performers jump but what if someone kills the RingMaster or even worse uses the identity of the RingMaster to manipulate the performers. You would perhaps say "Too bad" or "who cares about petty performers, get another one" and that is how Life goes on. An object is destroyed and we create another one to replace it.

Isn't that just what humans do.People are born, they multiply and then they die and sometimes die due to unnatural causes.

Jumping Folders is a proposal to inject a security element within an object (in this case, a folder) at creation time. The security element enables the folder to 'use' the services offered by the OS and behave 'abnormally' on certain stimuli.
Services in this case is refers to the windows cut and paste operations. stimuli is a mouse double-click. The 'abnormal' behaviour in this case would be 'cutting and pasting itself' at a different location on the file system.

Ahh..now we know, the reason for my stress on normal and abnormal behavior of objects.

Thus, we have an object (the folder) that is intelligent enough to recognize a malicious intent (double-click) and protect itself by copying itself to another location.

So what if you want to see the contents of the folder.

Well, you could use a combination of a certain sequence of mouse-clicks and key-strokes to override the abnormal behavior. Why mouse-clicks? so you can get over a key-logger that is monitoring your keyboard operations.

In conclusion, Nothing is secure and we don't really need to be paranoid about security. Jumping Folders is a project proposal that give secures objects based on their randomness, so now don't let anyone tell you that randomness is bad :-)

Sunday 1 July 2007

The Lord of Hosts is With Us

I was watching the 1964 classic Zulu last night and as the story goes 4000 Zulu warriors attack a post manned by 149 British soldiers. One of the Christian missionaries living with the soldiers asks the sergeant to call upon the Lord for his own salvation and the sergeant responds with a rendering of the Psalms 46:8-11.

8 Come, behold the works of the LORD,
what desolations he hath made in the earth.

9 He maketh wars to cease unto the end of the earth;
he breaketh the bow, and cutteth the spear in sunder;
he burneth the chariot in the fire.

10 Be still, and know that I am God:
I will be exalted among the heathen,
I will be exalted in the earth.

11 The LORD of hosts is with us;
the God of Jacob is our refuge

Some very strong verses indeed.

The sergeant remarks, 'it might have been written for a soldier'. Very true and as I feel, very relevant to our times even though they were probably written " on the occasion of the invasion of Israel by the Assyrian King Sennacherib and his 185,000 veteran troops." [Ref]

The first line of every verse in the section is fascinating and has a message.
Come and behold the works of the LORD.
He maketh wars to cease unto the ends of the Earth.
Be still and know that I am God.
The LORD of hosts is with us.

The verses call unto us to leave what is holding our attention and to focus upon the works of the mighty One. He has the power to stop wars, He has the power to give us what we need, He has the power to lead us from a falling World Trade Center tower to safety [Ref]. He is the God of Hosts and He is with US.

There is only one question and it can be asked in many ways. Do we really want to be led unto safety? Do we really want to experience real life? Do we really want to know God?

According to 2007 Australian census data [Ref], one in every five people is an atheist and the fastest growing religion in Australia is not Christianity.

Makes me wonder.

The question that bothers me is not the number of people that are atheist but the number of people who have not yet bothered to find out about God through the Holy Bible and claim to be atheists, because they are the ones losing out when the answers are so close and so near.

Saturday 30 June 2007

Another milestone :Tendulkar reaches 15000

After a disappointing, OK..that was not right, horrendous World Cup campaign, the Indian cricket bandwagon seems to have shaken off some of its sluggishness to overcome the Spring Boks yesterday,after losing the first match. Yes, they did crush Bangladesh a month ago but then Bangladesh is not Australia and 1 billion people want to see India perform and equal giants in the cricket world.

There were two interesting things about yesterday's win.Tendulkar crossed 15000 runs. A mammoth achievement by any standards. If you have ever played cricket and passionately live the game, you'll know what I am talking about. A minor blimp in Tendulkar's achievement was his second failure in a row in missing out on a century after getting into the nineties, but I guess a guy who already has 41 centuries to his name in One-day cricket and another 37 in Test match cricket is only going to shrug this off. Watch Tendulkar's bat for more fireworks.

Wimbledon 2007 :The FedEx steamrolls Safin

Just a few weeks ago, I saw The FedEx being blown away by Rafa at Rolland Garros. The scripts were reversed and the FedEx looked completely in control as he blew away Safin in straight sets. The temperamental Safin, apart from breaking his racket had little to offer to test the FedEx. So the only guy, who in my opinion that could have stopped the FedEx got steam rolled.Hmmm.. Does this mean, another championship is in sight for the FedEx?? I think so.

Sunday 24 June 2007

Faith and Forgiveness

I had been browsing through The Holy Bible, Mark ch 11 all this week and got a chance to experience the meaning of Faith and Forgiveness, that is the essence of this chapter first hand. The verses I am referring to are:
24 Therefore I say unto you, What things soever ye desire, when ye pray, believe that ye receive them, and ye shall have them.
25 And when ye stand praying, forgive, if ye have aught against any; that your Father also which is in heaven may forgive you your trespasses.
26 But if ye do not forgive, neither will your Father which is in heaven forgive your trespasses.

Interesting, Jesus asks us to forgive first in order to be forgiven for our mistakes. I could think of several instances in the past when I and maybe several of us, have been guilty of holding grudges against our closest friends and enemies and yet living in the hope of receiving forgiveness for our own mistakes.

Jesus taught the notion of forgiving first and then receiving forgiveness several times over. The Lords prayer which was taught by Jesus has "forgive our trespasses as we forgive those who trespass against us".

The question that comes to me is 'How easy is it to forgive someone for what we think is a great wrong done to ourselves'. To answer this question, I tell myself, "It is not for me to judge what is a great wrong or a minuscule one'. Jesus asks me to forgive, great or small, doesn't matter.

And the answer that I get is "The power of forgiveness is strong and affects all those around you". The movie, To End all Wars is a beautiful illustration of this point, so in conclusion

"Forgive and heal relationships before the rift widens and you will experience the Love"

Saturday 23 June 2007

John's essential links..for the saavy J2EE developer

We often come across useful information in our development phase and store it away as a book mark but we don't really index or summarise the information for later use and end up Googling for the same information when we need it again.

I intend to maintain this page as a collection of links related to various J2EE tools and technologies, that can be used for as a one stop shop for finding my favorite J2EE links regarding a particular technology or the solution to an issue I faced and sharing them with the J2EE community.

Feel free to send me your favorite links with a short summary of what is there on the page and I'll add it to the list.

----------------------
  • Build Tools

A. Maven


1. This article gives a good conceptual overview of the maven build tool and a handy startup command reference.
2. From the Maven home page, a starter's guide. This page has a handy faq but tries to focus on too many things and so might not answer all your doubts but it does give you something to go on.
3.Another good explanation of Maven concepts and a starter guide.

B. Ant

  • Java XML Serialization Technology

JAXB

1. A beginner's guide to JAXB.


  • Wikis and Blogging Tools

A. Versionate

B. MediaWiki

C. BaseCamp

  • Logging Tools
A. Log4J

  • Testing Tools
A. JUnit

B. Cactus

C. JMeter

D. SoapUI

  • Web Application Servers
A. Tomcat

B. JBOSS

C. WebLogic

  • Presentation / Web Tier
A. Struts

B. JSF

C. AJAX

D. CSS


  • Code Standardizing / Bug Finding Tools

A. PMD

B. findBugs

C. lint4J

  • Source Control Software
A. SubVersion

B. TortoiseSVN

Refer to this post for information, directions and tips on understanding, setting up and using Subversion and TortoiseSVN.
  • Useful Tools
Source Generation Tools

A. MiddleGen
B. XDoclet

Tailing Log Files : Cygwin

  • Frameworks
A. Spring

B. JEMS

  • Interesting APIs
A. Google Maps

1. This article has an excellent collection of Google Maps API usability examples.
2. This post summarises some of the other Google APIs, mainly the Google ToolBar API, Google Gadgets API, the Google Calendar API among others.

  • Setting Up / Configuring Tools / HowTos

My experience on building projects with Maven

I have been using Maven for the last couple of projects and have begun to realise the cool things that are possible. Claims that Maven is much more than a build tool and rather a project management tool appear justified.

Maven is best suited for setting up a project structure ( I mean the essential directory structure for a web based project) without minimum fuss. There are several public repositories such as http//www.ibiblio.com available for downloading project dependencies and associating them with the project. If your required jar isn't available, you don't need to fret. Download them from somewhere and update the ibiblio repository, so the next time anyone needs them, they can get them.

Another advantage as compared to it traditional rival ANT is that Maven conforms with the OO paradigm and supports the concept of a super class (read Parent POM). Low level tasks like code compilation are carried out by Maven without needing any additional tweaking from the developer.

Maven also breaks new grounds with its project site generation, reporting, source control management and well.. a lot of stuff. I could go on and on singing praises but hey, why not try something out for yourself.
This tutorial has a handy Maven command reference, to get you started.

Saturday 16 June 2007

Enterprise 2.0 and Google Maps

Well, I have been working all this week on a small Enterprise 2.0 application and have got a fair hang of how the Google Maps API works. I must say, it is really cool and it is easy as pie to hook into the maps and place your own stuff on different locations.
We saw two different ways of retrieving the Geo Coordinates of a particular location (one with Javascript and the other with Java). Both are easy.

All in all, building applications on top of Google Maps is a definite Yes.

I also saw some of the Google Developer Day videos and came across this interesting one on a Google Map API workshop.
The speaker gave a brief overview of the Maps API and set the guys on developing an application (within 90 mins). The best 3 attempts would win a 3D mouse. Do you know what a 3D mouse is? Well, i didn’t. Its a klunky joystick looking app that allows you to pan and zoom on Google Earth and Google Maps in a much better way than its conventional cousin.
Towards the end, the speaker gave a useful tip on the GeoCoding service saying that the same should not be used on the fly and the GeoCoodinates should be stored in the local database for faster response time. Not to mention the limitation of 50,000 requests that the GeoCoder allows over a 24 hour? (some controversy here)

Another interesting API that was talked about was the use of Mapplets.which allow you to embed data from a variety of sources, into your Google Map.
Give the video a look if you have a spare 30 minutes.

Monday 11 June 2007

Rafa blows FedEx away

Well, the bilboards predicted it, the commentators forecasted it but you couldn't help hoping for more of a fight. Rafa blew the FedEx away in four sets to claim a 3P. Simply amazing....

Sunday 10 June 2007

Welcome to John's World


Having completed a PhD in computer science last year and having spent the last 12 years earning 3 degrees and a diploma in computer science, I felt it was high time that I started a blog and joined the push towards a Web 2.0 world, so here we go.

I intend to post stuff on a weekly basis on not only techno matters but also on different aspects of my life so if you are interested, please visit this blog spot to find out the latest in my virtual world.

Have fun and keep smiling. :-)