Friday, January 25, 2013

Thoughts on solving a programing problem & building software

1. The code does not behave arbitrarily – The problems in logic that make the code behave arbitrarily 2. Don’t give up and say a solution is wrong – look for the remaining part of the solution to make it right. 3. Always learn to pay respect to the professional work done by others 4. Always treat yourself as a learner – lowest guy in the totem pole – enables you to look at code with enthusiasm and an attitude to learn/understand. 5. Always try to find the simplest and most durable of the solutions that solves the given problem – you are not in the software engineering world to create complexity – it is the other way around. We are here to simplify. (We need to learn to balance simplicity and complexity). The simplicity is prioritized. The Simplicity should be for the user (User should be able to very easily & quickly perform intended work, reliably each time). 6. Each computer system is built with some key primary quality attributes in focus. All other attributes are secondary. The architect’s job is to decide which are primary and which are secondary. He/She should then build a system that is able to realize this goal.

Saturday, August 11, 2012

Why "Intuition" is important?

Intuition enables one to come up with interesting questions. The answers to those questions create new knowledge. The drivers for creation of knowledge are questions & intuition. Without intuitive thinking there is no newness.

Saturday, July 21, 2012

What a nice thought

"History is not made by the person who is right, but by the person who survived". ascribed to UTV Action Movies. How true

Tuesday, February 21, 2012

The Assignment and MIT Sloan Tech Review

Neary 6 years ago I was tasked with implementing CMMi with one of the organizations. I know for most tech people, it sounds idiotic - but i believe discipline in any area is essential to succeed repeatedly & keep learning continuously. If we approach CMMi with that perspective, it becomes an aid rather than an impediment.

Most of the places, the process guys are non engineers who want power over engineers who have brains 100s & 1000s times better than those process guys. To feel superior process guys end up creating constitutions in the name of process improvements that mandate laws to measure times the engineers spend in taking leaks.

Anyway the current thing is not about that. Since previous post was about what is good software, possibly it is nice to know how to build good software.

I had the pleasure to work with one of the most brilliant guys (Sanat Pai Raikar -almost 6 years junior to me). To get him upto speed following was the assignment i gave;

"Please do read the following:

Software Engineering a Practitioners Approach – R.S. Pressman
OOAD with Applications – Grady Booch
Mythical Man Month – Fredrick P. Brooks
Age of Spiritual Machines – Ray Kurzweil (to understand law of accelerating change/ returns, entropy in system etc.)
The quotes at the beginning and end of each of the chapters in the Java Programming Language book – James Gosling and Ken Arnold

All assignments will be done individually first, then revised if necessary with consultation/inputs from Anuroop and Krishna. Then these will be presented to general audience.

Assignments:

1. Software
What is software?
What is good software?
What are the characteristics of good software?
What does it take to build good software?
What are the measures to tell whether software is good or bad?

2. Software Engineering
Overall perspective and Answer the following

What do we mean by software engineering?
Who does software engineering and what are the general roles?
What are the general myths and how can we overcome those myths?
Why should we focus on “engineering aspect”?

3. Software development lifecycle models

What are SDLC models?
Why should we have these models?
What are the different SDLC models and what are their characteristics?
What is the applicability of these models? Or when should each model be applied?
How can we determine which model to be applied?
What are the stages in each of these models?

4. Focus on various stages in SDLC
a. Planning and Project management
b. Requirements Gathering and Analysis
c. Design
d. Implementation
e. Testing
f. Maintenance

5. CMMi Focus
Understand CMMi and its applicability to software development process.
(Read the CMMi spec for this)
"

Incidentally today I was reading an article MIT Sloan Tech Review

http://sloanreview.mit.edu/the-magazine/2012-winter/53208/winning-the-race-with-ever-smarter-machines/

It's always nice to understand the fundamental forces that drive evolution.

Will the exponential growth in computing power continue?
What are the limits of the computing power in terms of problems it can solve?

Think.

Friday, February 10, 2012

Good software & a Good software engineer

1. What is good a software?
2. Who is a good software engineer?

I asked these to a set of guys who had wanted to learn about software project management. The simplicity of the answers is similar to the one about happiness. Thus it also resonates with the idea that the most important/fundamental things are most simple; yet, many of us are unaware of those answers.

If I don't know what good software is; how could I develop good software?

Thursday, January 05, 2012

Thoughts about Happiness

What is the definition of happiness nowadays? Is happiness attained through enjoyment? Is happiness a state of the sensory organs or the mind? Is the stimulation of sensory organs necessary to be happy?

