Thursday, January 29, 2004

The Top 10 Journal-Writing Techniques

"Your real life begins at whatever moment you decide to connect yourself with your actions, whenever you learn to do what you believe as well as think what you believe," in the words of Joanne Brown. To this end, journal writing can help you string the pearls together of your life and give you a more complete understanding of your beliefs, dreams, goals, values, and desires - those things which make you unique. In turn, each completed journal will represent another facet of the evolving you.

Specifically, keeping a journal will help you develop your own vision of yourself and the world. By being your own best friend, counselor, coach, and manager, you can raise your self-esteem and learn how to access your personal power. In time, you will trust and believe in your own ability to rule your destiny, make decisions, crystallize and organize your thoughts, direct your energies, identify and clarify problems, develop solutions, expand your creativity, and create new challenges and choices. The uses for journals are as varied as the techniques used for writing. Excerpted from an article I wrote in 1984, the following ten writing techniques are as useful now as they were then. Have fun writing!

1. Descriptive Writing:

Describe what's going on in your world, from your point of view or from someone else's. Use as much vivid detail as possible. Some people psych themselves into writing by writing in a story-like fashion. If it's too difficult for you to talk about trying experiences, make yourself an outside observer and write about yourself in the third person.

2. Free-Association Writing:

Just put your pen to the paper and write whatever comes into your mind. Creativity overshadows structure in this technique. Free-association writing, or "free-intuitive" writing, will allow you to hurdle beyond yourself, you will be able to spontaneously explore wherever your thoughts might take you. Rereading these types of passages will give you clues to what's really troubling you. Once you understand this, you will be able to begin your catharsis.

3. Dialogues:

Write as if you were communicating to yourself, communicating to someone else, or communicating from an altered point of view.

4. Unsent Letter:

Write a letter to someone to whom you want to talk or to yourself. Perhaps someone you knew has died or a relationship has changed and you want to share your feelings with them. Perhaps you may be angry towards someone or have amends to make. You'll feel a sense of relief once your repressed feelings are released.

5. Fantasy Writing:

Use your imagination and write something based in fantasy, such as a fairytale. Or create your own success story!

6. Affirmations:

Write positive statements that you want to believe. Elaborate on each one. Also, record positive statements that people make about you or that you'd like them to make about you. If you read these statements regularly, you will believe them and then you will make them come true.

7. Lists:

Make lists about anything that's important to you or that you want to analyze or remember. Examples: food intake, budgets, personal growth plans, exercise plans and progress, professional goals, books you want to read, job-seeking plans, or business development plans. Don't forget to keep a journal with you at all times so that you can capture your great Top Ten article ideas too! Start listing at least three points and fill out the rest later if it's not convenient to write it all out on the spot.

8. Dreams:

Describe your dreams as if they were happening to you in the present. Explore your dreams, don't judge them. If you record your dreams regularly, you will be amazed how much you will remember!

9. Creative Works:

If you read a poem, hear a song, or see a photo or a piece of art that moves you, write down your thoughts or feelings about the creative work. Whenever possible, record the words or make a sketch right into your journal for future reference.

10. Business Notes:

Keep a journal handy to record conversations, main points, or action steps you'd like to make. Personally, I keep a business journal and a personal journal nowadays. It keeps things simpler, although ideas tend to flow through in either journal! Then, I cut and paste to keep things chronological and in the "right" journal.

Tuesday, January 27, 2004

10 Biggest Brain Damaging Habits

1. No Breakfast
People who do not take breakfast are going to have a lower blood
sugar level. This leads to an
insufficient supply of nutrients to the brain causing brain

2. Overeating
It causes hardening of the brain arteries, leading to
a decrease in mental power.

3. Smoking
It causes multiple brain shrinkage and may lead to
Alzheimer disease.

4. High Sugar consumption
Too much sugar will interrupt the absorption of
proteins and nutrients causing malnutrition and may
interfere with brain development.

5. Air Pollution
The brain is the largest oxygen consumer in our body.
Inhaling polluted air decreases the supply of oxygen
to the brain, bringing about a decrease in brain efficiency.

6. Sleep Deprivation
Sleep allows our brain to rest. Long term deprivation
from sleep will accelerate the death of brain cells.

7. Head covered while sleeping
Sleeping with the head covered, increases the
concentration of carbon dioxide and decrease
concentration of oxygen that may lead to brain
damaging effects..

8. Working your brain during illness
Working hard or studying with sickness may lead to a
decrease in effectiveness of the brain as well as
damage the brain.

9. Lacking in stimulating thoughts
Thinking is the best way to train our brain, lacking
in brain stimulation thoughts may cause brain

10. Talking Rarely
Intellectual conversations will promote the
efficiency of the brain.

The Funniest Matrimonial Ads

Wife wanted, must be able to dig, clean, cook worms and clean fish. Must have own boat with motor. Please send photograph of motorboat.

Once in a lifetime offer, to get yourself the original, genuine article. One of the most handsome and smartest bachelor's around is now looking for a wife. And you could be the lucky one he chooses! Has own house, car and successful career!

I am in demand of a wife. Supply is great though my requirements are high. However the Elasticity of my demands should not bear too heavy a burden upon the national interest.

Wife required to complete the formula of my life. Must be numerate and understand complex algebraic logarithms. Needed to help further my family unit.

Well there is definite room for improvement in my life. The speed of my current flows of information and processes is slowing down and the injection of a wife into my life is bound to improve efficiency. Compatibility could be an issue.

Wife wanted for company.

I feel there is a need in this world, to improve the ways we live, to harmonize the processes of life and to build upon past differences and short comings. I believe that we the people need someone to share our lives. To feel the joys of parent hood, and bear the social responsibilities, as we should in a civilized society................. (etc etc and never getting to the point)

Wanted a sturdy, reliable, low depreciating wife. Should be in excellent working condition.

Wanted a wife from good stock. Required for breading.

I hereby propose to solicit myself as an eligible candidate for the post of wife after marriage. The person whom I'm looking for should be strictly -a girl. The girl should be strictly a girl, with evidence to support this view that she is a girl. The girl should be willing to surrender to the service and jurisdiction of My Lord i.e. Myself. Any objections would be overruled and will not be sustained. Apply in limited confidence as all liabilities are null and void in the event of failure on our part of any kind whatsoever.

Wife required to complete my life. Please only level headed applicants. She must not have her heads in the clouds, but have her feet firmly on the ground. Her heart must be in it for the long haul. And she absolutely must also be aerodynamically sound!!!

Wanted wife who takes interest in me and credits me with her service.

Burri muddat keh baad eik arazoo jaagi hai, Key hum bee shaadi shooda ho jaayeh, Kya bahaana shaadi karaney ka............... joh kurrey sarey sarey, Yeah mai butaatah hoon ......... Kyoon key yaroo ub khud ghur keh kaam hotah nahee sarey sarey.

Required a girl - 5'8' & 36' 24' 36' with a good head for figures. She must be averse to making unnecessary expenditure and her very nature should be one of generating as few expenses in my life as possible. She should profit from a nice personality and be a credit to her family.

Wanted a girl. Girl's father should preferably have a drinks factory. I am an occasional alcoholic who drinks only when friends come round. Friends come round only seven times a week. Girl preferred who can carry me from bar to ghar-bar. Meet personally in a bar or send drinks for trial. Sample should be ample.

Hello! Hello! number 9 calling. This is number 9 I'm calling from base, erm a wife is needed for pick me up. Driving license not necessary, but map reading skills are a bonus.

Allah kay naam peh koi eik biwi dey dey, Doosrey kee nahi to upni hee dey dey, Allah terah bullah kurrey, Tujhey eik key balley doh dey dey, Hillery hogi toh Monika bhi dey dey!

Wanted a wife to help build upon the foundations of my life. Must be homely and willing to build relationship from the ground up.

I am looking for a wife to cure the emptiness in my life. However if you feel the need for a second opinion then it's fine by me.

My mission in life is to find myself the perfect wife. Successful applicants must be able to use a penknife and a compass. She who dares wins. Camouflage provided.

A model wife required to fit in with my fast track life. Must be able to keep pace!

I'm searching for a wife to fill the space in my life. Someone to share my universe. Must have looks that are out of this world!

Useful opensource Info not profit organisation providing certificates and awards is the world's largest Open Source software development website a good site to know about all linux devices powerful open source development network resource - Excellent site contains several opensource projects

50 most romantic things to do w/ you b/f or g/f)

