DAtum

EDA, Software and Business of technology
Greek, 'loxos: slanting. To displace or remove from its proper place
da·tums A point, line, or surface used as a reference


                        ... disruption results in new equilibria


Rise and Shine

6/30/2005
I have been promoted - to Lead Engineer.

Free beer today !!
del.icio.us Tags:

Read more!

|

Attitudes towards leadership : Asia, America Europe

An interesting article, over at Harvard Business School - Working Knowledge got me thinking.. or rather reminiscing. The author, Prof. Quinn Mills, talks about differences and/or similarities in management and leadership styles between different continents, and therefore different cultures.
The three predominant styles of management come from Asia, America and Europe. But perhaps this is not illustrative enough. Let me rephrase it - the three pre-dominant styles of management are the Hong-Kong/Japanese, United States and Franco-German . Perhaps, I am not qualified (or as I like to put it, polluted) enough to pepper my thought with manager-ese jargon, but based on my working experience on three continents, I would say this would be the case.
But before going further, let me clarify what does not constitute an individual style of management. For example India - we do not have a style of management that is entirely our own, unless of course you would like to classify the bania style of management (what with its glib way of talking into and out of situations). I believe that the pre-liberal India had a a leadership which is not too uncommon across the world. This is what we call babu-dom and the rest of the world calls bureaucratic. In other words, there was no leadership. Increasingly, we have been influenced by the American way of working, not in small part because a large number of expatriates worked in America and among other things, built the frikking Silicon Valley.
On the other end of Asia, there is the Hong Kong-Japanese way of leadership. Japan has a style of leadership (Howard Stringer of Sony non-withstanding) that is to a large part influenced by its feudalistic society. I, of course, refer to the Zaibatsu and Keiretsu systems. I believe that the Hong-Kong/China systems of large businesses have increasingly followed this approach. With it comes a highly stratified system of management (what I believe Prof. Mills calls Directive Leadership). However, this brings in itself a sufficient lack of adaptability. I believe the Indian leadership, with its touch of Asian discretion and mixing business and personal life, along with sufficient individualism (which leads to what the good professor calls Empowering leadership) bridges the continents beautifully.
However, I take exception to the fact that political ties are less common in Asian businesses. If anything, they are more so. This is usually because the corporate process is often much more opaque in Asia, which leads executives to seek political intervention on several issues. Take for example the issue about Reliance Industries and the CDMA/GSM war in India. There was heavy multi-party political influences.
Which leads the remaining style of leadership - the Franco-German. A style which you are born into. This style is getting increasingly threatened by the scales of efficiency and production driven management. It is rare to see European companies laying of workers. However, ST Microelectronics, a French-Italian company is cutting jobs in Europe while increasing positions in Asia. If anything else, this is a change in the thinking of European leadership who view Asia as a threat to their way of privelege.
I think the world is adapting to the Asian-American way of leadership, with its peculiar brand of passion towards work, late night pizzas and an Asian sense of respect and honor towards work and peers.
Tikka burgers anyone?


del.icio.us Tags:

Read more!

|

Why I cant be a good industrialist...yet

6/28/2005
This comes fresh off the horse's mouth - my manager.

  • Due diligence - Get an attitude about mastering whatever you are working on. If you are buying a piece of land, understand the direction of wind, water table beneath your feet, the number of cows in the area. Good businessmen cultivate an attitude to do their homework thoroughly before doing anything. Risk taking comes much later.



  • Learn to gauge people - At a glance understand what his strengths and weaknesses are. A consistent attempt to understand people must be made ..what makes them tick.



  • An attitude towards money - make every rupee count. There must be an attitude to push each rupee to its maximum. It is OK if you lose everything, but there cannot be a situation where you dont know why you lost that money.



  • Failure is not an option. Always, always, always get the job done.




These wont hold me back. Not for too fucking long.

del.icio.us Tags:

Read more!

|

From startup to... sundown: comments on viral marketing

6/27/2005
There's a great post by the kind people of Drake Investing. It is a highly condensed, in-a-nutshell view of what goes through an angel investor's mind throughout a pitch.
A common vein that I see in many VC/angel communiques is the keyword 'viral'. It is one of the two oft-abused jargon (the other being 'long-tail'). I have written before about how things get viral. It is a common perception that exclusivity breeds popularity. Kind of a oxymoron...but is there any truth in it?

This article in Always-On may provide a clue. The first step towards generating a viral buzz is to harness the power of the collective intelligence - the early-movers who have an ephemera of interest long enough to comment on it, write a passing mention to it. Identifying and targeting these people would be the starting point towards generating a word-of-mouth momentum.
For example consider the 'Pirillo Effect' - the founder of Lockergnome is famous for searching out mentions of his name and posting comments (earlier days I hope!!). It is entirely an effort to try and pinpoint the early-movers who would later help him to become a blogosphere celebrity. And guess what, it worked.
Though such marketing tactics work well (and are well desired by investors) for eyeball-retentive businesses, they might be off target for more mainstream businesses. For example, while it is quite understandable that Gmail generate a buzz by maintaining the facade of exclusivity to penetrate the already overcrowded email arena, I do not believe Salesforce.com would do as well employing similar tactics. That is because the channels of intelligence that potential customers of Salesforce subscribe to, are not mainstream. Instead they depend on single, focused sources of information, a.k.a Engadget, Extremetech, etc. Listening to feedback from such sources, may be passed off as listening to the community.
This was employed by Microsoft RSS team when theymodified their spec in response to Phil Ringnalda - a move which earned them accolades.
Of course, the Scobleizer helped too... but more on that next time.