With the twisted definition of attaining happiness through enjoyment/stimulation of sensory organs we have run amok. We don't realize that we would end up needing perpetual stimulation to be in continuous state of happiness when we rely on attaining happiness through stimulation of sensory organs. This is highly impossible.

Hence the only way to be perpetually happy is to have sense of contentment & happiness in the mind.

Tuesday, August 09, 2011

Trend Spotting

Cyclical things happen in all parts of life. There are mega trends and there are minor cyclical trends within those mega trends. The frequency depends on which cycle we are referring to.

The mistake that we make is usually we may find the mega trend or micro trend that is prevailing but fail to notice the other. The events that keep happening are a combination of both these trends. So we get surprised when events happen contrary to the trend that we are observing. If we stitch together all the contrary things - we may find the other trend that we are missing.

May appear like some gyan. Most observations are :-). So feel happy to read, forget or read & think.

Saturday, August 06, 2011

Learning again the computer science & engineering stuff

Feels like breathing fresh air during a morning walk on a tree lined avenue.

From the days of my engineering almost 14 years, the computing technology has evolved to a great extent. The fundamental principle of thermodynamics that the entropy of a system keeps increasing leads to ever increasing complexity however much we try. By creating a new way of doing things or finding new thing, we add to intellectual complexity as we have one more item to consider. These new things implicitly lead to more complex systems. For that matter "ignorance is bliss" is a truism. The key to understand is that these new things essentially create new paths and hence add to combinatorial explosion. If these new things completely replaced existing ITEMS (yes, plural), then these reduce the complexity.

I don't think that happens as the technology itself accelerates to the creation of new items.

Why such a long preamble?

Because The thought that we are already in the era of parallel processing at mobile phone level hit me hard. The multicore computing systems would possibly now require almost everybody to be aware of the parallel processing (guys please forget concurrent processing). These will change computation in fundamental ways because till date all computation except in the research areas has been single core. All system software, & application software is geared towards it. The OS concepts that we learnt talked about CPU scheduling for only one processor.

The parallel processing is a whole new learning for me as I need to go back and relearn the concepts of parallel processing. I was always a big fan of very nice multithreading support in Java and loved to create multi-threaded programs. (I remember one incident - our team wrote a multi-threaded data transfer as well as processing application so well that whenever it used to run, it pushed the CPU usage to 100% and that caused crisis saying that we are hogging the CPU time without letting other applications to run - How can that happen on a preemptive multi-tasking system I couldn't fathom :-)). So I love to see what is left to be done yet at the level of applications. This definitely will need extensions to all language libraries with implementations of parallel versions of algorithms to make full use of current day desktop computers.

Similarly the need to process massive quantities of data is leading to the need of everybody to become aware of the concept of distributed computing.

I am headlong in to learning these new things so that I don't become a dinosaur. Yes, I have become pretty good at managing, but without the knowledge of current day evolving trends I would not be able to compete with the best. I always wish to compete and create best results and win.

The idea of looking at these trends which are very powerful and beautiful is exhilarating and refreshing.

Sunday, February 13, 2011

Symbolism - Cobra with opened hood (No I am not brain dead yet :-))

It all began with me and my wife going in to a restaurant previous weekend when I was visiting her. There we chanced upon the Chinese predictions for the people born under the signs of various animals. For the uninitiated it is important to know that like all ancient cultures Chinese also follow a calendar based on Moon and each year is named after an animal in a predefined set of animals. The people born in these years are thought to manifest the nature ascribed to the animal.

Then, when we were through our dinner, my wife started asking why snakes are considered wise beings? I did not have a definitive answer. Today suddenly a moth fell in to the glass of milk I was drinking and died. It made me look through the symbolic meaning. While looking at that, i read about snakes open hood being used as a symbol of offense by Egyptian pharaohs. in Hindu mythology lord Vishnu sleeps on a bed formed by the curling body of 1000 hooded serpent named Adishesha. Here, snake with open hood is a symbol of security and shelter.

Suddenly it flashed to me that the opened hood of a cobra very gracefully combines both the offensive and defensive natures. It is what the rulers must do and must be like. Punish the wrong doers and protect the pious. It is what the wise people do.

Now I believe I know why snakes and among them the cobra is held in such high regard.

Sunday, January 23, 2011

Living

Life is about living happily. To live happily we need peace within our heart. This is more than enough. Let us realize this & give up on all egoistic pursuits which bring nothing but misery.

Saturday, January 08, 2011

Curtains and life