1. Watch the sunset together.
2. Whisper to each other.
3. Cook for each other.
4. Walk in the rain.
5. Hold hands.
6. Buy gifts for each other.
7. Buy roses.
8. Find out their favorite cologne/perfume and wear it every time you're together.
9. Go for a long walk down the beach at midnight.
10. Write poetry for each other.
11. Hugs are the universal medicine.
12. S ay I love you, only when you mean it and make sure they know you mean it.
13. Give random gifts of flowers/candy/poetry etc.
14. Tell her that she's the only girl/boy you ever want. Don't lie!
15. Spend every second possible together.
16. Look into each other's eyes.
17. Very lightly push up her chin, look into her eyes,tell her you love her, and kiss her lightly.
18. When in public, only flirt w/ each other.
19. Put love notes in their pockets when they aren't looking.
20. Buy her a ring.
21. Sing to each other.
22. Always hold her around her hips/sides.
23. Take her to dinner and do the dinner for two deal.
24. Spaghetti? (Ever see Lady and the Tramp?)
25. Hold her hand, stare into her eyes, kiss her hand and then put it over your heart.
26. Dance together.
27. I love the way a girl looks right after she's fallen asleep with her head in my lap.
28. Do cute things like write I love you in a note so that they have to look in a mirror to read it.
29. Make excuses to call them every 5 minutes
30. Even if you are really busy going something, go out of your way to call and say I love you.
31. Call from your vacation spot to tell them you were thinking about them.
32. Remember your dreams and tell her about them.
34. Tell each other your most sacred secrets/fears.
35. Be Prince Charming to her parents.
36. Brush her hair out of her face for her.
37. Hang out with his/her friends.
38. Go to church/pray/worship together.
39. Take her to see a romantic movie and remember the parts she liked.
40. Learn from each other and don't make the same mistake twice.
41. Describe the joy you feel just to be with him/her.
42. Make sacrifices for each other.
43. Really love each other, or don't stay together.
44. Let there never be a second during any given day that you
aren't thinking about them, and make sure they know
45. Love yourself before you love anyone else.
46. Learn to say sweet things in foreign languages.
47. Dedicate songs to them on the radio.
48. Fall asleep on the phone with each other.
49. Stand up for them when someone talks trash.
50. Never forget the kiss goodnight and always remember to say, "Sweet dreams."

Good One!! Read it completly..

10 th Grade
As I sat there in English class,
I stared at the girl next to me.
She was my so called 'best friend'.
I stared at her long, silky hair,
and wished she was mine.
But she didn't notice me like that,
and I knew it. After class,
she walked up to me and asked me for
the notes she had missed the day before.
I handed them to her.
She said 'thanks' and gave me a kiss on the cheek.
I want to tell her, I want her to know
that I don't want to be just friends,
I love her but I'm just too shy,
and I don't know why.

11th grade
The phone rang. On the other end,
it was her. She was in tears,
mumbling on and on about how her
love had broke her heart.
She asked me to come over because
she didn't want to be alone, So I did.
As I sat next to her on the sofa,
I stared at her soft eyes, wishing she was mine.
After 2 hours, one Drew Barrymore movie,
and three bags of chips, she decided to go home.
She looked at me, said 'thanks' and gave me a kiss
on the cheek..
I want to tell her, I want her to know that
I don't want to be just friends,
I love her but I'm just too shy,
and I don't know why.

Senior year
One fine day she walked to my locker.
"My date is sick" she said, "hes not gonna go" well,
I didn't have a date, and in 7th grade,
we made a promise that if neither of us had dates,
we would go together just as 'best friends'.
So we did. That night, after everything was over,
I was standing at her front door step.
I stared at her as She smiled at me
and stared at me with her crystal eyes.
Then she said- "I had the best time, thanks!"
and gave me a kiss on the cheek.
I want to tell her,
I want her to know
that I don't want to be just friends,
I love her but I'm just too shy,
and I don't know why.

A day passed, then a week, then a month.
Before I could blink, it was graduation day.
I watched as her perfect body floated like an angel
up on stage to get her diploma.
I wanted her to be mine-but
she didn't notice me like that, and I knew it.
Before everyone went home,
she came to me in her smock and hat,
and cried as I hugged her.
Then she lifted her head from my shoulder
and said- 'you're my best friend, thanks' and
gave me a kiss on the cheek.
I want to tell her, I want her to know
that I don't want to be just friends,
I love her but I'm just too shy,
and I don't know why.

Now I sit in the pews of the church.
That girl is getting married now.
and drive off to her new life,
married to another man.
I wanted her to be mine,
but she didn't see me like that,
and I knew it.
But before she drove away,
she came to me and said 'you came !'.
She said 'thanks' and kissed me on the cheek.
I want her to know that
I don't want to be just friends,
I love her but I'm just too shy,
and I don't know why.

Years passed, I looked down at the coffin
of a girl who used to be my 'best friend'.
At the service, they read a diary entry
she had wrote in her high school years.
This is what it read:
"I stare at him wishing he was mine;
but he doesn't notice me like that,
and I know it. I want to tell him,
I want him to know that
I don't want to be just friends,
I love him but I'm just too shy,
and I don't know why.
I wish he would tell me he loved me !
........'I wish I did too...'
I thought to my self, and I cried.

* Do yourself a favour, tell her/him you love them.
They won't be there...................Forever.

Project Management Info

These are a drop in the ocean of information available on the web.

Be a man - Drink Beer

Heres what fellow drinkers say..

When I read about the evils of drinking, I gave up reading.
--(Henny Youngman)

Sometimes when I reflect back on all the beer I drink I feel
ashamed.Then I look into the glass and think about the workers in the
brewery and all of their hopes and dreams. If I didn't drink this beer,
they might be out of work and their dreams would be shattered. Then I say
to myself, "It is better that I drink this beer and let their dreams come
true, than be selfish and worry about my liver."
--(Jack Handy)

I feel sorry for people who don't drink. When they wake up in
the morning, that's as good as they're going to feel all day.
--(Frank Sinatra )

An intelligent man is sometimes forced to be drunk to spend time
with fools.
--(Ernest Hemingway )

24 hours in a day, 24 beers in a case. Coincidence?
--(Stephen Wright )

