Archive

Archive for December, 2006

Happy New Year

December 29, 2006 1 comment
Dear God,
Give every human the power to overcome their greed, we will have a great Year.
 
Thanks,
Sendhil
Categories: Uncategorized

Talking about ‘The Big Rewrite’

December 28, 2006 Leave a comment
Chad Fowler is blogging about an interesting topic.
Read here: The Big Rewrite
Categories: Great Links

Summary of C# 3.0 Features

December 27, 2006 Leave a comment
David Hayden posts a summary of the C# 3.0 features.
Categories: Great Links

Your capabilities

December 26, 2006 1 comment
Everything you’ve ever accomplished has been done using just a small fraction of your capabilities. What if you could make use of just a little bit more?
All that you’ve experienced has come from just a tiny corner in the universe of your possibilities. Imagine growing your awareness, your thinking and your actions beyond that corner.
 
If something seems impossible, that’s because you’re looking at it from a limited perspective. Consider that there is so very much more to life than what you have thus far encountered.
 
What you have and what you know are extremely valuable. Yet there also is infinitely more value to be found by exploring the possibilities that exist beyond where you already are.
 
No matter how many sunrises you’ve experienced so far, the next one brings with it a whole new world. No matter how far you’ve already come, this moment now is a new beginning.
 
Life is constantly reinventing itself while at the same time holding true to timeless values. Allow the very best possibilities to take you ever higher.
 
— Ralph Marston
 
 
Categories: Inspirational Stuff

The No A**hole Rule

December 21, 2006 Leave a comment
I came across Robert Sutton’s book The No asshole Rule: Building a Civilized Workplace and Surviving One That Isn’t via Esther Derby’s blog entry Jerks at work. This is one issue which has been bothering me off late a lot, "How to survive a workplace that is not civilized?". In my quest i ran into some artilcles on the web, which I thought I will share this with people (I am sure a lot of them are out there who need this silver bullet) who might be searching for the same kind of help.
 
Let me start with Robert Sutton’s own entry "Marge’s asshole Management Metric", I really cant wait to try this out in my new workplace. To quote Sutton "If you work in a place that is knee-deep in assholes, and you don’t want to turn into one or feel forced to act like one every day, the best thing you can do for yourself is to get out." I am afraid if that is the pragmatic solution though, As wherever you you find these stereotypes.
 
Esther Derby has a series of nice entries going,
 
To quote Esther on the two sterotypes of managers (who are assholes),
 
"1) They believe this is acceptable management behavior. They seem to be of the "workers are lazy and you must hold their feet to the fire to make them perform" school of management.

2) They have significant difficulties in the arena of self-management. These bosses seem unable to manage their own emotional responses and actions."

 
Absolutely spot on…I have worked with more type I people.
 
Another article by Esther on Stickyminds
 
Esther writes, "When your manager becomes abusive, stand up, state that you will not tolerate verbal abuse, and leave the room. Go to HR and file a formal complaint. Keep in mind that HR’s job is to protect the company’s interests, not yours. In my experience, the higher in the management chain the abuser is, the less likely HR will take action. The company has probably tacitly accepted his behavior for years, but when multiple complaints are on file, HR may decide that it is in the company’s best interest to deal with the abuser. If there are witnesses to the abuse, talk to them about corroborating your account. "
 
Valuable advice really.
 
Somehow Ayn Rand comes to my mind here "You cannot win in a system where ‘they’ set the rules." If that’s the only option, to get to a point where you can set the rules?
 
If you cannot get to a point where you can set the rules then I would suggest Robert Sutton’s advice "Develop an indifference". Though its not something which I want to do but I have to.
 
Another thing which I am trying this time is to make sure my boss is not a jerk. Ya I know my new boss, another victim of intimidation by assholes.
 