I was looking at the closed curtains in my house; suddenly i realized, they don't let the outsiders see what is inside, but at the same time also prevent the light from streaming in and making the house look bright. Our lives are also like this, we may be closed and guarded with a feeling of security, but at the same time prevent the inflow of knowledge & wisdom that helps us get better.

Sunday, December 05, 2010

For whose glory?

In the movie Indiana Jones and the Last Crusade the last of the knights guarding the grail asks a very nice question to the people who are eager to lay their hands on the grail. "For whose glory are you seeking the grail; for his glory or yours?".

Software development every day poses this question to the software builder. The person creating the software trying to to show off his knowledge can create immensely complex piece or think what is needed by the end user and make the software that serves the end user needs.

Monday, September 20, 2010

Random thought: What is the value of a film star

If the movie makers can answer the simple question:
1. Do the people come to the movie to watch the star?

If answer is "it is less than 50% probable", then that star is really not a star. So it is better to check if that star is really worth the money.

Most of the times, people go to watch the movie & rarely a star.

Sunday, September 19, 2010

Arishadvarga and path for evolution beyond

It is nice to gain more insight in to what actually will help me to become a better human being. I am supposed to have equanimity with control over kama, krodha, lobha, mada, moha, matsara. It means I retain the capacity to feel these emotions but not driven by these. Not being able to feel any emotion makes me inert. Inertness is not the goal of evolution.

The goal of evolution is to be fully functional with mindfulness. Once I manage the arishadvarga, & learn to be empathetic/loving, I have found what every seeker searches in life.

Insight is good, but practice is what makes a person. Long way to go for me to become a better human being.

Note:
Arishadvarga : 6 categories of enemies on the path of a person's evolution
Ari: Enemy
Varga: Category
Shat: 6

Kama : Desire
Krodha : Anger
Lobha : Greed
Mada : Arrogance
Moha : Attachment
Matsara : Jealousy

Friday, August 27, 2010

Alchemist/Steve Jobs - Achieving Excellence - What are common lessons?

The Alchemist:
•The story of a boy named Santiago. He starts off as a person who wanted to fulfill the wishes of his parents by becoming a priest. On realization of his yearning to see the world, he gets his father to agree to let him realize his wish to roam around. He becomes shepherd. Then dreams of a treasure in Egypt buried near the pyramids. He goes on the journey to find this treasure. Along this journey finds his true love, finds the teacher, learns about the oneness that manifests itself in multitude of forms, learns about letting go, and learns to listen to his heart. He in the process learns to become one with the universe and yet retain his individuality.
•The central message hence is about making the journey and along the way learning to let go of my fears, doing what gives one the happiness, and learning about the unity behind all diversity. This automatically lets the one to realize oneself.

Steve Jobs:
A person born to unwed mother, an adopted child, a college drop out (wanted to graduate in liberal arts), a person with tremendous sense of opportunity, drive to accomplish things, & finally a person with lots of luck. He is a vegetarian, been to India, believes in Zen Buddhism. His sense of aesthetics and minimalism have been the key driver for many usability improvements. He has founded 3 companies Apple, NeXT, & Pixar. He was thrown out of the company that he founded, & then returned to the same company to create iPod+iTunes, iMac, & iPhone.
Ill treated all most all of people worked with & lived with. Why people work with him?
What makes him tick despite idiosyncrasies?
All the people worth their salt really want to do is leave some legacy behind (other than their genes). It pleases them when somebody recognizes and challenges them to achieve what many think is impossible. Steve is the past master in it.
Life As He describes: http://www.freerepublic.com/focus/chat/1422863/posts

What can we learn:

•The key to reaching the goal is moving towards the goal. It is moving in the right direction, but not how fast I move.
•The essence is in doing the things to realize the dreams rather than gaining knowledge about how to realize the dreams (The Englishman trying to master alchemy by reading, but not doing any experiments). Only action or movement takes me towards realizing my goal. (Steve trying to build a CPU without fan)
•Only when I learn to not let the thought of preserving what I already have hinder me, I will start to make progress in gaining something new. This is also the only way to realize my destiny or make progress. I have to move forward from the place where I am starting to walk. I can’t just desire to be in a new place without letting go of my previous place (Boy deciding to move from Oasis to seek his treasure near the Pyramids or for Steve Jobs - Abandoning Lisa, Getting kicked out of Apple etc., starting Pixar They say creative destruction. It is necessary.)
•Everything has a time and a place. I am so jaded by my preconceived notions that I hesitate to use the book as a pillow, but the boy just does that. So I need to see everything with a fresh perspective and see the utility value (Mac without floppy drives)
•I need to seek help when I don’t understand something. Once the help is there, I still need to make my decision (going to Gypsy and then going to Pyramids in search of treasure).
•In time of loss on the path to achieving a goal it is always important to consider how close I have come to achieving the goal rather than how far I am from the goal. I need to be constantly aware of the purpose I started with.
•Once I am able to unlock the message hidden in most simple things like grain of sand I will be able to comprehend whatever is considered the most complex.