When we drink, we get drunk. When we get drunk, we fall asleep.
When we fall asleep, we commit no sin. When we commit no sin, we go to
heaven. Sooooo, let's all get drunk and go to heaven!
-- (Brian O'Rourke )

Beer is proof that God loves us and wants us to be happy.
--(Benjamin Franklin)

Hope - The Eternal Survivor

When we are beaten or suffer a setback in our lives, we feel discouraged and want to give up. The temptations to slide into hopelessness are many. Being pessimistic about hope will only help bring about that which we fear.

Every person has a responsibility to be hopeful. Each of us can choose to dream a future for ourselves that is different or better than the present. Each of us can develop the strength to move steadily to our ‘dream future’ doing what we can along the way to model for others the change we wish to bring about in the world. True hope is action oriented and not just a dream or an illusion. Active hope inspires and energizes the will to overcome obstacles. Hope provides the impetus to begin new journeys. Hope without action cannot endure.

When we hope for new unlimited potential, it brings to the fore the immense choice of new beliefs and a new understanding of life and new hopes in the form of hope of creativity, of authenticity and diversity, and the hope of community. Hope comes from a new story. Never leave hope…because hope leads the way to your future.

Pep Quote

"Your hopes, dreams and aspirations are legitimate. They are trying to take you airborne, above the clouds, above the storms, if you only let them." -- William James

Facing Your Fears Brings Achievements - By Rosemarie Rossetti, Ph.D

When was the last time you purposely put yourself in a situation where you would feel fear? Can you remember the difficulty you faced? Did you experience the intensity of the moment?

Many times we go through life avoiding situations that cause us to be afraid. Fear is appraised internally, and we decide to not take part in the activity. We recognize that there is some risk facing us and decide not to go forward. Oftentimes we totally abandon the activity and never return to it.

Avoiding situations due to fear, may limit your opportunities and growth. Something inside us resists the temptation to try a fearful activity due to a feeling of discomfort, failure, or defeat. Yet as we reflect over our lives, oftentimes our greatest achievements were made as a result of facing our fears.

We can choose to live an adventure, or live each day without challenges. It is a conscious choice. Out of our adventures come happy memories and experiences that we treasure.

What can you do to challenge yourself? What goals have you identified and shoved off to the side because you were afraid to start working towards them?

You cannot be paralyzed at the thought of the challenges that face you, but rather see obstacles as opportunities for personal growth. Trust yourself, test your limits and have the courage to succeed. Take success in small doses.

Each new experience brings with it some measure of success. Every obstacle presents an opportunity to improve our condition.

Virummandi - Thirai vimarsanam

'Virumaandi' has Kamal Haasan's most non-gimmicky, most affecting,
most effective performance in years, yet I couldn't help wishing he
were twenty years younger. The character is a gum-chewing hothead fond
of booze and brawls and bluster - he'll casually create catastrophes,
then calmly appear in court with sacred ash smeared across his
forehead, as if nothing's the matter - and Kamal, at times, looks a
bit old to be indulging in such mischief and mayhem.

It doesn't matter, though - the star of 'Virumaandi' isn't really
Kamal the actor, but Kamal the writer-director. If age has slackened
the jowls and filled out the gut of the former, it's also given the
latter the emotional maturity and the courage of conviction to see
through increasingly unconventional ventures, and 'Virumaandi' is
nothing if not unconventional - from the vertical opening credits on a
colour bar to the end credits that roll before the actual end, as in
TV specials about hot topics whose immediacy Kamal seeks to capture

The hot topic here is capital punishment, and the film uses the
interactions of a researcher on the subject (Rohini) with two
prisoners - Virumaandi and Kothaala Thevar (Pasupathy, in a
career-making performance) - to frame its bloody story about rural
feuds involving a third person, Nallamma Nayakar (Napoleon). (The
videotaping of their accounts and of another unwitting confession
raises a second hot topic, that in this post-Tehelka world, the spoken
word has no strength. If it isn't on tape, it cannot be taken as

Kamal has often expressed admiration for the work of Akira Kurosawa
and Shyam Benegal, and the fabulous first half of 'Virumaandi' - a
what-is-the-truth examination of similar events unfolded through
differing testimonies and different perspectives - is a fitting homage
to the storytelling styles of the former's 'Rashomon' and the latter's
'Suraj ka Saatvan Ghoda'.

Ilayaraja's contribution to these portions cannot be praised enough,
whether in bringing out the festivity around a 'jallikattu' through
the brassy 'kombula poova chutthi' or in orchestrating an 'oppaari'
with different feels to contrast diverging accounts of a tragedy.
(It's more percussive during Kothaala Thevar's narration and more
quietly emotive during Virumaandi's, suggesting that the latter's is
perhaps a truer account.) Equally impressive are Keshav Prakash's
cinematography that alternates between documentary rawness and
dramatic richness, Prabhakaran's invisible art direction, a cast
that's superb right down to the extras, and Kamal's writing, which is
organically one-of-a-piece and not merely an excuse to string together
his latest intellectual musings, exhibiting a fine ear for (often
funny) dialogue and a wonderful eye for detail. (It's no surprise that
Kamal writes for Virumaandi a lovemaking sequence - with Annalakshmi,
played by the earthily ethereal Abhirami - but what's surprising is
that his back still shows a scar from an earlier wound.)

As the story segues into real-time, the narrative novelty is abandoned
and the nuts and bolts of the film stand exposed as Kamal's familiar
themes and trademarks - from 'Thevar Magan' (a 'panchayat' scene
ending with an aggrieved party, bits about a dead child and its
grief-stricken mother), from 'Hey Ram' (a shocking tragedy, spurts of
arterial blood), from 'Mahanadhi' (the jail segments, the detailing of
the hero as an emotional fool).

In the context of the entire experience, though, a less-than-perfect
second half (with more conventional displays of heroism) is a
forgivable flaw, especially when Kamal unleashes unforgettable moment
after unforgettable moment - the balancing of a glass of alcohol on a
bull's back, the almost-surreal revelation that a judge who
shortchanges the law is really a midget, the shadow of a raised sickle
on the back of a shirt, the start of a girl who kisses her lover's
framed photograph and sees him reflected in the glass. This is the
work of an outrageous talent who dances instinctively, and fearlessly,
to the voices inside his head, and that's reason enough to recommend
this near-masterpiece of a movie.

Stupid question but smart answer

BOY : May I hold your hand?
GIRL : No thanks, it isn't heavy.

GIRL : Say you love me! Say you love me!
BOY : You love me...

GIRL : If we become engaged will you give me a ring??
BOY : Sure, what's your phone number??

GIRL : I think the poorest people are the happiest.
BOY : Then marry me and we'll be the happiest couple

GIRL : Darling, I want to dance like this forever.
BOY : Don't you ever want to improve??

BOY : I love you and I could die for you!
GIRL : How soon??

BOY : I would go to the end of the world for you!
GIRL : Yes, but would you stay there??

SHARON : Have you ever had a hot passionate, burning kiss??
TRACY : I did once. He'd forgotten to take the cigarette out of his mouth.

MAN : You remind me of the sea.
WOMAN : Because I'm wild, romantic and exciting?
MAN : NO, because you make me sick.

WIFE : You tell a man something, it goes in one ear and comes out of the other.
HUSBAND : You tell a woman something: It goes in both ears and comes out of the mouth.

MARY : John says I'm pretty. Andy says I'm ugly.What do u think,
PETER : A bit of both. I think you're pretty ugly.

1) Girlfriend : "...And are you sure you love me and no one else ?"
Boyfriend : "Dead Sure! I checked the whole list again yesterday".

2) Teacher : "Which is more important to us, the sun or the moon?"
Pupil : "The moon".
Teacher : "Why?"
Pupil : "The moon gives us light at night when we need it but the sun gives us light only in the day time when we don't need it".

3) Teacher : "What do you call a person who keeps on talking when people are no longer interested?"
Pupil : "A teacher".

4) Waiter : "Would you like your coffee black?"
Customer : "What other colors do you have?"

5) My father is so old that when he was in school, history was called current affairs.

6) Teacher : "Sam, you talk a lot !"
Sam : "It's a family tradition".
Teacher : "What do you mean?"
Sam : "Sir, my grandpa was a street hawker, my father is a teacher".
Teacher : "What about your mother?"
Sam : "She's a woman".

7) Tom : "How should I convey the news to my father that I've failed?"
David: "You just send a telegram: Result declared, past year's performance repeated".

8) Teacher : "Now, children, if I saw a man beating a donkey and stopped him, what virtue would I be showing?"
Student : "Brotherly love".

9) Teacher : "Now, Sam, tell me frankly do you say prayers before eating?"
Sam : "No sir, I don't have to, my mom is a good cook".

10) Patient : "What are the chances of my recovering doctor?"
Doctor : "One hundred percent. Medical records show that nine out of ten people die of the disease you have. Yours is the tenth case I've treated. The others all died".

11) Teacher : " Can anybody give an example of COINCIDENCE?"
One Student : "Sir, my Mother and Father got married on the same day and at the same time."

12) Teacher : " George Washington not only chopped down his father's Cherry tree, but also admitted doing it.
Now do you know why his father didn't punish him ?"
One Student: " Because George still had the axe in is hand."



:-) Your basic smilie. This smilie is used to inflect a sarcastic or joking
statement since we can't hear voice inflection over Unix.

;-) Winky smilie. User just made a flirtatious and/or sarcastic remark. More
of a "don't hit me for what I just said" smilie.

:-( Frowning smilie. User did not like that last statement or is upset or
depressed about something.

:-I Indifferent smilie. Better than a Frowning smilie but not quite as good
as a happy smilie

:-> User just made a really biting sarcastic remark. Worse than a :-).

>:-> User just made a really devilish remark.

>;-> Winky and devil combined. A very lewd remark was just made.

Those are the basic ones...Here are some somewhat less common ones:

(-: User is left handed

%-) User has been staring at a green screen for 15 hours straight

:*) User is drunk

[:] User is a robot

8-) User is wearing sunglasses

B:-) Sunglasses on head

::-) User wears normal glasses

B-) User wears horn-rimmed glasses

8:-) User is a little girl

:-)-8 User is a BIG girl

:-{) User has a mustache

:-{} User wears lipstick

{:-) User wears a toupee

}:-( Toupee in an updraft

:-7 User just made a wry statement

:-[ User is a Vampire

:-E Bucktoothed vampire

:-F Bucktoothed vampire with one tooth missing

:-* User just ate something sour

:-)~ User drools

:-~) User has a cold

:'-( User is crying

:'-) User is so happy, s/he is crying

:-@ User is screaming

:-# User wears braces

:^) User has a broken nose

:v) User has a broken nose, but it's the other way

:<) User is from an Ivy League School

:-& User is tongue tied.

=:-) User is a hosehead

- - -:-) User is a punk rocker

- - -:-( (real punk rockers don't smile)

:=) User has two noses

+-:-) User is the Pope or holds some other religious office