Also one key thing in my opinion is that incompetency leads to CYA behavior (Cover Your Ass, I have borrowed this phrase from my friend Sridhar Rajarao). These incompetent assholes try to boot lick the Incompetant assholes higher up in the ladder and move up the ladder. assholes move up fast in the ladder and pull up more assholes. That’s the reason Coporate is full of Junk these days (IMHO).
Off late I have begun to believe in the equation ‘Coporate == assholes’.
 
 
Last but not least take up the survey
 
BTW My top 5 (in the descending order of higher pain factor) were:
 
  • Lies
  • Betrays trust or confidences
  • Manages up, not down
  • Micro-manages
  • Steals credit or the spotlight from others

Also read Guy Kawasaki’s review here Book Review: The No Asshole Rule by Robert Sutton. Guy writes, "Walk away and stay away. Don’t be afraid to leave a bad situation. It’s unlikely you’ll change the assholes into good people; it’s much more likely that you’ll descend to their level."

And spaces didn’t allow me write a sshole, And I had to retort to some tricks to get it take the word. Pardon me for the uncivilized language, but we are talking about uncivilized people here.

 Tags: ,

Categories: Great Links

Quotable Quote

December 21, 2006 Leave a comment

Even so, one step from my grave,
I believe that cruelty, spite,
The powers of darkness will in time
Be crushed by the spirit of light.

 
Author – Boris Pasternak

 

Categories: Inspirational Stuff

Talking about Red Light Special

December 19, 2006 Leave a comment

I am tired of back linking entries from Thiru. But what the hell, they are so good.

Quote

Red Light Special
Two men were in a car when they had to stop at a red signal light.

The man at the wheel did not say anything.

The other man by his side, fretting and fuming, said, "The time we
waste at these red lights – why, a man could write a book!"

The driver still said nothing.

Finally the man beside him said, "Didn’t you hear what I said?"
"No."
"How come you did not hear? I was talking".
"Whom were you talking to?"

"I was talking to God," he said. "I’ve been making it a practice every
time I get to a red light to pray for one of my friends. It is wonderful
how many folks I have on my prayer list and how many I have time to
pray for in this way."

Categories: Uncategorized

Turn off autocomplete for credit card input

December 18, 2006 Leave a comment
Pete Freitag has a good entry about AutoComplete in html forms.
Categories: Great Links

Talking about Key to Success!!

December 18, 2006 Leave a comment

I had seen this some time back in Thiru‘s Blog. When I saw it again today in Smitha’s blog, I thought I will not miss linking to it this time.

Quote

Key to Success!!

Once upon a time a very strong woodcutter asked for a job with a timber merchant, and he got it. His salary was really good and so were the working conditions. For that reason, the woodcutter was determined to do his best.
His boss gave him an axe and showed him the area where he was supposed to fell the trees. The first day, the woodcutter brought down 15 trees.

" Congratulations," the boss said. " Carry on with your work!"

Highly motivated by the words of his boss, the woodcutter tried harder the next day, but he only could bring 10 trees down. The third day he tried even harder, but he was only able to bring down 7 trees.Day after day he was bringing lesser number of trees down.
 
" I must be losing my strength", the woodcutter thought. He went to the boss and apologized, saying that he could not understand what was going on.

" When was the last time you sharpened your axe?" the boss asked.
" Sharpen? I had no time to sharpen my axe. I have been very busy trying to cut trees …"
 
That’s right. Most of us NEVER update our skills. We think that whatever we have learned is very much enough. But good is not good when better is expected. Sharpening our skills from time to time is the key to success.

 

Categories: Inspirational Stuff

Continuations, Coroutines, Closures, Iterators

December 18, 2006 2 comments
Continuations
The wikipedia definition of continuation: "a continuation is a representation of the  execution state of a program (for example, the call stack or values of variables) at a certain point."
 
To quote the wikipedia entry again "Continuations are the functional expression of the GOTO statement, and the same caveats apply". Why the hell then there is so much of fuss about continuations off late (may be this has been there for a while, but I am drawn to it because of my interest in ruby and dynamic languages)?
 