Final lessons:

•We tend to believe life is all about
–Having, To Have – We do, To Do – We Live
•Called the To Have -> Do -> Be paradigm

•If we think a bit, it is about
–Being, For Being – Do X, Having is just a side effect
•Called the Being -> Doing -> Having paradigm

•Be -> Feel the passion & joy inside you.
•Be at peace with what you are & what you do.
•Enjoy what you do -> it seems & becomes effortless to you
•When it is effortless results will flow automatically

Trying to create something exceptional makes you/me/us exceptional


•As a company strive to build something extraordinarily good for the end consumer – Leadership in technology, market, & financial world are just the side effects of this.
•As a software engineer enjoy creating a flawless code (NO, flawless code is not an oxymoron J) or creating something simple, useful, usable, & beautiful. For that person, it will translate to better achievements in all other spheres. So ENJOY doing good work and take PRIDE in it.
•If I look at it from Indian perspective – Achieving perfection in performing one’s Dharma automatically leads to good results in the areas of artha, kama, moksha J.
•APART FROM THAT YOU NEED LUCK / GRACE of GOD – Some people have more of it.

Thursday, May 27, 2010

Lessons about living - Finding the better half - Part III

Yes, I got married :-). For finding and once found

1. Your future dreams and common interests matter more than the similar background. - I used to be scared of pursuing girls who were from different regions or from different cultural background as I used to think cultural past would mar the future. Now I can certainly say, it is not the common cultural background, but it is the future dreams and common aspirtaions that matter more.
2. At least once in life we encounter one person who comes closest to our ideals. Then even if I don't say anything everything is known, but realizing that I have found that person and making the move is important. There is only one maxima in life's curve, all others are sub optimal solutions. Don't hesitate at that moment.
3. Don't marry if you don't believe that such thing can exist.
4. Once found listen, accommodate, understand, share with honesty, & talk.

Friday, January 15, 2010

Pandit Ravi Shankar & Tiger Woods :-)

My dear readers,

Compare the lives of Pandit Ravi Shankar & Tiger woods. Chuckle for yourselves. They are a study in contrast. So think, have fun, & learn the way to lead life.

sincerely,
AG

Saturday, January 09, 2010

Lessons about living - Finding the better half - Part II

Found the one. Some things I forgot to write in the first part

1. Being with the person matters & not having the person.
2. Be ready to change / at least modify some behaviors.
3. Usually somehow God makes the paths of people who are supposed to be together cross. At that time we must understand - i used to ignore this. This does not mean i need to chase everybody, but i connect with some people better than others and i know it.
4. Look for happiness & everything else will follow. Don't look for material things and expect happiness to follow. It may happen, but it will always be better to use the principle of putting happiness first.
5. The fear about tomorrow simply evaporates when I am with the right person - yes reality may bite hard, but I don't feel helpless in facing that reality.
6. Mind and heart are two things. Use both. What comes first - no definitive answer. Whatever we choose; should appeal to both - it avoids internal conflict and confusion.

Wish you all a very joyous new year.

Friday, December 25, 2009

The power to choose

What makes us humans so unpredictable is our power to think, power to suppress our instincts, and power to choose. That makes us so different from all other animals and all interactions involving humans so much more complicated. Our emotions and our logic make our actions unpredictable. It is so contrary to our innate understanding :-).

Sunday, December 13, 2009

Random thoughts


What makes me feel great is the spirit to fight relentlessly in the right way. Similary there is so much capacity in human heart to be selfless and do what is right. It is there in every human heart - some places more and some places less. Great things can be accomplished only when they make sense to the heart.

I don't know how many of you have watched a Mandarin movie called Hero - even though there may be very symbolic characteriztion, the sword fighting sequences and background music are etheral. The message "Everything under One Sky" is so simple and yet so profound. It talks about the unity of everything without saying as much. Once we realize this truth, I believe we will stop being "self centered" maniacs. Why do we need a sword? To establish peace. If everybody realizes that peace is the normal state, then suddenly there is no need for sword.

Ok, Ok - I understand. Life is unlike less than 2 hours movie, but there is quite a lot we can learn, if we are ready to listen.