`:-) User shaved one of his eyebrows off this morning

,:-) Same thing...other side

|-I User is asleep

|-O User is yawning/snoring

:-Q User is a smoker

:-? User smokes a pipe

O-) Megaton Man On Patrol! (or else, user is a scuba diver)

O :-) User is an angel (at heart, at least)

:-P Nyahhhh!

:-S User just made an incoherent statement

:-D User is laughing (at you!)

:-X User's lips are sealed

:-C User is reaally bummed

<|-) User is Chinese

<|-( User is Chinese and doesn't like these kind of jokes

:-/ User is skeptical

C=:-) User is a chef

@= User is pro-nuclear war

:-o Uh oh!

(8-o It's Mr. Bill!

*:o) And Bozo the Clown!

3:] Pet smilie

3:[ Mean Pet smilie

E-:-) User is a Ham radio operator

:-9 User is licking his/her lips

%-6 User is braindead

[:-) User is wearing a walkman

(:I User is an egghead

<:-I User is a dunce>

@:-) User is wearing a turban

:-0 No Yelling! (Quiet Lab)

:-: Mutant Smilie

|.-) User only has one eye

,-) Ditto...but he's winking

X-( User just died

8 :-) User is a wizard

C=}>;*{)) Mega-Smilie... A drunk, devilish chef with a toupee in an updraft,
a mustache, and a double chin

Note: A lot of these can be typed without noses to make midget smilies.

:) Midget smilie

:] Gleep...a friendly midget smilie who will gladly be your friend

For java beginners

Learn the Language(JAVA) in the funniest way

Crazy English - Mr.Richard Lederer

Let’s face it: English is a crazy language. There is no egg in eggplant or ham in hamburger, neither apple nor pine in pineapple.

English muffins were not invented in England or french fries in France. Sweetmeats are candies, while sweetbreads, which aren’t sweet, are meat.

We take English for granted. But if we explore its paradoxes, we find that quicksand can work slowly, boxing rings are square, and a guinea pig is neither from Guinea nor is it a pig. And why is it that writers write, but fingers don’t fing, grocers don’t groce, and hammers don’t ham? If the plural of tooth is teeth, why isn’t the plural of booth beeth? One goose, 2 geese. So, one moose, 2 meese? One index, two indices? Is cheese the plural of choose?

If teachers taught, why didn’t preachers praught? If a vegetarian eats vegetables, what does a humanitarian eat?

In what language do people recite at a play and play at a recital? Ship by truck and send cargo by ship? Have noses that run and feet that smell? Park on driveways and drive on parkways?

How can a slim chance and a fat chance be the same, while a wise man and a wise guy are opposites? How can the weather be hot as hell one day an cold as hell another?

When a house burns up, it burns down. You fill in a form by filling it out and an alarm clock goes off by going on.

When the stars are out, they are visible, but when the lights are out, they are invisible. And why, when I wind up my watch, I start it, but when I wind up this essay, I end it?

Now I know why I flunked my English. It’s not my fault; the silly language doesn’t quite know whether it’s coming or going.


Saturday, January 17, 2004

java - magic number

What is a "magic number" in Java, and why does it sometimes go bad (referring to a bad magic number error when loading applets) ?

The class definition files (*.class) for Java applets are loaded over the network. Sometimes during the transmission of files, the connection may be aborted, or may be scrambled, causing class loading to fail. Sometimes when copying files over to a web server, they may become garbled or a disk error might occur. For this reason, special care is taken by the JVM and the class loader, to verify that classes are intact. One of the precautions is that every class definition contains at the beginning the magic number, a sequence of four bytes that identify a file as a Java class definition file.

For those curious to know what the magic number is, it is the hexadecimal number CAFEBABE, which is used by the class loader to see if a file is really a class definition file. Please don't ask me why it spells out cafebabe - my guess it was an attempt at humor.

Tuesday, January 13, 2004

Pongal wishes

Bhogi morning

Misty mornings, made even more so by the smoke coming from the fires lit by the people on the roads, young boys beating on small drums...... a quintessential Bhogi morning

Maatu Pongal

Maatu pongal - the day dedicated to the animal considered most sacred by the Hindus. The cows are bathed, decorated, prayed and given special offerings.

Pongalo pongal

Drawing the attractive kolam patterns, buying new rice and cooking it in a new pot, these are the special features of this special festival.

Pongal in the city

Pongal is always a special time - be it in the countryside or in the city proper, Pongal, like the other festivals, has always been celebrated with great gusto. Buying sugarcane, new rice, new clothes and eating hot, delicious pongal has always been a regular feature.


This is a phenomenon special to the Southern regions of Tamil Nadu, especially Madurai, Trichy etc. This game is the ultimate test of the bravery of any hot blooded male. What else would you call trying to subdue a bull with huge horns, that is running at breakneck speed?

Monday, January 12, 2004

One more Open Source

Crafty Syntax Image Gallery
This project is a PHP coded image gallery using Mysql for the database and ImageMagick or netPBM to generate thumbnails. Visitors can custimize gallery, create multiple image galleries, alter the look and design , and track the galleries.

Crafty Syntax Scrapbook
Crafty Syntax Scrapbook is a unique graphical content management system that creates a website that actaully looks like a book with pages, chapters etc.. The program is written in php and uses a MYsql database.

Crafty Syntax Live Help
A live Help support chat system that allows the operators of the websites to monitor their visitors as they are browsing the site and proactively open a chat session with the visitor. Other features include eiter text based database or Mysql database, chat notification, user is typing message, multiple chat sessions and multiple operators.

This was a DHTML game that I did in December of 1998. The idea was to learn more on how DHTML works and to create a game just for fun that would be fun to play.

Tuesday, January 06, 2004

Bangalore Beats Silicon valley

The inevitable has happened. Bangalore, which grew under the shadow of America 's Silicon Valley over the last two decades, has finally overtaken its parent.

Today, Bangalore stands ahead of Bay Area, San Francisco and California, with a lead of 20,000 techies, while employing a total number of 1.5 lakh engineers.

Bangalore , which commenced its R&D activities in 1986 when Texas Instruments set up its product engineering centre here, is currently home to the who's who of the global tech fraternity .

The recent recession in the US also forced most corporates there to move thousands of jobs to India in addition to tech giants such as Cisco, Intel, IBM, Oracle and i2 relocating some of their Indian-origin employees from the US centres to Bangalore.

Monday, January 05, 2004

India - economic power house

India becoming economic power house: Peter Drucker
Washington, Jan. 5. (PTI): Management Guru Peter Drucker has said India is becoming an economic powerhouse very fast and its progress is far more impressive than that of China.

In an interview to 'Fortune' magazine, he said India is becoming a powerhouse very fast. The medical school in New Delhi is now perhaps the best in the world. And the technical graduates of the Institute of Technology in Bangalore are as good as any in the world.

Also, India has 150 million people for whom English is their main language. So India is indeed becoming a knowledge centre, the 94-year-old management thinker said.

In contrast, he said, the greatest weakness of China is its incredibly small proportion of educated people. China has only 1.5 million college students, out of a total population of over 1.3 billion. If they had the American proportion, they would have 12 million or more in college.

In China, there is enormous undeveloped hinterland with excess rural population, but the likelihood of the absorption of rural workers into the cities without upheaval seems very dubious, he said.

You don't have that problem in India because they have already done an amazing job of absorbing excess rural population into the cities. India's rural population has gone from 90 percent to 54 percent without any upheaval, he said.

Everybody says China has 8 percent growth and India only 3 percent, but that is a total misconception. I think India's progress is far more impressive than China's, he said.

Saturday, January 03, 2004

Java webstart info

To help you decide here are all the links to the
"Java Web Start Site of the Year 2003" award nominees
for your convenience:

* @

* @

* Sun's Swing Sightings Series @

* Lopica Web Start Encyclopedia @

* Web Start News Wire @

* The Saturn Times @

* Vamp HQ @

* Open JNLP @

* Rachel @

* Web Start Chapter @

HR policies - good one

Dear Employees: It has been brought to management's attention that some
individuals throughout the company have been using foul language during the
course of normal conversation with their co-workers. Due to complaints
received from some employees who may be easily offended, this type of
language will be no longer be tolerated. We do however, realize the critical
importance of being able to accurately express your feelings when
communicating with co-workers. Therefore, a list of "TRY SAYING" new phrases
has been provided so that proper exchange of ideas and information can
continue in an effective manner without risk of offending our more sensitive

TRY SAYING: Perhaps I can work late.
INSTEAD OF: And when the fuck do you expect me to do this?

TRY SAYING: I'm certain that isn't feasible.
INSTEAD OF: No fucking way.

INSTEAD OF: You've got to be shitting me!

TRY SAYING: Perhaps you should check with... I
NSTEAD OF: Tell someone who gives a shit.

TRY SAYING: I wasn't involved in the project.
INSTEAD OF: It's not my fucking problem.

TRY SAYING: That's interesting.
INSTEAD OF: What the fuck?

TRY SAYING: I'm not sure this can be implemented.
INSTEAD OF: This shit won't work.

TRY SAYING: I'll try to schedule that.
INSTEAD OF: Why the hell didn't you tell me sooner?

TRY SAYING: He's not familiar with the issues.
INSTEAD OF: He's got his head up his ass.

TRY SAYING: Excuse me, sir?
INSTEAD OF: Eat shit and die.

TRY SAYING: So you weren't happy with it?
INSTEAD OF: Kiss my ass.

TRY SAYING: I'm a bit overloaded at the moment.
INSTEAD OF: Fuck it, I'm on salary.

TRY SAYING: I don't think you understand.
INSTEAD OF: Shove it up your ass.

TRY SAYING: I love a challenge.
INSTEAD OF: This job sucks.

TRY SAYING: You want me to take care of that?
INSTEAD OF: Who the hell died and made you boss?

INSTEAD OF: Blow me.

TRY SAYING: I think you could use more training.
INSTEAD OF: You don't know what the fuck you're doing.

Thank You, Human Resources

Java Object Serialization

Serializing Objects
Java makes it easy to serialize objects. Any object whose class implements the interface can be made persistent with only a few lines of code. No extra methods need to be added to implement the interface, however - the purpose of the interface is to identify at run-time which classes can be safely serialized, and which cannot. You, as a programmer, need only add the implements keyword to your class declaration, to identify your classes as serializable.

public class UserData implements
Now, once a class is serializable, we can write the object to any OutputStream, such as to disk or a socket connection. To achieve this, we must first create an instance of, and pass the constructor an existing OutputStream instance.

// Write to disk with FileOutputStream
FileOutputStream f_out = new

// Write object with ObjectOutputStream
ObjectOutputStream obj_out = new
ObjectOutputStream (f_out);

// Write object out to disk
obj_out.writeObject ( myObject );
Note that any Java object that implements the serializable interface can be written to an output stream this way - including those that are part of the Java API. Furthermore, any objects that are referenced by a serialized object will also be stored. This means that arrays, vectors, lists, and collections of objects can be saved in the same fashion - without the need to manually save each one. This can lead to significant time and code savings.

Restoring Objects From a Serialized State
Reading objects back is almost as easy. The one catch is that at runtime, you can never be completely sure what type of data to expect. A data stream containing serialized objects may contain a mixture of different object classes, so you need to explicitly cast an object to a particular class. If you've never cast an object before, the procedure is relatively straightforward. First check the object's class, using the instanceof operator. Then cast to the correct class.

// Read from disk using FileInputStream
FileInputStream f_in = new

// Read object using ObjectInputStream
ObjectInputStream obj_in =
new ObjectInputStream (f_in);

// Read an object
Object obj = obj_in.readObject();

if (obj instanceof Vector)
// Cast object to a Vector
Vector vec = (Vector) obj;

// Do something with vector....
Further Issues With Serialization
As you can see, its relatively easy to serialize an object. Whenever new fields are added to an object, they will be saved automatically, without requiring modification to your save and restore code. However, there are some cases where this behavior is not desirable. For example, a password member variable might not be safe to transmit to third parties over a network connection, and might need to be left blank. In this case, the transient keyword can be used. The transient field indicates that a particular member variable should not be saved. Though not used often, it's an important keyword to remember.

public class UserSession implements
String username;
transient String password;
Java's support for object serialization makes the implementation of persistent objects extremely easy. In contrast, the amount of code required to save and restore every field of an object is complex and repetitive work. While it is certainly possible to write your own serialization mechanism, the simplicity of that provided by Java would be hard to beat.

Serialization benefits programmers by

Reducing time taken to write code for save and restoration of object or application state
Eliminating complexity of save and restore operations, and avoiding the need for creating a new file format
Making it easier for objects to travel over a network connection.
With relatively little effort, you can apply serialization to a variety of tasks. Not only do applications benefit from serialization, but also applets. Rather than specifying a long list of parameters, or performing time consuming initialization and parsing, an applet can simple reload a configuration object whose member variables contain all the information needed to execute. It's not just useful for Java applications - even applets can benefit, by loading their configuration details or parameters. With a little imagination, serialization may just have a place in your next project.


Basic Structure of PL/SQL
Variables and Types
Simple PL/SQL Programs
Control Flow in PL/SQL
Discovering Errors
Printing Variables

Basic Structure of PL/SQL
PL/SQL stands for Procedural Language/SQL. PL/SQL extends SQL by adding constructs found in procedural languages, resulting in a structural language that is more powerful than SQL. The basic unit in PL/SQL is a block. All PL/SQL programs are made up of blocks, which can be nested within each other. Typically, each block performs a logical action in he program. A block has the following structure:

/* Declarative section: variables, types, and local subprograms. */


/* Executable section: procedural and SQL statements go here. */
/* This is the only section of the block that is required. */


/* Exception handling section: error handling statements go here. */

Only the executable section is required. The other sections are optional. The only SQL statements allowed in a PL/SQL program are SELECT, INSERT, UPDATE, DELETE and several other data manipulation statements plus some transaction control. However, the SELECT statement has a special form in which a single tuple is placed in variables; more on this later. Data definition statements like CREATE, DROP, or ALTER are not allowed. The executable section also contains constructs such as assignments, branches, loops, procedure calls, and triggers, which are all described below. PL/SQL is not case sensitive. C style comments (/* ... */) may be used.
To execute a PL/SQL program, we must follow the program text itself by

A line with a single dot ("."), and then
A line with run;
As with Oracle SQL programs, we can invoke a PL/SQL program either by typing it in sqlplus or by putting the code in a file and invoking the file in the various ways we learned in Getting Started With Oracle.

Variables and Types
Information is transmitted between a PL/SQL program and the database through variables. Every variable has a specific type associated with it. That type can be
One of the types used by SQL for database columns
A generic type used in PL/SQL such as NUMBER
Declared to be the same as the type of some database column
The most commonly used generic type is NUMBER. Variables of type NUMBER can hold either an integer or a real number. The most commonly used character string type is VARCHAR(n), where n is the maximum length of the string in bytes. This length is required, and there is no default. For example, we might declare:
price NUMBER;
myBeer VARCHAR(20);
Note that PL/SQL allows BOOLEAN variables, even though Oracle does not support BOOLEAN as a type for database columns.
Types in PL/SQL can be tricky. In many cases, a PL/SQL variable will be used to manipulate data stored in a existing relation. In this case, it is essential that the variable have the same type as the relation column. If there is any type mismatch, variable assignments and comparisons may not work the way you expect. To be safe, instead of hard coding the type of a variable, you should use the %TYPE operator. For example:

gives PL/SQL variable myBeer whatever type was declared for the name column in relation Beers.
A variable may also have a type that is a record with several fields. The simplest way to declare such a variable is to use %ROWTYPE on a relation name. The result is a record type in which the fields have the same names and types as the attributes of the relation. For instance:

beerTuple Beers%ROWTYPE;
makes variable beerTuple be a record with fields name and manufacture, assuming that the relation has the schema Beers(name, manufacture).
The initial value of any variable, regardless of its type, is NULL. We can assign values to variables, using the ":=" operator. The assignment can occur either immediately after the type of the variable is declared, or anywhere in the executable portion of the program. An example:

a NUMBER := 3;
a := a + 1;
This program has no effect when run, because there are no changes to the database.

Simple Programs in PL/SQL
The simplest form of program has some declarations followed by an executable section consisting of one or more of the SQL statements with which we are familiar. The major nuance is that the form of the SELECT statement is different from its SQL form. After the SELECT clause, we must have an INTO clause listing variables, one for each attribute in the SELECT clause, into which the components of the retrieved tuple must be placed.
Notice we said "tuple" rather than "tuples", since the SELECT statement in PL/SQL only works if the result of the query contains a single tuple. The situation is essentially the same as that of the "single-row select" discussed in Section 7.1.5 of the text, in connection with embedded SQL. If the query returns more than one tuple, you need to use a cursor, as described in the next section. Here is an example:



/* Above is plain SQL; below is the PL/SQL program. */

Fortuitously, there is only one tuple of T1 that has first component greater than 1, namely (2,4). The INSERT statement thus inserts (4,2) into T1.

Control Flow in PL/SQL
PL/SQL allows you to branch and create loops in a fairly familiar way.
An IF statement looks like:

The ELSE part is optional. If you want a multiway branch, use:
... ...
ELSE ...
The following is an example, slightly modified from the previous one, where now we only do the insertion if the second component is 1. If not, we first add 10 to each component and then insert:
Loops are created with the following:
/* A list of statements. */
At least one of the statements in should be an EXIT statement of the form
The loop breaks if is true. For example, here is a way to insert each of the pairs (1, 1) through (100, 100) into T1 of the above two examples:
i NUMBER := 1;
i := i+1;
EXIT WHEN i>100;
Some other useful loop-forming statements are:
EXIT by itself is an unconditional loop break. Use it inside a conditional if you like.
A WHILE loop can be formed with

A simple FOR loop can be formed with:

Here, can be any variable; it is local to the for-loop and need not be declared. Also, and are constants.

A cursor is a variable that runs through the tuples of some relation. This relation can be a stored table, or it can be the answer to some query. By fetching into the cursor each tuple of the relation, we can write a program to read and process the value of each such tuple. If the relation is stored, we can also update or delete the tuple at the current cursor position.
The example below illustrates a cursor loop. It uses our example relation T1(e,f) whose tuples are pairs of integers. The program will delete every tuple whose first component is less than the second, and insert the reverse tuple into T1.

/* Output variables to hold the result of the query: */
2) a T1.e%TYPE;
3) b T1.f%TYPE;
/* Cursor declaration: */
4) CURSOR T1Cursor IS
5) SELECT e, f
6) FROM T1
7) WHERE e < f
10) OPEN T1Cursor;
11) LOOP
/* Retrieve each row of the result of the above query
into PL/SQL variables: */
12) FETCH T1Cursor INTO a, b;
/* If there are no more rows to fetch, exit the loop: */
/* Delete the current tuple: */
/* Insert the reverse tuple: */
/* Free cursor used by the query. */
17) CLOSE T1Cursor;
18) END;
19) .
20) run;
Here are explanations for the various lines of this program:
Line (1) introduces the declaration section.
Lines (2) and (3) declare variables a and b to have types equal to the types of attributes e and f of the relation T1. Although we know these types are INTEGER, we wisely make sure that whatever types they may have are copied to the PL/SQL variables (compare with the previous example, where we were less careful and declared the corresponding variables to be of type NUMBER).
Lines (4) through (8) define the cursor T1Cursor. It ranges over a relation defined by the SELECT-FROM-WHERE query. That query selects those tuples of T1 whose first component is less than the second component. Line (8) declares the cursor FOR UPDATE since we will modify T1 using this cursor later on Line (14). In general, FOR UPDATE is unnecessary if the cursor will not be used for modification.
Line (9) begins the executable section of the program.
Line (10) opens the cursor, an essential step.
Lines (11) through (16) are a PL/SQL loop. Notice that such a loop is bracketed by LOOP and END LOOP. Within the loop we find:
On Line (12), a fetch through the cursor into the local variables. In general, the FETCH statement must provide variables for each component of the tuple retrieved. Since the query of Lines (5) through (7) produces pairs, we have correctly provided two variables, and we know they are of the correct type.
On Line (13), a test for the loop-breaking condition. Its meaning should be clear: %NOTFOUND after the name of a cursor is true exactly when a fetch through that cursor has failed to find any more tuples.
On Line (14), a SQL DELETE statement that deletes the current tuple using the special WHERE condition CURRENT OF T1Cursor.
On Line (15), a SQL INSERT statement that inserts the reverse tuple into T1.
Line (17) closes the cursor.
Line (18) ends the PL/SQL program.
Lines (19) and (20) cause the program to execute.

PL/SQL procedures behave very much like procedures in other programming language. Here is an example of a PL/SQL procedure addtuple1 that, given an integer i, inserts the tuple (i, 'xxx') into the following example relation:
b CHAR(10)

END addtuple1;
A procedure is introduced by the keywords CREATE PROCEDURE followed by the procedure name and its parameters. An option is to follow CREATE by OR REPLACE. The advantage of doing so is that should you have already made the definition, you will not get an error. On the other hand, should the previous definition be a different procedure of the same name, you will not be warned, and the old procedure will be lost.
There can be any number of parameters, each followed by a mode and a type. The possible modes are IN (read-only), OUT (write-only), and INOUT (read and write). Note: Unlike the type specifier in a PL/SQL variable declaration, the type specifier in a parameter declaration must be unconstrained. For example, CHAR(10) and VARCHAR(20) are illegal; CHAR or VARCHAR should be used instead. The actual length of a parameter depends on the corresponding argument that is passed in when the procedure is invoked.

Following the arguments is the keyword AS (IS is a synonym). Then comes the body, which is essentially a PL/SQL block. We have repeated the name of the procedure after the END, but this is optional. However, the DECLARE section should not start with the keyword DECLARE. Rather, following AS we have:

... AS


The run at the end runs the statement that creates the procedure; it does not execute the procedure. To execute the procedure, use another PL/SQL statement, in which the procedure is invoked as an executable statement. For example:
BEGIN addtuple1(99); END;
The following procedure also inserts a tuple into T2, but it takes both components as arguments:
x T2.a%TYPE,
y T2.b%TYPE)
VALUES(x, y);
END addtuple2;
Now, to add a tuple (10, 'abc') to T2:
addtuple2(10, 'abc');
The following illustrates the use of an OUT parameter:

b := 4;

addtuple3(10, v);
Note that assigning values to parameters declared as OUT or INOUT causes the corresponding input arguments to be written. Because of this, the input argument for an OUT or INOUT parameter should be something with an "lvalue", such as a variable like v in the example above. A constant or a literal argument should not be passed in for an OUT/INOUT parameter.
We can also write functions instead of procedures. In a function declaration, we follow the parameter list by RETURN and the type of the return value:

In the body of the function definition, "RETURN ;" exits from the function and returns the value of .
To find out what procedures and functions you have created, use the following SQL query:

select object_type, object_name
from user_objects
where object_type = 'PROCEDURE'
or object_type = 'FUNCTION';
To drop a stored procedure/function:
drop procedure ;
drop function ;

Triggers are a special PL/SQL construct similar to procedures. However, a procedure is executed explicitly from another block via a procedure call, while a trigger is executed implicitly whenever the triggering event happens. The triggering event is either a INSERT, DELETE, or UPDATE command. The timing can be either BEFORE or AFTER. The trigger can be either row-level or statement-level, where the former fires once for each row affected by the triggering statement and the latter fires once for the whole statement.
Below is the syntax for creating a trigger in Oracle (this syntax has been simplified; for the complete version try HELP CREATE TRIGGER in sqlplus):


Some important points to note:
You can create only BEFORE and AFTER triggers for tables. (INSTEAD OF triggers are only available for views; typically they are used to implement view updates.)
You may specify up to three triggering events using the keyword OR. Furthermore, UPDATE can be optionally followed by the keyword OF and a list of attribute(s) in . If present, the OF clause defines the event to be only an update of the attribute(s) listed after OF. Here are some examples:
... INSERT ON R ...
If FOR EACH ROW option is specified, the trigger is row-level; otherwise, the trigger is statement-level.
For a row-level trigger, a trigger restriction can be specified in the WHEN clause, enclosed by parentheses. The trigger restriction is a SQL condition that must be satisfied in order for Oracle to fire the trigger. This condition cannot contain subqueries. Without the WHEN clause, a trigger is fired by every triggering event.
is a PL/SQL block, rather than sequence of SQL statements. Oracle has placed certain restrictions on what you can do in , in order to avoid situations where one trigger performs an action that triggers a second trigger, which then triggers a third, and so on, which could potentially create an infinite loop. The restrictions on include:
You cannot modify the same relation whose modification is the event triggering the trigger.
You cannot modify a relation connected to the triggering relation by another constraint such as a foreign-key constraint.
We illustrate Oracle's syntax for creating a trigger through an example based on the following two tables:
We create a trigger that may insert a tuple into T5 when a tuple is inserted into T4. Specifically, the trigger checks whether the new tuple has a first component 10 or less, and if so inserts the reverse tuple into T5:
WHEN (NEW.a <= 10)
END trig1;
The special variables NEW and OLD are available to refer to new and old tuples respectively. Note: In the trigger body, NEW and OLD must be preceded by a colon (":"), but in the WHEN clause, they do not have a preceding colon!
Again, notice that we end the CREATE TRIGGER statement with a dot and run, as for all PL/SQL statements in general. Running the CREATE TRIGGER statement only creates the trigger; it does not execute the trigger. Only a triggering event, such as an insertion into T4 in this example, causes the trigger to execute.

To view information about your triggers, use the following:

select trigger_name from user_triggers;

select trigger_type, table_name, triggering_event
from user_triggers
where trigger_name = '';
To drop a trigger:
drop trigger ;
To disable or enable a trigger:
alter trigger {disable|enable};

Discovering Errors
PL/SQL does not always tell you about compilation errors. Instead, it gives you a cryptic message such as "procedure created with compilation errors". If you don't see what is wrong immediately, try issuing the command
show errors procedure ;
Similarly, you can get the errors associated with a created trigger by
show errors trigger ;
Furthermore, "SHO ERR" is an abbreviation for "SHOW ERRORS", and you can omit "PROCEDURE ..." or "TRIGGER ..." if you just want to see the most recent compilation error.

Printing Variables
Sometimes we might want to print the value of a PL/SQL local variable. A ``quick-and-dirty'' way is to store it as the sole tuple of some relation and after the PL/SQL statement print the relation with a SELECT statement. A more couth way is to define a bind variable, which is the only kind that may be printed with a print command. Bind variables are the kind that must be prefixed with a colon in PL/SQL statements, such as :new discussed in the section on Triggers.
The steps are as follows:

We declare a bind variable as follows:
where the type can be only one of three things: NUMBER, CHAR, or CHAR(n).
We may then assign to the variable in a following PL/SQL statement, but we must prefix it with a colon.
Finally, we can execute a statement
outside the PL/SQL statement
Here is a trivial example, which prints the value 1.

:x := 1;


Project Survival Tips


It's Day 0 of a crucial project, and you're already breaking out in a sweat. Even savvy project managers sometimes experience problems en route to project sign-off.

Whether you're a rookie or a veteran, learn how to avoid coming undone if you encounter these 10 possible pitfalls.

1. Your input is requested in scoping the project.
Beware! You may find yourself keen to make commitments that your project team will later have to make good.

2. You're unsure whether a feasibility study has been done.
You'll look stupid if you fail to uncover an internal report that brands
your project undeliverable because of some fundamental unknown. Find someone
who has built a similar system, and then buy him or her lunch while you take notes. Always look for opportunities to reuse resources; such "low-hanging fruit" can help you complete a project faster.

3. You're only 95 percent clear on the deliverables.
This allows anyone to demand extra work from your team since you can't defend
the project from a large-scale mission drift. If someone asks, "When is X
going to be ready?" you need to be able to respond definitively--but only if it's really within the scope of your project.

4. You notice that there appears to be a skills gap.
If you discover that an area of specialist expertise is necessary for project completion in which you have no training or experience, don't panic. You either need to source expertise internally or externally or devise a workaround. Write down the decision-making process and discuss it with your programming manager.

5. You don't understand the business relevance of deliverables.
You need to come to grips with this, or you'll be unable to understand the relative priorities in a complex project. You may need to make or request decisions in the course of development that rely on your understanding of what is really needed rather than going by just a list of buzzwords. If those queries aren't business-savvy, your reputation may suffer.

6. You're feeling unsure of yourself.
A project can look good on paper in terms of delivery metrics and still be
a nightmare for the project team members. You were chosen to take on this
task, so have some faith in yourself.

7. You become impatient and begin coding yourself.
Your job is getting others to perform coordinated tasks, so be patient and keep listening to your team. Developing software with others is one of the most difficult tasks imaginable. Some members of your team may find themselves
struggling. When that happens, they'll need someone to talk to who knows what to do--without necessarily understanding the minutiae of how to do it.

8. A crisis arises.
In creating polished software systems, there will be difficulties. People may become ill, forget things, or make mistakes. Your job is to screen out those
effects by acting like a professional. Stay cool and keep your team on track.

9. The project details are more complex than you originally realized.
The project is on target and 15 percent complete when someone mentions documentation and user training for the first time. The project isn't just the process metrics and the lines of code. Ask yourself if the work will deliver some value in the grand scheme of your company's business. It's not about making a beautiful graph of a lackluster project; the map isn't the territory, so try to stick with reality.

10. It's not over, 'til it's over.
When you finally achieve sign-off, don't forget to reward your team (possibly
with a meal). Then, consult your log and personally assess how it went. Remember that some mistakes and loss of sleep are inevitable in project management.

400 bytes to 70 bytes class file

By Norman Richards

The Austin Java User Group recently sponsored a contest to create the smallest Java Hello World! program. The rules were simple: create the smallest Java class that when executed will display the text "Hello World!" (and only that text) to the console.

The restrictions were that the class must execute under Sun's 1.3 JRE. It may make use of any class or file distributed with the JRE, but any additional files (excluding arguments on the command line) count against the byte total of the Java class file.

In this article, I explain how I arrived at my 70-byte solution. I hope that in the process you learn a bit about Java class files and the Java Virtual Machine. I also urge you to take the challenge before viewing my solution.

Getting Started
Let's first look at the canonical Java Hello World! program.

public class Hello
public static void
main(String[] args)
("Hello World!");

Compiling this class with javac produces a 416-byte Java class file. That's quite a few bytes just to print "Hello World". Javac generates debugging information by default. Debugging can be disabled with the "-g:none" option to reduce the byte count to 336 bytes, but to go much further we have to look at exactly where those bytes are going.

Figure 1 shows the basic components of a Java class file.
In the initial Hello World program, as with most Java classes, the bulk of the bytes come from the constant pool. The method declarations are the next largest chunk, but most of the information used in a method declaration is stored in the constant pool. Table 1 shows the constant pool from the first class.

Note that the constant pool contains most of the details of our code. The class name and method names are all there as are the names and types of all the external classes, methods, and variables we touch. Constant values (such as our "Hello World!" text) are included too. Also, note that constant pool entries link to other constant pool entries. For example, a method reference entry links to a class reference entry (which in turn references a UTF8 text entry holding the name) and a name and type entry (which links to the UTF8 text entries holding the name and the method signature).

To realize how this is used, consider the Hello class expressed as bytecode with constant pool references indicated by the number sign ("#") and the constant pool index number. Don't be scared off by the bytecode. It's not as complicated as it looks. If you've ever programmed an assembler of any sort, this should look quite natural. If not, don't worry. The important thing to note is that in terms of size, the actual bytecode is very small (the constructor is 5 bytes and the main method is 9) because almost everything we do references a field or class or constant defined in the constant pool, which is quite large (see Listing 1).

First Steps
To have maximum control over what goes in the class file I decided to generate the class file directly.

Normally a tool such as Jakarta Bytecode Engineering Library (BCEL) would be the best choice to generate the class, but in this case I wanted maximum control (and understanding) of each byte that goes into the class file.

My first attempt was to simply generate a basic Hello World program, minimizing constant pool references and removing any unnecessary portions of the class. There are three main steps.

First, I wanted to make sure I generated only the main method. When compiling a class, the Java compiler will insert a default constructor if you don't specify one. However, this is only necessary if you need to create an instance of the class. If you just need to use the main method, you don't need to be able to create an instance and can remove the constructor.

Next, I wanted to inherit from an already referenced class. Every class referenced in the class file requires entries in the constant pool. I can remove the java.lang.Object constant pool reference I would normally get (remember, even if you don't specify it in your Java source code, your class extends java.lang .Object) by specifying some other class already referenced in the class file. The choices were and java.lang.System. (java.lang.String is used as a parameter only so we don't have class information for it in the constant pool.) Since java.lang.System is final and cannot be extended, the choice was

Finally, since the name of the class is also stored inside the class file, instead of naming the class "ReallySmallHelloWorldClass", I wanted to choose a name whose text is already in use in the constant pool.
Some choices were "print", "out", and "main", the names of methods and fields referenced. I chose "Code", which is the constant pool tag associated with the Code attribute in the method. The Code attribute is where the bytecode that's associated with the method is stored.

Code to generate this first class is in (The source code and Listing 1 can be downloaded from the JDJ Web site, The resulting class file is 248 bytes. The following code snippet shows the bytecode, and Table 2 shows the constant pool.

public class Code
public static void
main(String[] args)
;; System.out.print
;; ("Hello World")

;; get System.out
0: getstatic #13

;; get the String
;; "Hello World!"
3: ldc #18

;; invoke print method
5: invokevirtual #16

8: return

Hello Command Line
Next, remove the "Hello World!" from the constant pool and pass it in as an argument on the command line. It takes 3 bytes (aload_0, iconst_0, aaload) to reference args[0] as opposed to 2 bytes to load a constant (ldc) string from the constant pool; however, not needing to store the text in the constant pool frees up two constant pool slots and brings the total size down to 231 bytes.

Code to generate the class is in

The constant pool is similar enough to the first example that we can skip it, but keep in mind that some of the positions in the constant pool have changed. The following is the new bytecode.

public class Code
public static void
main(String[] args)
;; System.out.print(args[0])

;; get System.out
0: getstatic #12

;; args variable
3: aload_0

;; constant int value 0
4: iconst_0

;; get args[0]
5: aaload

;; invoke print
6: invokevirtual #15

9: return

Even at 231 bytes the class file is still quite large. Most of the bloat is associated with retrieving the static field out on java.lang.System and invoking the print method on With that in mind, I scoured the JRE-provided classes for code that would either get System.out for me or print some given text to stdout. Fortunately, there is such a class, sun.misc.MessageUtils, that provides a static method "toStdout" that will print a string to System.out. Using this, I can replace the static field reference (System.out) and the method invocation ( with one single static method invocation (sun.misc.MessageUtils.toStdout).

Of course, since is no longer in the constant pool, a new superclass is needed. Fortunately, the MessageUtils class is now available to take on this job. Code to generate this class is in The resulting class file is 171 bytes. The following code snippet shows the bytecode, and Table 3 shows the constant pool.

public class Code
extends sun.misc.MessageUtils
public static void
main(String[] args)
;; toStdout(args[0])

;; args
0: aload_0

;; constant 0
1: iconst_0

;; get args[0]
2: aaload

;; invoke toStdout
3: invokestatic #9

6: return

Goodbye Main
At this point, I began to lament the size of the signature of the main method - "([Ljava/lang/String;)V". I decided to try removing the main method entirely and echoing the text in a static initializer block. "", the internal name for the static initializer, is a few bytes longer than "main", but the size of the static initializer's method signature "()V" is much shorter than main's. For this to work, I needed to find a class with a main method that doesn't echo any text to the console to extend, so we still have an accessible main method.

The shortest named one I found among the various JRE classes is sun.Applet.Main, the main program for the Java applet viewer application.

Applet viewer requires a command input argument, but we can pass in the class file name "Code.class" as a command-line argument. Applet viewer will silently ignore the input since it contains no applet tags. The only drawback to this is that "Hello World!" had to go back into the constant pool, bringing the solution up to 194 bytes (see Table 4). Code to generate this class is in

public class Code
extends sun.applet.Main
static {
;; sun.misc.MessageUtils
;; .toSdout("Hello World!")

;; get String "Hello World!"
0: ldc #9

;; invoke toStdout on
;; sun.misc.MessageUtils
2: invokestatic #10

5: return

OPC - Other People's Code
Despite making the class file larger, this was still an important step. What I needed was to find a way to further leverage hidden classes in the JRE. I'd already found a class with a main method to use that did nothing, allowing the static initializer to do its magic, but what I really needed was a class with a main method that would just print out "Hello World!"

Apparently, that's not such a far-fetched idea. Nestled deep within Sun's 1.3 JRE is with the following method:

public static void
main(String args[])
throws Exception

The expand() method doesn't alter the text "Hello World!", so we're effectively just printing args[0] by itself.

As long as we pass in the text "Hello World!" as the first argument to the Java program, as we were doing earlier, we're all set. Since there are longer methods with bytecode associated with the class, the text "Code" is no longer available as a class name. Unfortunately, there are no other text fields to use in the constant pool. Since every class must have a superclass, and a class cannot be its own superclass, we have to add an entry to the constant pool for the name. However, it turns out that the Sun JVM allows for a class to have a zero length name, allowing us to keep the new constant pool entry as small as possible. If this weren't the case, we would have to choose a name like "a".

The code to generate this class file is The resulting bytecode is 70 bytes, consisting of four constant pool entries (two for the class spec and two for the superclass spec) and no fields, methods, or attributes (see Table 5).


Of course, we could throw out the generated class file completely and simply invoke Java with the class directly.

java 'Hello World!'
However, this wouldn't be a legal submission, so the 70-byte solution was the best one I could come up with.
Although hacking class files doesn't have much practical relevance, I found the challenge to be quite a lot of fun.

And, even if you have never touched a class file or Java bytecode, the Hello World problem is small enough that you should be able to gain a better understanding of how the internals of Java work.

I'd like to thank Jeff Schneider and Momentum Software for devising the Hello World problem and the Austin Java Users Group for sponsoring the contest.


Java Virtual Machine Specification:
Jakarta Byte Code Engineering Library (BCEL):

Friday, January 02, 2004

In My mother Tongue - good one

'அதுக்கப்புறம் நல்ல வேலை, ஜாஸ்தி சம்பளம் தராங்க-ன்னு சொல்லி இங்க வந்தாச்சு. நல்ல ஊருதான், ஆனா என்னவோ எனக்குப் பிடிக்கலை. காசுக்காக சொந்தஊரை விட்டுட்டு வந்துட்டோமேன்னு எனக்கு ஒரு தவிப்பு',

ரெண்டாவது மொழியாவாவது தமிழைக் கத்துக்கட்டுமே-ன்னேன், அதுக்கும் ஒத்துக்கலை, அதைவெச்சு இவங்க தமிழங்க-ன்னு கண்டுபிடிச்சுடுவாங்களாம், என்ன முட்டாள்தனம்சார் இது?
நாம யாருங்கறதை மறைச்சு வாழறது ஒரு வாழ்க்கையா? சாகறவரைக்கும் அஞ்ஞாதவாசமா?', உணர்ச்சிபொங்கப் பேசினார்.

ஆனா பெண்டாட்டி, பிள்ளையோட பேசாம தாய்பாஷையை வேற யார்கிட்ட பேசிக்கேட்கமுடியும் சொல்லுங்க? முன்னெல்லாம் ஒவ்வொரு புத்தகத்தை வாங்கிச் சேர்க்கும்போதும் எனக்கப்புறம் என் பிள்ளைங்க இதைப் படிக்கும், நான் சிரமப்பட்டமாதிரி ஞானத்தைத் தேடி அதுங்க அலைய
வேண்டியதில்லை-ன்னு தோணும். அந்த நினைப்புக்கெல்லாம் இப்போ அர்த்தமே இல்லாம போச்சு.'

- லாவண்யா
27 11 2001

(கொடை சிறுகதை)

Nice info 1


You may not believe in this but the advice is great!
Read all the way down, you might learn something!!!

Give people more than they expect and do it cheerfully.

Marry a man/woman you love to talk to. As you get older, their
conversational skills will be as important as any other.

Don't believe all you hear, spend all you have or sleep all you want.

When you say, "I love you", mean it.

When you say, "I'm sorry", look the person in the eye.

Be engaged at least six months before you get married.

Believe in love at first sight.

Never laugh at anyone's dreams. People who
don't have dreams don't have much.

Love deeply and passionately. You might get hurt
but it's the only way to live life completely.

In disagreements, fight fairly. Please No name calling.

Don't judge people by their relatives.

Talk slowly but think quickly.

When someone asks you a question you don't want
to answer, smile and ask, "Why do you want to know?"

Remember that great love and great
achievements involve great risk.

Say "bless you" when you hear someone sneeze.

When you lose, don't lose the lesson.

Remember the three R's:
Respect for self;
Respect for others;
Responsibility for all your actions.

Don't let a little dispute injure a great friendship.

When you realize you've made a mistake,
take immediate steps to correct it.

Smile when picking up the phone.
The caller will hear it in your voice.

Spend some time alone.

Nice info 2


You may not believe in this but the advice is great!
Read all the way down, you might learn something!!!

Give people more than they expect and do it cheerfully.

Marry a man/woman you love to talk to. As you get older, their
conversational skills will be as important as any other.

Don't believe all you hear, spend all you have or sleep all you want.

When you say, "I love you", mean it.

When you say, "I'm sorry", look the person in the eye.

Be engaged at least six months before you get married.

Believe in love at first sight.

Never laugh at anyone's dreams. People who
don't have dreams don't have much.

Love deeply and passionately. You might get hurt
but it's the only way to live life completely.

In disagreements, fight fairly. Please No name calling.

Don't judge people by their relatives.

Talk slowly but think quickly.

When someone asks you a question you don't want
to answer, smile and ask, "Why do you want to know?"

Remember that great love and great
achievements involve great risk.

Say "bless you" when you hear someone sneeze.

When you lose, don't lose the lesson.

Remember the three R's:
Respect for self;
Respect for others;
Responsibility for all your actions.

Don't let a little dispute injure a great friendship.

When you realize you've made a mistake,
take immediate steps to correct it.

Smile when picking up the phone.
The caller will hear it in your voice.

Spend some time alone.

joke 1

The night was dark, the moon was high,
I stopped my car....u wondered why?
I leant so close, u felt shy.
I uttered those three words....
I !!

Friends r like mirrors, they r our reflection.
You r damn lucky I look good !!!!

You = cute
You = hot
You = sweet
You = intelligent
You = amazing
You = perfect
Me = liar.

I have a confession to make, ever since I have known u,
Its kinda hard for me to forget u.
Every night u appear in my dreams, And I find my self shouting.....

I look at the stars, the stars r beautiful
Then I look at you......
I ......
I .......
I rather look at the stars again. *****

Look at the world as one big chocolate cake. It would never be complete
without few sweets n nuts.
Sweets like ME and nuts like YOU.

U r 100% beautiful, u r 100% lucky
u r 100% sweet , u r 100% nice, and u r 100% stupid to believe these

Good looking people r hard to find.
That's why u don't ......
That's y u don't see me often.

A good speech should b like a women's skirt...
Long enough to cover the subject,
And short enough to create interest.

When u feel sad....
To cheer up just go to the mirror and say, "damn I am really sooo cute"
u will overcome ur sadness.
But don't make this a habit.....
Coz liars go to hell !!!!

Jassi sing h tells his gf, "come home tomorrow, no one will b at home."
When she goes the next day to his home....... There was NO ONE at home.

What frustrates the sardarji when his wife delivers twins???
He wonders who is the father of the second child.

WIFE : " I wish I was a newspaper, so I'd be in ur hands all day."
HUSBAND : " I too wish that u were a newspaper, so I could have a new
one everyday."

A SARDARJI is in the library , he bangs down a book and says :" too
boring, too many characters and no story".
LIBRARIAN says : oh! U r the one who took the phone directory away??

God created ME to b ur friend. He picked ME out from all the REST coz
he knows I am ....well one of the BEST.
AHEM !! don't argue with God now

java open source tools

Java buddies

Do u know ,Sun's involvement in Open Source Projects.

A utility for checking an application binary's use of library interfaces

A Java Based Build Tool

A Java Based Toolkit For Scalable Vector Graphics

A Java XML Parser Derived from the Sun Project X Parser

OASIS ebXML Registry Reference Implementation Project

A speech synthesizer written entirely in the Java programming language

A benchmark to stress old-gen collection


UNIX Desktop, Development Platform, and Office Productivity Applications

A Make Tool for the Java™ Language

A Web Browser

PDM Primes
Prime Number Generation Code

Solaris I18N Framework
X Window System Technology

Standard Type Services Framework
A new API for text & font handling the display of text on Unix and Linux systems

The Reference Implementation For the Java Servlet 2.2 and JSP 1.1 Technologies

A modified Java™ Virtual Machine used to gather data on the behavior of Java applications

Java implementation of the Web-based Enterprise Management (WBEM) standard

An XSLT processor for transforming XML documents into HTML, text, or other XML document types.

XACML OASIS Open Standard for security.

for more details check here