del.icio.us Tags:

Read more!

|

Function pointers: number of parameters mismatch

6/20/2005
Here is a strange quirk of gcc - It ignores number-of-parameter mismatch if we use function pointers, if and only if we pass more arguments than necessary.
Consider the following piece of code



#include <stdio.h>

typedef int (*myFunc)(int a, int b);
int func1(int a){
printf("In func1 \n");
}

int func2(int a, int b){
printf("In func2 \n");
}

void executeFunc(myFunc someFunc ){
//void executeFunc(void* someFunc ){
myFunc actualFunc=someFunc;
actualFunc(1,2);
//actualFunc(1,2);

}

main(){
executeFunc((myFunc)func1);

}







As you can see, I am actually calling "func1", which takes one argument. However,I am actually passing two arguments. The code works fine.
Strangely enough, the other way does'nt work - i.e.



#include <stdio.h>

typedef int (*myFunc)(int a, int b);
int func1(int a){
printf("In func1 \n");
}

int func2(int a, int b){
printf("In func2 \n");
}

void executeFunc(myFunc someFunc ){
//void executeFunc(void* someFunc ){
myFunc actualFunc=someFunc;
actualFunc(1,2);
//actualFunc(1);

}

main(){
executeFunc((myFunc)func2);

}







The above piece of code calls "func2", which actually takes two arguments with only one parameter. Compilation fails in this case.
What is more puzzling is that, in case I had called "func1" directly (without going through all the function-pointers thing), it gives a compilation error of (too many arguments). I can deduce that gcc is doing checking w.r.t the "typedef" in the beginning, but given that ordinarily a function cannot be called with too many arguments, should'nt this be disallowed?
6.3.2.2 of C89 (which correspondsto 6.5.2.2 of C99) states that:

If the expression that denotes the called function has a type that includes a prototype, the number of arguments shall agree with the number of parameters


Which brings me to another "feature" of C vs C++. Consider the following function:



#include <stdio.h>

int func3(int a){
return 1;

}

main(){
func3(1,2,3);
}





This gives a compilation error with both "gcc" and "g++" about too many arguments.
However, consider the following piece of code:



#include <stdio.h>

int func3(){
return 1;

}

main(){
func3(1,2,3);
}





This gives no error with "gcc", but an error with "g++". Apparently, in c++, a function declared with no arguments is taken as void, whereas in c, it is simply unknown.

Does gcc have a soft-spot for function parameters with too many arguments?

Only time or maybe Raymond Chen can tell.


del.icio.us Tags:

Read more!

|

People in EDA can cook!!!

6/13/2005
A great site - EDA Confidential, written by Peggy Aycinena (editor of EDA Nation).
Today's special - may I recommend the EDA Confidential Cook-off, served with a side of Letters to the Editor.

del.icio.us Tags:

Read more!

|

Constructors vs function declarations...and Koenig lookups

6/12/2005
A very curious incident happened with compilation today.
"but nothing happened...."

That was the curious incident.

Consider the piece of code below:




#include <iostream>
using namespace std;
class A{
public:
A() {_i=5;}
~A(){cout<<"Destroying A"<<endl;}
int _i;
};
class B: public A{
public:
B() {}
~B(){cout<<"Destroying B"<<endl;}

};

main(){
A a( B() );
cout<<a._i;
}





Now normally, I would think that everything is all right. My expected screen output is:

"Destroying A"
"Destroying B"
"Destroying A" (its inherited)

However, there is no screen output.
To further investigate, let us try to access a member variable "_i" of A.
The compiler squeals:
>>constructor.cpp: In function 'int main()'
>>constructor.cpp: error: request for member '_i' in 'a', which is of non-class type 'A()(B(*)())

"non-class"?? Very strange. What's even more strange is the way that the constructor parameters to A are interpreted - as pointer to functions.

Now, we know for a fact that STL uses functors, so let's try something like this with them.


#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Functor1{
public:
void operator ()(int i){ }
};
main(){
vector<int> vv;

for_each(vv.begin(), vv.end(), Functor1());

}



STL has no problem.

Actually, in the first case, C++ interprets A a() as local declaration of a function 'a' with return type A. One of a long threads in the "comp.lang.c++.moderated" newsgroups speaks about this dichotomy.

among one of the workarounds posted is this :


//A a=A( B() );


Which brings us to the motivations behind programmers declaring functions in local scope. One of the possible reason is to hide an overloaded function declaration. For example, in the following example, the local function declaration overrides the global function declaration:



#include <iostream>

void f(int i) { std::cout << "int=" << i << '\n'; }
void f(short s) { std::cout << "short=" << s << '\n';}

int main()
{
f(1); // calls f(int)
void f(short);
f(1); // fooled you!

}



However this can be taken care of, by using Koenig lookup - which works only if there are namespaces or classes to be resolved (I dont think it works for primitive types).



#include <iostream>

class X{};
void f(X x, int i) { std::cout << "int=" << i << '\n'; }
void f(X x, short s) { std::cout << "short=" << s << '\n';}
int main()
{
X x1;

f(x1,1); // calls f(int)
void f(X x, short);
f(x1,1); // fooled you!

}



Thaks to PK for this !!!




del.icio.us Tags:

Read more!

|

Lead generation and definition

6/07/2005
Great post by Susan Getgood about lead generation and definition.
I think this is the primary point of mud-slinging between sales and marketing. In addition to what Susan says, Brian Carroll writes brilliantly about a universal lead definition.
del.icio.us Tags:

Read more!

|