If the use of goto for control flow result in code which is harder to read and comprehend, then continuations too result in the same thing. Continuations. To quote a python discussion list thread (http://mail.python.org/pipermail/python-dev/1999-July/000467.html) "Like a goto, this(continuation) is as low-level as it gets, and even hard-core continuation fans don’t use them directly except as a means to implement better-behaved abstractions."
 
What could be these better behaved abstractions?
Coroutines, Iterators, Closures etc.
 
So continuations are more language designers, compiler / interpretter / parser writers to worry about. Let us move on
 
Coroutines
In Traditional program structure there is one main routine which calls subroutine(s) to accomplish a task. When a main routine calls a  subroutine, the sub routine executes starting from the beginning (no matter how many times we call it). Once the sub routine is done it pops  the locals out of the stack and pushes the return value on to the stack and the main routine begins executing from where it left off.
 
Step 1: In a coroutine model coroutine (a) executes some stuff calls another coroutine (b) which does some other stuff and calls the original coroutine (a).
Step 2: The original coroutine (a) continues from where it left off and does something useful again. If the original coroutine (a) calls the other coroutine (b) again, the execution continues in the other coroutine (b) from where it left off in step 1.
 
In other words each coroutine acts as if it is the main routine. The main routine – sub routine model is a master (main) – slave (sub routines) model . The coroutine – coroutine model is a peer – peer model.
 
Where are coroutines useful?
The traditional producer consumer problem. The producer produces an entity which the consumer consumes. The producer and consumer themselves can be expressed a separate coroutines. In an environment without threads this could be handy. Coroutine 1: read input coroutine 2: process input and return to coroutine 1 and so on…
 
Iterators:
Iterators are one place where this suspend resume model will be helpful a lot. Let us see a simple example in C#
public class Person {
 private ArrayList friends;
 public Person() {
  friends = new ArrayList();
 }
 public void AddFriend(Person friend) {
  friends.Add(friend);
 }
 public void RemoveFriend(Person friend) {
  friends.Remove(friend);
 }
 public IEnumerable<Person> Friends {
  foreach(Person friend in friends) {
   yield return friend;
  } 
 }
}
public class Program {
 public static void Main(string[]  args) {
  Person sendhil = new Person();
  sendhil.AddFriend("Hitesh");
  sendhil.AddFriend("Prakash");
  sendhil.AddFriend("Sridhar");
  sendhil.AddFriend("Manu");
  foreach(Person friend in sendhil.Friends) {
   // Do something
  }
 }
}
No one would ever write such a program, may be they’ll just expose the ArrayList’s IEnumerable / IEnumerator evil twin. Anyways this is just to demonstrate the use of iterators. At the yeild return key word the execution state of the program is saved (this is all compiler magic) and the call returns to the caller (Main function). When the next iteration starts the execution resumes in where it left off early. In trivial
examples this seems like syntactic sugar. But as the data structure to iterate gets complex the iterators are really useful.
 
Generators:
Sequence generators can be implemented using the yield return statements. For an example see Don’s blog entry (a fibonacci  example using iterators is there). http://pluralsight.com/blogs/dbox/archive/2005/04/17/7467.aspx
 
Closures:
http://www.intertwingly.net/blog/2005/04/18/Blocks-for-Box
http://www.martinfowler.com/bliki/Closure.html
The above entries describe closures in a nice way. To quote Sam the following statement describes the power of closures. "The lock example above is a specific example whereby the language designers had enough foresight to build a similar feature into the language.  In Ruby, such features need not be a part of the language, as you can build your own." C# Using block is another one which i can think of. Rather than having a static language with these features built in wouldn’t it be better if you work in a language that gives you power and
flexibility to do it yourself. I have started liking dynamic languages.languages.
 
The entry is open for discussions using comments 🙂