A couple of weeks ago, I'd blogged about learning lessons from life and applying it to other problems you encounter. I'd discussed how one can use principles of "evolution" to design a better comparator.
A follow up thought would be to see if you can apply lessons from life to your own life. I happened to scan through Robin Sharma's book "The Greatness Guide". One of the ideas mentioned there is that "Greatness" in life can be achieved through "evolution". You can read more of his thoughts on the topic in his article "Greatness by Evolution Vs Revolution".
I'm wondering if design groups could benefit from adapting the "Evolution" approach in their design process. A lot of us tend to change just about everything in a design from one generation to the next. I've also observed that there are some groups of people who tend to take the "Evolution" approach. Usually such people keep many things about their design the same from one "Generation" to another and restrict changes to a few target areas. It is also seen that the groups that do that are more successful than groups that take the "Change Everything" approach.
From a project management perspective, the "Evolution" approach makes a lot of sense. It is a good way to keep risks under control. Schedules are far more likely to be better predicted.
The "Change Everything" approach is believed to be superior since we tend to think that it is a good way to make large improvements. Is that really true? Is it better to be working on the problem to identify a way to get the same improvement with the least possible set of changes? Could innovators make such a change to their attitude to significantly improve the odds of success? Can projects with audacious goals be better executed by breaking them down into "Generations" which improve over time?
Just some thoughts. It would be interesting to see they make a difference in real life.
Saturday, August 22, 2009
Thursday, August 6, 2009
Genetic Algorithms in the Design of Comparators.
Successive Approximation ADCs use a low noise multi-stage auto-zeroed comparator to perform the conversion process. The delay introduced by the comparator limits the throughput achieved by the converter. The power dissipated by the comparator forms a significant portion of the power dissipation of the ADC. In this blog, I investigate an iterative procedure which considers the parameters of the gain stages used in the comparator as “genes” and uses a process of “natural selection” to identify an “improved” design.
A typical gain stage of the comparator uses a differential MOS input pair, a pair of MOSFETs to cascode the input pair, a tail current source and load resistors These basic parameters of the gain stage are parameterized. The comparator contains five such gain stages all of which have been parameterized. In addition, the design uses a couple of extra capacitors. These capacitors are also parameterized. There are about 22 parameters in the design all of which can take different values.
The iteration procedure used is as follows. I start off with a design that is reasonably close to what I want. This part of the design procedure is not automated and was performed by me. The set of 22 parameters I’ve chosen become the basis for the rest of the iterative process. A genome is a combination of the 22 parameters that go into the actual circuit. A new set of 23 genomes are generated by randomly changing one parameter in each of the new “genomes” from the base genome. Simulations are performed on all 23 circuits.
A cost function is setup to evaluate which of these 23 circuits is the “best”. I’ve used an equation of the form Noise/noise + Delay/delay + Power/power + gain/Gain as the function that evaluates these circuits where Noise, Delay, Power, Gain are the desired values and noise, delay, power, gain are results from the actual circuit. The best of these circuits is chosen by simply making a numeric comparison based on the results of the simulations on these circuits.
The best of the 23 circuits then becomes the new base design. The best genome is taken as the new base genome and changed again at random. This process is repeated multiple times. I wrote a PERL script to perform the iterations. Spice3 performs the circuit simulations and a wrapper is used to extract the results. The PERL script reads the output of the wrapper script and computes the “cost function” that represents an “evaluation” of the circuit.
The iteration picks the best out of all the trials performed. It is therefore obvious that the “cost function” will keep on increasing after an iteration representing a better circuit each time. It should also be noted that there is no such thing as convergence in these iterations. Iteration simply produces a faster or a lower noise or a lower power or a higher gain comparator. One can also expect any iteration to just produce a marginally better comparator. The compounded effect of multiple iterations is to produce a significantly better comparator.
It might be useful to set up the “evaluation” function to set a limit on how good any given parameter gets by clamping the value used in the function to its desired value. Such a limit would make designs in which one parameter improves beyond desired levels to not be reported as better which should result in choices that improve the other parameters to be chosen. For example, there is not much to be gained by having the comparator’s gain increase beyond “Gain”. Values above “Gain” should result in the gain/Gain ratio being limited to 1.
A random process like this is also likely to continue doing things that are “easy” to do. If it is “easier” to achieve increase in gain through random changes than to improve some of the other parameters, the process might just keep increasing the gain rather than try to improve the other parameters. The “limiting” function in the evaluator also helps to stop this “run” away trend in the iterative process.
The design I tried this on had six parameters that were important. Two Noise (Targets = 25 and 6), Power (Target = 900), Two delays (Target = 15 and 20) and Gain (Target = 80). The table below shows how the design performed through the iterative process. I let the PERL script run 20 iterations through the design and looked at the measured parameters.
It can be seen from the table above that the initial steps mostly resulted in the gain parameter being improved. It can also be seen that most of the target parameters of the design are close to their desired values.
I investigated this approach after reading/hearing a couple of suggestions from others which I thought I should investigate. The first one is from Donald Knuth in “The Art of Computer Programming” in the context of improved searching algorithms. His comment was that “life” gives you good examples of how to build a good search algorithm. The second comment is from Steve Jones in the lecture “Is Human Evolution Over?” where he outlines how “Natural Selection” was used to build a better Nozzle. The approach used there was to just change 10 things at random; evaluate the nozzles; pick the best and repeat the process multiple times. The Wikipedia entry on "Evolution Strategy" relates to the application of such a principle to optimization problems. I’m simply applying these suggestions to the problem of designing a better comparator.
The second suggestion is very easily seen to be sensible and does work quite well when applied to the problem of designing a comparator. You do get a better comparator each time you go through the process. The iterations do pick up some improvements which appear to accumulate as the process is repeated.
The other part is what one can learn from the changes that these iterations have made (which I guess is how one should read Knuth’s comment).
The iterative process just picks up “improvements” along the way. The process might pick up different “improvements” when run again. The process does appear to pick up similar “improvements” when run multiple times though. Looking at these changes should give the designer some thoughts on how to “optimize” or “improve” the design.
One interesting trend that I noticed was in relation to the size of the input pairs. I’d used 48, 6, 6, 6 and 6 fingers in the five gain stages in the original design. The iterative process appears to prefer fingers which reduce first and increase later. For example, sequences like 48, 4, 2, 6, and 8 for the five stages appear to be thrown up at the end of most runs using the original design. This does make a fair bit of sense. The initial stages have very little signal and should see the least possible load to amplify the signals faster. There is a point beyond which the signals become large. Subsequent stages are better off at driving larger gain stages which also result in higher overall gain.
The trend with the tail currents is very similar to the input pair sizes. The base design used 400, 160, 40, 40 and 40 as the tail currents. The iterative process appears to modify these to 440, 120, 60, 90 and 90. A lesson one could learn from this is probably that the currents in the gain stages should drop towards the “middle” of the cascade and increase beyond that point. The final gain stages are very likely to be slewing all the time.
A typical gain stage of the comparator uses a differential MOS input pair, a pair of MOSFETs to cascode the input pair, a tail current source and load resistors These basic parameters of the gain stage are parameterized. The comparator contains five such gain stages all of which have been parameterized. In addition, the design uses a couple of extra capacitors. These capacitors are also parameterized. There are about 22 parameters in the design all of which can take different values.
The iteration procedure used is as follows. I start off with a design that is reasonably close to what I want. This part of the design procedure is not automated and was performed by me. The set of 22 parameters I’ve chosen become the basis for the rest of the iterative process. A genome is a combination of the 22 parameters that go into the actual circuit. A new set of 23 genomes are generated by randomly changing one parameter in each of the new “genomes” from the base genome. Simulations are performed on all 23 circuits.
A cost function is setup to evaluate which of these 23 circuits is the “best”. I’ve used an equation of the form Noise/noise + Delay/delay + Power/power + gain/Gain as the function that evaluates these circuits where Noise, Delay, Power, Gain are the desired values and noise, delay, power, gain are results from the actual circuit. The best of these circuits is chosen by simply making a numeric comparison based on the results of the simulations on these circuits.
The best of the 23 circuits then becomes the new base design. The best genome is taken as the new base genome and changed again at random. This process is repeated multiple times. I wrote a PERL script to perform the iterations. Spice3 performs the circuit simulations and a wrapper is used to extract the results. The PERL script reads the output of the wrapper script and computes the “cost function” that represents an “evaluation” of the circuit.
The iteration picks the best out of all the trials performed. It is therefore obvious that the “cost function” will keep on increasing after an iteration representing a better circuit each time. It should also be noted that there is no such thing as convergence in these iterations. Iteration simply produces a faster or a lower noise or a lower power or a higher gain comparator. One can also expect any iteration to just produce a marginally better comparator. The compounded effect of multiple iterations is to produce a significantly better comparator.
It might be useful to set up the “evaluation” function to set a limit on how good any given parameter gets by clamping the value used in the function to its desired value. Such a limit would make designs in which one parameter improves beyond desired levels to not be reported as better which should result in choices that improve the other parameters to be chosen. For example, there is not much to be gained by having the comparator’s gain increase beyond “Gain”. Values above “Gain” should result in the gain/Gain ratio being limited to 1.
A random process like this is also likely to continue doing things that are “easy” to do. If it is “easier” to achieve increase in gain through random changes than to improve some of the other parameters, the process might just keep increasing the gain rather than try to improve the other parameters. The “limiting” function in the evaluator also helps to stop this “run” away trend in the iterative process.
The design I tried this on had six parameters that were important. Two Noise (Targets = 25 and 6), Power (Target = 900), Two delays (Target = 15 and 20) and Gain (Target = 80). The table below shows how the design performed through the iterative process. I let the PERL script run 20 iterations through the design and looked at the measured parameters.
Noise1 Noise2 Power Delay1 Delay2 Gain
28.5 6.5 871.3 16.9 23 71.4
28.4 6.5 880.6 16.6 22.9 73
28.2 6.5 918.6 16 22.6 77.9
28.4 6.3 918.7 15.9 22.2 77.2
27.6 5.9 918.4 16.1 22.5 78.4
27.4 5.9 937.6 15.8 22.3 81.4
27.8 5.9 937.5 15.4 22.3 81.4
28.1 5.9 897.9 15.5 22.4 79.7
28.4 5.9 897.8 15.4 22 79.6
28.1 5.9 917.2 15.1 22 82
27.9 5.9 917.1 15.1 22 82.6
28.1 5.9 917.1 15 22 82.6
28 5.9 917.1 15 22 82.7
28.3 5.9 917.1 15 21.6 81.8
28 5.9 936.8 14.8 21.6 83.7
27.4 5.9 956.5 14.7 21.6 84.8
25.8 5.9 976.6 14.7 21.5 83.9
25.1 5.9 976.7 14.8 21.7 83.6
25.3 5.9 976.7 14.7 21.7 83.6
24.9 5.8 986.7 14.7 21.7 83.8
It can be seen from the table above that the initial steps mostly resulted in the gain parameter being improved. It can also be seen that most of the target parameters of the design are close to their desired values.
I investigated this approach after reading/hearing a couple of suggestions from others which I thought I should investigate. The first one is from Donald Knuth in “The Art of Computer Programming” in the context of improved searching algorithms. His comment was that “life” gives you good examples of how to build a good search algorithm. The second comment is from Steve Jones in the lecture “Is Human Evolution Over?” where he outlines how “Natural Selection” was used to build a better Nozzle. The approach used there was to just change 10 things at random; evaluate the nozzles; pick the best and repeat the process multiple times. The Wikipedia entry on "Evolution Strategy" relates to the application of such a principle to optimization problems. I’m simply applying these suggestions to the problem of designing a better comparator.
The second suggestion is very easily seen to be sensible and does work quite well when applied to the problem of designing a comparator. You do get a better comparator each time you go through the process. The iterations do pick up some improvements which appear to accumulate as the process is repeated.
The other part is what one can learn from the changes that these iterations have made (which I guess is how one should read Knuth’s comment).
The iterative process just picks up “improvements” along the way. The process might pick up different “improvements” when run again. The process does appear to pick up similar “improvements” when run multiple times though. Looking at these changes should give the designer some thoughts on how to “optimize” or “improve” the design.
One interesting trend that I noticed was in relation to the size of the input pairs. I’d used 48, 6, 6, 6 and 6 fingers in the five gain stages in the original design. The iterative process appears to prefer fingers which reduce first and increase later. For example, sequences like 48, 4, 2, 6, and 8 for the five stages appear to be thrown up at the end of most runs using the original design. This does make a fair bit of sense. The initial stages have very little signal and should see the least possible load to amplify the signals faster. There is a point beyond which the signals become large. Subsequent stages are better off at driving larger gain stages which also result in higher overall gain.
The trend with the tail currents is very similar to the input pair sizes. The base design used 400, 160, 40, 40 and 40 as the tail currents. The iterative process appears to modify these to 440, 120, 60, 90 and 90. A lesson one could learn from this is probably that the currents in the gain stages should drop towards the “middle” of the cascade and increase beyond that point. The final gain stages are very likely to be slewing all the time.
Sunday, August 2, 2009
Thoughts on execution
A set of people working on creating a new product will at times find themselves wondering if they could have "executed" their project better. How does not go about improving execution? What rules and guidelines need to be followed to ensure that the development process is predictable and convergent?
It is important to acknowledge that the "complexity" of any project cannot be completely determined at the start. It is far more common for designers to make things up as they go about designing their products. Most designers are also "innovators" and are likely to generate "ideas" that can improve their design. These innovations also occur during the design process. Most designers would agree that their design ended up being a whole lot different from what they thought it would be at the start of the design cycle.
It is also very likely that "customers" identify changes that would benefit their end design while designers are creating a small part of it. Such changes could also come at any point in the design cycle resulting in changes in the "complexity" of the project during its development.
It is very rare for a product to be designed with just one customer or application in mind. Engineers involved in marketing a product will more often than not identify new "features" that would allow the design to be suitable for more customers and applications during the design process as well. These changes will also occur during the design cycle resulting in significant change in the complexity of the design.
It is possible for designers to limit changes that they cause to the complexity of the project by limiting the number of improvements and changes they make. Designers have very little control over changes that are caused due to new features and requirements being added from customers and marketing.
The challenge facing design groups is to manage the changing complexity of the project within the time that is available for the design process. Quite often designers will complain that the scope of the project changes too much during the design process. Interestingly they don't complain about the changes they've chosen to make. Designers need to be aware that the scope of the project is going to change quite significantly during the development process.
The design process usually has multiple steps. The first of which is to derive a block diagram to show how the design performs the required function. The second step is to create the set of blocks that are required to implement the block diagram. Ideally the last phase of the design cycle should be an optimization phase where each block is "optimized" to perform the function "optimally" in the presence of the other blocks around it.
I've observed that the "optimization" step is taken up early in the design process. This step tends to get repeated every time there is a change in the scope of the project resulting in large cycle time overruns. Premature optimization is an avoidable cause that results in poor execution. I've also noticed that some designer manage this better than others. It is common for such designers to have "automated" the "optimization" process the first time around. This allows them the flexibility to use computers rather than their time to perform the optimization. Computers are clearly better suited for this kind of work than human beings. Some designers are not particularly interested in optimization and would rather focus on methods and topologies. In general teams that have people with such an attitude tend to execute better than the other. Designers of the kind that want to optimize themselves are very likely to cause large delays in project executions. It might be useful to train such people in "automated optimization" techniques.
A variant of "premature optimization" is trying to squeeze the maximum out of a given design too early. This is so easily avoidable and quite frankly adds very little value to the design. In general this sort of "optimization" focusses on second order effects and tries to improve the design by tweaking these effects to "precision". It might be preferable to delay if not entirely avoid such tricks in designs. I find that the time it takes to achieve the "tweaks" is better used inventing a better method or design.
Designers could avoid optimization of their designs in the early part of the design cycle so as to minimize rework. It would be beneficial to use existing designs as well. Reuse in general would require lesser effort and minimize chances of errors.
In general, "high end" projects tend to be very poorly executed. Designers working on such projects tend to make many silly errors. It is quite common for such projects to be over schedule by the time the designer gets things "working" with minor shortcomings. It might be possible that high visibility and the potential for high rewards (self perceived and given by others) tends to diminish the designer's judgement. It is also noticed that management tends to take a liberal view of silly errors in such projects. You can get away with sloppy work on these kind of projects. Management should probably treat errors on face value and deal with them without being prejudiced by the "visibility" that a project has. As Scott Adams says "By Definition, risk-takers fail often. So do Morons. In practice it is difficult to sort them out". It is entirely possible that a smart designer makes dumb mistakes for which he should be held accountable. Holding the designer accountable is probably beneficial to that person in the long run. A consistent approach to dealing with "execution" errors on the part of management will go a long way in improving project execution in all kinds of projects.
It is quite common for designers to think that "pressure" resulting from high visibility causes errors. I happen to think that high "visibility" just causes such errors to be noticed. I think "pressure" in "high end" projects is a result of poor execution and not a cause. It might be useful to focus on the work that needs to be done and not be thinking about the "impact" and/or "results" while working on these kinds of projects. Designers working on high "visibility" projects should be offered a decent support structure. Management should also attempt to ensure that a modest amount of "perspective" is retained. It might be useful to reiterate that these high end projects are in the end just another project. History suggests that such projects rarely end on a high note. A lot of the "visibility" stuff just builds things up making the fall which is inevitable hard to deal with. Keeping morale up through such projects will also require intervention from management. Low morale is certainly a recipe for poor execution.
In a group of people, good "executors" are bound to exist. Management should recognize this trait in these people and ensure that they are rewarded and recognized appropriately for the same. The presence of such people is bound to have an influence on the others in the group. Most designers are capable of learning. It is only reasonable to expect that they will pick some tricks from the good "executors". A good recognition process for these designers will ensure that the group knows where to go for help on the topic of execution.
Clearly this blog is getting too long. I'll just sign off now. I don't think the thoughts presented well either. I'm still organizing my thoughts on the topic.
It is important to acknowledge that the "complexity" of any project cannot be completely determined at the start. It is far more common for designers to make things up as they go about designing their products. Most designers are also "innovators" and are likely to generate "ideas" that can improve their design. These innovations also occur during the design process. Most designers would agree that their design ended up being a whole lot different from what they thought it would be at the start of the design cycle.
It is also very likely that "customers" identify changes that would benefit their end design while designers are creating a small part of it. Such changes could also come at any point in the design cycle resulting in changes in the "complexity" of the project during its development.
It is very rare for a product to be designed with just one customer or application in mind. Engineers involved in marketing a product will more often than not identify new "features" that would allow the design to be suitable for more customers and applications during the design process as well. These changes will also occur during the design cycle resulting in significant change in the complexity of the design.
It is possible for designers to limit changes that they cause to the complexity of the project by limiting the number of improvements and changes they make. Designers have very little control over changes that are caused due to new features and requirements being added from customers and marketing.
The challenge facing design groups is to manage the changing complexity of the project within the time that is available for the design process. Quite often designers will complain that the scope of the project changes too much during the design process. Interestingly they don't complain about the changes they've chosen to make. Designers need to be aware that the scope of the project is going to change quite significantly during the development process.
The design process usually has multiple steps. The first of which is to derive a block diagram to show how the design performs the required function. The second step is to create the set of blocks that are required to implement the block diagram. Ideally the last phase of the design cycle should be an optimization phase where each block is "optimized" to perform the function "optimally" in the presence of the other blocks around it.
I've observed that the "optimization" step is taken up early in the design process. This step tends to get repeated every time there is a change in the scope of the project resulting in large cycle time overruns. Premature optimization is an avoidable cause that results in poor execution. I've also noticed that some designer manage this better than others. It is common for such designers to have "automated" the "optimization" process the first time around. This allows them the flexibility to use computers rather than their time to perform the optimization. Computers are clearly better suited for this kind of work than human beings. Some designers are not particularly interested in optimization and would rather focus on methods and topologies. In general teams that have people with such an attitude tend to execute better than the other. Designers of the kind that want to optimize themselves are very likely to cause large delays in project executions. It might be useful to train such people in "automated optimization" techniques.
A variant of "premature optimization" is trying to squeeze the maximum out of a given design too early. This is so easily avoidable and quite frankly adds very little value to the design. In general this sort of "optimization" focusses on second order effects and tries to improve the design by tweaking these effects to "precision". It might be preferable to delay if not entirely avoid such tricks in designs. I find that the time it takes to achieve the "tweaks" is better used inventing a better method or design.
Designers could avoid optimization of their designs in the early part of the design cycle so as to minimize rework. It would be beneficial to use existing designs as well. Reuse in general would require lesser effort and minimize chances of errors.
In general, "high end" projects tend to be very poorly executed. Designers working on such projects tend to make many silly errors. It is quite common for such projects to be over schedule by the time the designer gets things "working" with minor shortcomings. It might be possible that high visibility and the potential for high rewards (self perceived and given by others) tends to diminish the designer's judgement. It is also noticed that management tends to take a liberal view of silly errors in such projects. You can get away with sloppy work on these kind of projects. Management should probably treat errors on face value and deal with them without being prejudiced by the "visibility" that a project has. As Scott Adams says "By Definition, risk-takers fail often. So do Morons. In practice it is difficult to sort them out". It is entirely possible that a smart designer makes dumb mistakes for which he should be held accountable. Holding the designer accountable is probably beneficial to that person in the long run. A consistent approach to dealing with "execution" errors on the part of management will go a long way in improving project execution in all kinds of projects.
It is quite common for designers to think that "pressure" resulting from high visibility causes errors. I happen to think that high "visibility" just causes such errors to be noticed. I think "pressure" in "high end" projects is a result of poor execution and not a cause. It might be useful to focus on the work that needs to be done and not be thinking about the "impact" and/or "results" while working on these kinds of projects. Designers working on high "visibility" projects should be offered a decent support structure. Management should also attempt to ensure that a modest amount of "perspective" is retained. It might be useful to reiterate that these high end projects are in the end just another project. History suggests that such projects rarely end on a high note. A lot of the "visibility" stuff just builds things up making the fall which is inevitable hard to deal with. Keeping morale up through such projects will also require intervention from management. Low morale is certainly a recipe for poor execution.
In a group of people, good "executors" are bound to exist. Management should recognize this trait in these people and ensure that they are rewarded and recognized appropriately for the same. The presence of such people is bound to have an influence on the others in the group. Most designers are capable of learning. It is only reasonable to expect that they will pick some tricks from the good "executors". A good recognition process for these designers will ensure that the group knows where to go for help on the topic of execution.
Clearly this blog is getting too long. I'll just sign off now. I don't think the thoughts presented well either. I'm still organizing my thoughts on the topic.
Wednesday, July 29, 2009
Dealing with Discontent - Take a vacation.
This is my second blog on the topic of “Dealing with Discontentment”.
I will start off with a quote. “If you want to untie a knot, you must know how you tied it in the first place”. The question that arises is how does one end up being so discontent in the first place?
One thing that becomes a bit more obvious as I think about this is that I have at many times made choices and never bothered to check if they were making me happy. The first choice makes me mildly unhappy. The second one makes is a bit worse and so on. It becomes increasingly obvious that one’s discontent is in a large part a consequence of not making the choices that could have made a difference. In general, we tend to ignore things till they become very big. The problem is that the cost of change is now much higher than it would have been a few years ago. The cost complication makes you persist with bad choices even when it is so obvious that this is a price that has to be paid if you ever want to be happy. The knot is most likely tied when one refuses to make the choices required to achieve happiness.
If you are indeed so unhappy with your job the obvious solution is to make some changes. How can you ever expect to be happy if you do not change? Often I find myself thinking that some miracle will happen and I will somehow find a way to be happy. Regrettably that has not happened to date. I’m wondering if it ever will.
The miracle is actually too easy to actualize. All one needs to do is to stop being complacent and initiate some change in his/her job. Most discontent people will agree that just about any change would make a difference. Most people don’t make any. I have not. It is almost as if one has a compulsive need to be miserable. Is it possible that people who feel miserable will make choices that only compound their misery?
There is a school of thought amongst people who think and reason out why societies and cultures are the way they are that tries to establish similarities between “genes” and how they ensure their own survival and thoughts (also called memes) and how these ensure their own survival. It has been postulated that thoughts that fit in with others that already exist in your mind are more likely to “survive” and find acceptability than the ones that do not fit in. One suggestion that is offered to people who are unhappy with their jobs is to go on vacation. Many people have found that taking a break helps to “clear” their mind enabling them to make the choices that result in increased satisfaction. It is possible that vacations or breaks replace “ideas” and “thoughts” in the mind with others resulting in some choices which were not “suitable” while on the job more acceptable to the mind.
Is it possible that miserable people are a victim of neuro-chemical crap that prevents them from making the changes required? Maybe your mind is super saturated with “misery” chemicals which dilute anything that could results in “satisfaction”.
Is it possible that “discontent” people can find themselves more likely to make the changes required to find “satisfaction” if they take a break from their “jobs”? Is all you need a vacation? Are you perpetuating your discontent by not creating a situation where meaningful changes become acceptable to you?
I will start off with a quote. “If you want to untie a knot, you must know how you tied it in the first place”. The question that arises is how does one end up being so discontent in the first place?
One thing that becomes a bit more obvious as I think about this is that I have at many times made choices and never bothered to check if they were making me happy. The first choice makes me mildly unhappy. The second one makes is a bit worse and so on. It becomes increasingly obvious that one’s discontent is in a large part a consequence of not making the choices that could have made a difference. In general, we tend to ignore things till they become very big. The problem is that the cost of change is now much higher than it would have been a few years ago. The cost complication makes you persist with bad choices even when it is so obvious that this is a price that has to be paid if you ever want to be happy. The knot is most likely tied when one refuses to make the choices required to achieve happiness.
If you are indeed so unhappy with your job the obvious solution is to make some changes. How can you ever expect to be happy if you do not change? Often I find myself thinking that some miracle will happen and I will somehow find a way to be happy. Regrettably that has not happened to date. I’m wondering if it ever will.
The miracle is actually too easy to actualize. All one needs to do is to stop being complacent and initiate some change in his/her job. Most discontent people will agree that just about any change would make a difference. Most people don’t make any. I have not. It is almost as if one has a compulsive need to be miserable. Is it possible that people who feel miserable will make choices that only compound their misery?
There is a school of thought amongst people who think and reason out why societies and cultures are the way they are that tries to establish similarities between “genes” and how they ensure their own survival and thoughts (also called memes) and how these ensure their own survival. It has been postulated that thoughts that fit in with others that already exist in your mind are more likely to “survive” and find acceptability than the ones that do not fit in. One suggestion that is offered to people who are unhappy with their jobs is to go on vacation. Many people have found that taking a break helps to “clear” their mind enabling them to make the choices that result in increased satisfaction. It is possible that vacations or breaks replace “ideas” and “thoughts” in the mind with others resulting in some choices which were not “suitable” while on the job more acceptable to the mind.
Is it possible that miserable people are a victim of neuro-chemical crap that prevents them from making the changes required? Maybe your mind is super saturated with “misery” chemicals which dilute anything that could results in “satisfaction”.
Is it possible that “discontent” people can find themselves more likely to make the changes required to find “satisfaction” if they take a break from their “jobs”? Is all you need a vacation? Are you perpetuating your discontent by not creating a situation where meaningful changes become acceptable to you?
Sunday, July 19, 2009
Dealing with Discontentment.
I happened to read through Ramanujam's blog on the topic of "Discontentment in Gen-X". He does touch upon something that has concerned a great many of us. It is indeed very true that many of us find ourselves totally discontented so early in our lives. I will also happily admit that I happen to be one of those "Discontent" member of Gen-X. I will go a little further to say that "Discontent" is just the start of the process. Some of us are "Disillusioned". Why might that be and what can one do about it.
The word "Discontentment", after I spent some time thinking about it, lays it out very well. We have "filled" our lives up with all the things that we don't need but we thought we did. The "contents" of our "lives" are not the things that bring us happiness. As Ramanujam urges people do need to change the contents of their lives. While this might sound rather easy to do, it is in actuality a very hard thing to do.
It is very important to think about yourself in good detail before you choose how you want to change your life. One thing that I've realized is that at some point in the past, I did choose all the things to fill my life with all the things I have now. I did go wrong once. Actually I went wrong multiple times. I did make some changes which again did not have the desired effect. So, if you think that just changing a few things around is going to make a difference, you are wrong. You will eventually reach the point of "Disillusionment". Before you go any further, ask yourselves if you are just "Discontent" or "Disillusioned". I think it is very important to fail multiple times and actually reach the point of being "Disillusioned". Any changes you make to your life before that are very likely to be poorly thought through.
Here is what I've learned after what appears to be a lifetime of discontent and disillusionment. All choices you make are wrong and are doomed to fail. The problem is that one tends to put the cart before the horse in this situation. I can never pick today what will make me"content" tomorrow simply because when tomorrow comes I'm not the person who picked. How can I know what will make me happy tomorrow? The most I can do is guess. Such an approach relies on my guess being accurate. I have to face the reality that I'm too complicated a person to be predictable. For starters, I'm not a linear system. My reactions to situations are very variable. For instance, how I laugh when I hear a joke is so unpredictable. I've at many times laughed out of control at some jokes and can barely manage a smile at other times. I guess the point I'm trying to make is that any approach that relies on me trying to predict my state in the future is likely to be widely off the mark. As Ramanujam suggests, one needs to shorten the "extrapolation" window and create "milestones" that are not far out in the future. Steve Jobs touches upon this topic rather eloquently in his "Commencement Address at Stanford" with his first story and points out that you actually cannot connect the dots forward. Take the argument to their logical conclusion and you will realize that the only solution to the problem is to be "content" now.
That's not easy. It will probably take you a lot of work to get there. You can start by trying to set yourselves a goal to reach everyday. Start your day off with a simple plan that you will be content if you achieve this today. Continue this process for a while till your mind is conditioned to accept "contentment" based on daily goals. Most of us are so used to thinking so far into the future that being "content" on a moment to moment basis is way too big a leap. I could not help noticing that my baby (only 8 months old) appears to not care for anything beyond the immediate present. I say that just to point out that all of us did have this ability which we have over years lost. It is certainly going to be a challenge to undo years of "conditioning" that has resulted in us being the way we are. I think a lot of patience and efforts will be required.
I also want to add that I cannot say with any certainity that such an approach will work. I don't know that yet. I just happen to want to share my thoughts on the topic. I am by no stretch of imagination an expert here. This blog in any case sounds quite preachy. Please don't take it too seriously. Give it some thought.
The word "Discontentment", after I spent some time thinking about it, lays it out very well. We have "filled" our lives up with all the things that we don't need but we thought we did. The "contents" of our "lives" are not the things that bring us happiness. As Ramanujam urges people do need to change the contents of their lives. While this might sound rather easy to do, it is in actuality a very hard thing to do.
It is very important to think about yourself in good detail before you choose how you want to change your life. One thing that I've realized is that at some point in the past, I did choose all the things to fill my life with all the things I have now. I did go wrong once. Actually I went wrong multiple times. I did make some changes which again did not have the desired effect. So, if you think that just changing a few things around is going to make a difference, you are wrong. You will eventually reach the point of "Disillusionment". Before you go any further, ask yourselves if you are just "Discontent" or "Disillusioned". I think it is very important to fail multiple times and actually reach the point of being "Disillusioned". Any changes you make to your life before that are very likely to be poorly thought through.
Here is what I've learned after what appears to be a lifetime of discontent and disillusionment. All choices you make are wrong and are doomed to fail. The problem is that one tends to put the cart before the horse in this situation. I can never pick today what will make me"content" tomorrow simply because when tomorrow comes I'm not the person who picked. How can I know what will make me happy tomorrow? The most I can do is guess. Such an approach relies on my guess being accurate. I have to face the reality that I'm too complicated a person to be predictable. For starters, I'm not a linear system. My reactions to situations are very variable. For instance, how I laugh when I hear a joke is so unpredictable. I've at many times laughed out of control at some jokes and can barely manage a smile at other times. I guess the point I'm trying to make is that any approach that relies on me trying to predict my state in the future is likely to be widely off the mark. As Ramanujam suggests, one needs to shorten the "extrapolation" window and create "milestones" that are not far out in the future. Steve Jobs touches upon this topic rather eloquently in his "Commencement Address at Stanford" with his first story and points out that you actually cannot connect the dots forward. Take the argument to their logical conclusion and you will realize that the only solution to the problem is to be "content" now.
That's not easy. It will probably take you a lot of work to get there. You can start by trying to set yourselves a goal to reach everyday. Start your day off with a simple plan that you will be content if you achieve this today. Continue this process for a while till your mind is conditioned to accept "contentment" based on daily goals. Most of us are so used to thinking so far into the future that being "content" on a moment to moment basis is way too big a leap. I could not help noticing that my baby (only 8 months old) appears to not care for anything beyond the immediate present. I say that just to point out that all of us did have this ability which we have over years lost. It is certainly going to be a challenge to undo years of "conditioning" that has resulted in us being the way we are. I think a lot of patience and efforts will be required.
I also want to add that I cannot say with any certainity that such an approach will work. I don't know that yet. I just happen to want to share my thoughts on the topic. I am by no stretch of imagination an expert here. This blog in any case sounds quite preachy. Please don't take it too seriously. Give it some thought.
Saturday, July 18, 2009
The Human Head Shake.
Man is a social animal. One expects society to influence human behavior. One might expect people from different societies to behave differently. One behavioral difference that I’ve noticed is that people from India tend to shake their head sideways when they do not agree with something and in expressing their disapproval of an event that they see transpiring. I’ve also observed that people of western origin shake their head back and forth in the same circumstances. Is there a reason why this difference exists? Here is one possible explanation.
Indian mothers feed their babies sitting on the floor, with their legs stretched out. The baby rests in the valley between the mothers leg and faces upwards. The object used to feed the baby which could be a spoon or the mother’s hand approaches the baby sideways. Quite often the baby needs to indicate to the mother that it does not want the food that it is being fed. Sometimes because the baby is just not ready for another mouthful and at other instances because the baby does not like the food. The baby in such a situation naturally expresses this by moving its head away from the feeding hand or spoon. Since the baby’s head rests on the mother’s legs, it is incapable of moving its head backwards. The baby moves its head sideways to communicate with the mother. This would condition the baby to move its head sideways to indicate no.
Western mothers, to the best of my knowledge, feed their babies on a high chair with the mother in front of the baby. The feeding hand or more likely the spoon approaches the baby from the front. The natural evasive action from the baby would be to move its head backwards and forwards. This would condition the baby to move its head backwards and forwards to indicate no.
It is quite likely that this behavior is carried into adult life and could actually also have been adopted by adults who observe this in their babies resulting in a “culture” which shakes the head sideways in one set of people and back and forth in others. Most languages use some form of “ma” and “pa” for the words that mean mother and father since babies appear to make these sounds much before other sounds.
I advance this “explanation” based on my observation of my daughter and what I know of western culture. It would be interesting to see if this is indeed true.
Indian mothers feed their babies sitting on the floor, with their legs stretched out. The baby rests in the valley between the mothers leg and faces upwards. The object used to feed the baby which could be a spoon or the mother’s hand approaches the baby sideways. Quite often the baby needs to indicate to the mother that it does not want the food that it is being fed. Sometimes because the baby is just not ready for another mouthful and at other instances because the baby does not like the food. The baby in such a situation naturally expresses this by moving its head away from the feeding hand or spoon. Since the baby’s head rests on the mother’s legs, it is incapable of moving its head backwards. The baby moves its head sideways to communicate with the mother. This would condition the baby to move its head sideways to indicate no.
Western mothers, to the best of my knowledge, feed their babies on a high chair with the mother in front of the baby. The feeding hand or more likely the spoon approaches the baby from the front. The natural evasive action from the baby would be to move its head backwards and forwards. This would condition the baby to move its head backwards and forwards to indicate no.
It is quite likely that this behavior is carried into adult life and could actually also have been adopted by adults who observe this in their babies resulting in a “culture” which shakes the head sideways in one set of people and back and forth in others. Most languages use some form of “ma” and “pa” for the words that mean mother and father since babies appear to make these sounds much before other sounds.
I advance this “explanation” based on my observation of my daughter and what I know of western culture. It would be interesting to see if this is indeed true.
Thursday, July 16, 2009
A complexity argument against creationism.
I find it rather odd that human beings in the 21st century continue to believe that life is created by a “creator”. I find it even odder that an “argument” as lame as “Intelligent Design” is being touted as a theory worthy of being considered an “alternative” to the rather wonderful “Theory of Evolution” Charles Darwin presented to us about 150 years ago.
The “Intelligent Design Theory” suffers from a simple fallacy that it uses the extreme improbability of the complexities that exist in life forms to increase the probability of a “creator” which is infinitely more complex than any known life. Richard Dawkins does a rather good job of exposing the inadequacies of this theory in his wonderfully readable creation “The God Delusion”. A lot of the modern day “evolutionists” have also pointed out that arguments justifying “creationism” tend to appear from “Gaps” in the knowledge of the process of evolution.
It occurred to me that both “theories” focus on the “qualitative” aspects of life. There is more to life on earth than that. It occurred to me that one should investigate if there are other such aspects where the differences in the two theories can be tested better. For example, could we evaluate the two theories in relation to the “quantitative” aspects of life? Does one theory fare much better than the other?
Once you ask that question, the answer is almost immediate. A “Creationist” view of life requires that a “creator” pick and choose which life exists. This would require that life progress linearly in quantity at a rate determined by the time a “creator” spends in performing an act of creation. The “Evolutionist” view provides life with an ability of increase exponentially in numbers. People familiar with the mathematics of complexity of algorithms would phrase this as “Creation is an algorithm with O (N) complexity while Evolution is an algorithm with O (log (N)) complexity”. Which of the two would stand a chance of justifying the enormous quantity of “life” that exists on earth?
Just how much life exists on earth anyway? For starters there are about 6,000,000,000 of us. There is the rest of the animal kingdom, plants, microbes…More than a million species of life have been identified. I would conservatively put the total number of living things on earth as a number to the order of 1e30.
How does “creationism” fare here? If a creator takes an atto-second (1e-18 seconds) to create one of them, the process would take 1e12 seconds or about 31710 years. I don’t think most of them live that long to make the process work. The smallest known living organism is about 400 nM in size. Light takes about 1e-15 seconds to pass through that. It is a generous concession on my part to postulate that each organism can be “created” in an atto-second.
How about “Evolution”? Clearly evolution allows for species to be created as a result of “genetic modifications” introduced in the process of “reproduction”. Reproduction gives life the ability to increase in quantity “exponentially”. Life can start in small quantities and increase dramatically fast in short time. You can start with a single cell that divides once in a day and reach a large number of cells like 1e30 in about 100 days. A single human egg fertilized with a single sperm through the process of cell division with “modifications” in the cells as appropriate creates a human being with all organs in place in about 9 months. Every one of us is a living example of the power of the process of “Descent with Modification” to result in enormous diversity in “qualitative” as well as “quantitative” aspects of life. Evolution does stand a chance of explaining the enormous quantity of life that exists on earth.
The conclusion you should be coming to is that not all life is “created”. It is still possible for the “Intelligent Design” theory to survive with a modification that some (if not all) speciation is a result of intervention from a “creator”.
I also recognize that a lot of “religious” people will take offense at the conclusions that I have drawn. I wish to say the following to them. I’ve very consciously avoided using the word “God” through the discussion above with the exception of where I’ve cited the title of Richard Dawkins’s book. I consider myself to be a deeply religious person. I’ve at multiple instances in my life been struck with awe with the benevolence that abounds in nature. I cannot but come to the conclusion that there is much that I’ve to be grateful for. “God” to me is the face I put on “benevolence”. I do visit places of worship (when I can) and find myself thanking “God” for all that I’ve been given. I do however find that “religion” reduces “God” to such pettiness that I’m unable to accept as a means to express one’s gratitude. I don’t understand why any human would deem it appropriate to require “God” to match his “Beliefs”. Would a “benevolent” “God” not deem is appropriate to let life be?
The “Intelligent Design Theory” suffers from a simple fallacy that it uses the extreme improbability of the complexities that exist in life forms to increase the probability of a “creator” which is infinitely more complex than any known life. Richard Dawkins does a rather good job of exposing the inadequacies of this theory in his wonderfully readable creation “The God Delusion”. A lot of the modern day “evolutionists” have also pointed out that arguments justifying “creationism” tend to appear from “Gaps” in the knowledge of the process of evolution.
It occurred to me that both “theories” focus on the “qualitative” aspects of life. There is more to life on earth than that. It occurred to me that one should investigate if there are other such aspects where the differences in the two theories can be tested better. For example, could we evaluate the two theories in relation to the “quantitative” aspects of life? Does one theory fare much better than the other?
Once you ask that question, the answer is almost immediate. A “Creationist” view of life requires that a “creator” pick and choose which life exists. This would require that life progress linearly in quantity at a rate determined by the time a “creator” spends in performing an act of creation. The “Evolutionist” view provides life with an ability of increase exponentially in numbers. People familiar with the mathematics of complexity of algorithms would phrase this as “Creation is an algorithm with O (N) complexity while Evolution is an algorithm with O (log (N)) complexity”. Which of the two would stand a chance of justifying the enormous quantity of “life” that exists on earth?
Just how much life exists on earth anyway? For starters there are about 6,000,000,000 of us. There is the rest of the animal kingdom, plants, microbes…More than a million species of life have been identified. I would conservatively put the total number of living things on earth as a number to the order of 1e30.
How does “creationism” fare here? If a creator takes an atto-second (1e-18 seconds) to create one of them, the process would take 1e12 seconds or about 31710 years. I don’t think most of them live that long to make the process work. The smallest known living organism is about 400 nM in size. Light takes about 1e-15 seconds to pass through that. It is a generous concession on my part to postulate that each organism can be “created” in an atto-second.
How about “Evolution”? Clearly evolution allows for species to be created as a result of “genetic modifications” introduced in the process of “reproduction”. Reproduction gives life the ability to increase in quantity “exponentially”. Life can start in small quantities and increase dramatically fast in short time. You can start with a single cell that divides once in a day and reach a large number of cells like 1e30 in about 100 days. A single human egg fertilized with a single sperm through the process of cell division with “modifications” in the cells as appropriate creates a human being with all organs in place in about 9 months. Every one of us is a living example of the power of the process of “Descent with Modification” to result in enormous diversity in “qualitative” as well as “quantitative” aspects of life. Evolution does stand a chance of explaining the enormous quantity of life that exists on earth.
The conclusion you should be coming to is that not all life is “created”. It is still possible for the “Intelligent Design” theory to survive with a modification that some (if not all) speciation is a result of intervention from a “creator”.
I also recognize that a lot of “religious” people will take offense at the conclusions that I have drawn. I wish to say the following to them. I’ve very consciously avoided using the word “God” through the discussion above with the exception of where I’ve cited the title of Richard Dawkins’s book. I consider myself to be a deeply religious person. I’ve at multiple instances in my life been struck with awe with the benevolence that abounds in nature. I cannot but come to the conclusion that there is much that I’ve to be grateful for. “God” to me is the face I put on “benevolence”. I do visit places of worship (when I can) and find myself thanking “God” for all that I’ve been given. I do however find that “religion” reduces “God” to such pettiness that I’m unable to accept as a means to express one’s gratitude. I don’t understand why any human would deem it appropriate to require “God” to match his “Beliefs”. Would a “benevolent” “God” not deem is appropriate to let life be?
Subscribe to:
Posts (Atom)
