Archive for May, 2010

Synthetic Tracks in India

May 23rd, 2010

Nike has developed a technology, aptly named Nike Grind, that uses recycled material from used athletic shoes and scraps of their manufacturing process to create raw material that can be used to pave sports surfaces including tracks.

It got me thinking, forget creating sports surfaces from recycled material, how many synthetic running tracks do we have in India? Kerala, for instance, has only two — one in Trivandrum and more recently one in Kochi. The one in Trivandrum came up first, was made many years ago and is reportedly in tatters, quite literally, making it unusable. The one in Kochi, having been made recently, is in good condition. What about other states? After many futile searches, I stumbled upon a site that seems to have a list. You can find it here.

Only question is how up to date this list is. Nevertheless it is a a good compilation. In any case, for a country of a billion plus people, 56 synthetic tracks (assuming that all the ones listed here are in good working and usable condition) is abysmally inadequate.

I reproduce the list below:

NO

State

City

Location

1

Andhra Pradesh

Hyderabad

GMC Balayogi Stadium, Gachibowli, Hyderabad

2

Andhra Pradesh

Hyderabad

GMC Balayogi Stadium Practice Track, Gachibowli, Hyderabad

3

Andhra Pradesh

Hyderabad

SVP Police Academy Hyderabad

4

Assam

Guwahati

Indira Gandhi athletic stadium Sarusajai Guwahati

5

Assam

Guwahati

Indira Gandhi athletic stadium Practice track Sarusajai Guwahati

6

Chandigarh

Chandigarh

Sector 46 Sports Complex

7

Chandigarh

Chandigarh

Sector 56 Sports Complex

8

Delhi

Delhi

Nehru Stadium lodi road new delhi

9

Delhi

Delhi

Nehru Stadium Warm up track lodi road new delhi

10

Delhi

Delhi

Tayagraj stadium , New Delhi

11

Delhi

Delhi

Chhatrasal stadium, New Delhi

12

Delhi

Delhi

CWG Games Village , Akshardham Temple

13

Delhi

Delhi

Yamuna Sports Complex East Delhi

14

Goa

Peddem

Peddem Sports Complex

15

Gujrat

Gandhinagar

SAI Western centre Gandhinagar

16

Haryana

Hissar

Ch. Charan Singh Haryana Agriculture University, Hissar

17

Haryana

Sonepat

Motilal Nehru School of Sports, Rai Sonepat

18

Haryana

Panchkula

19

Himachal Pradesh

Dharamshala

20

Himachal Pradesh

Harimpur

Government Degree College, Hamirpur

21

Jharkhand

Jamshedpur

JRD TATA Sports Complex Jamshedpur

22

Jharkhand

Ranchi

National Games Stadium

23

Karnataka

Bangalore

Kanteerava Sports Complex Bangalore

24

Karnataka

Bangalore

SAI Southern Sports Centre Mysore Road Bangalore

25

Karnataka

Belgaum

Nehru Stadium, Belgaum

26

Karnataka

Chitradurga

27

Karnataka

Madikeri

Sports School, Kudige, Kodagu District

28

Karnataka

Mysore

29

Karnataka

Gadak

30

Kerala

Thiruvananthapuram

Kerala University Stadium, Thiruvananthapuram

31

Kerala

Kochi

Maharaja’s College Stadium, Kochi

32

Madhya Pradesh

Bhopal

Tatya Tope Stadium New Market Bhopal

33

Maharashtra

Mumbai

Priyadarshani Park Ground, Nepean Sea Road Malabar Hill Mumbai

34

Maharashtra

Mumbai

SAI Sports Complete Akurli Road Kandivali (E) Mumbai

35

Maharashtra

Mumbai

University Sports Complex , Kalina Mumbai

36

Maharashtra

Pune

Sanas Ground Opp Nehru Stadium Pune

37

Maharashtra

Pune

Shiv Chhatrapati Sports Complex Balewadi Pune

38

Maharashtra

Pune

Shiv Chhatrapati Sports Complex Warm up track Balewadi Pune

39

Maharashtra

Pune

Army Sports Institue Ghorpadi Pune

40

Manipur

Imphal

National Games sports complex Imphal

41

Orissa

Bhubaneshwar

Kalinga Stadium, Bhubaneshwar

42

Punajb

Ludhiana

Guru Nanak Stadium Ludhiana

43

Punajb

Patiala

NSNIS Sports Complex Main Track Patiala

44

Punajb

Patiala

NSNIS Sports Complex Track 2 Patiala

45

Punajb

Tarn Taran

SAI Tarn Taran Stadium

46

Punajb

Mohali

Mohali Sports Complex

47

Rajasthan

Jaipur

Sawai Man Singh stadium, Jaipur

48

Taminadu

Chennai

Nehru Stadium Periamet, Chennai

49

Taminadu

Madurai

District Sports Complex Madurai

50

Taminadu

Coimbatore

Nehru Stadium, Coimbatore

51

Taminadu

Trichy

52

Taminadu

Nagercoil

53

Taminadu

Tirunelveli

54

Uttar pradesh

Lucknow

Guru Govind Singh Sports College Lucknow

55

Uttar pradesh

Lucknow

PAC Stadium Mahanagar Lucknow

56

West Bengal

Kolkata

Salt Lake Sports Stadium Salt lake Kolkata

Member operator vs Nonmember operator

May 23rd, 2010
Member operators vs nonmember operators
As I was recently reviewing some of the concepts of C++, this question popped up. So what is the difference between member operators and nonmember operators?
Well as it turns out there isn’t much of a difference as far as the language is concered, except the additional argument of the object type in the nonmember function implementation. Given an operation on a user-defined type, either the presence of a member or a nonmember operator would suffice to complete the operation. So then why does the language provide the option of choosing between the two?
The answer turned out to be simple.
A member operator is typically used when
- the operator modifies the value of the object to which it is applied, requring it access to the data type’s internal values.
- or the operator requires access to the object’s internal state, represented by data members which are not otherwise accessible (through a public method).
In all other instances a nonmember operator is to be preferred thereby ensuring that there’s less chance of the object’s data members getting iadvertently modified and also reducing the size of the object.
Examples for operators that explicitly modify the state of an object are +=, +-, <<=, etc. These operators are applied to an object an result of the operation is applied to the object to which the operator is applied.
Examples for the second case where member operators are necessary can be found in the standard library. The basic_ostream template class declares the ‘<<’ operator for all basic datatypes except ‘char’ (actually template parameter ‘Ch’) as member operators. This is because output of the charater representation of these datatypes depend on the various ostream state information as set by the user. Examples for these state include output number system (decimal, octal or hexadecimal), precision, width, display of ‘+’ sign, etc.
However, output of the ‘char’ does not require access to any state information. Consequently, ‘<<’ for various ‘char’ types (signed, unsigned, char*, etc) are achieved through nonmember functions such as:
template<class Ch, class Tr>
basic_ostream<Ch, Tr>& operator<<(basic_ostream<Ch, Tr>&, Ch);
So the golden rule to learn is that if an operator can be implemented as a nonmember function, that is perhaps the best way to go as it would have the least impact on the object concered.

As I was recently reviewing some of the concepts of C++, this question popped up. So what is the difference between member operators and nonmember operators?

Well it turns out there isn’t much of a difference as far as the language is concerned (except the additional argument of the object type in the nonmember function implementation). Given an operation on a user-defined type, either the presence of a member or a nonmember operator would be enough. So then why does the language provide the option of choosing between the two?

The answer turned out to be simple.

A member operator is typically used when

  • the operator modifies the value of the object to which it is applied, requring it access to the object’s data members. Or,
  • the operator requires access to the object’s internal state, represented by data members which are not otherwise accessible (through a public method).

In all other instances a nonmember operator is to be preferred. This ensures that there’s that much less chance of the object’s data members getting inadvertently modified (which is only possible from a member method) and at the same time not increasing the size of the object. Refer to 11.3.1, C++ Programming Language, B.Stroustrup.

Examples for operators that explicitly modify the state of an object are +=, +-, <<=, etc. A real world code example:

class complex {
    double real, imag;
public:
    ...
    complex& operator+=(complex& c);
};

Examples for the second case where member operators are necessary can also be found in the standard library. The basic_ostream template class declares the '<<' operator for all basic datatypes except 'char' (actually template parameter 'Ch') as member operators. This is because output of the character representation of these datatypes (which is what the inserter operator accomplishes) depend on the various state information as set by the user. Examples for these state include output number system (decimal, octal or hexadecimal), precision, width, display of '+' sign, etc.
However, the output of  a 'char' does not require access to any state information. Consequently, '<<' for various 'char' types (signed, unsigned, char*, etc) are achieved through a nonmember function such as:


template<class Ch, class Tr>
       basic_ostream<Ch, Tr>& operator<<(basic_ostream<Ch, Tr>&, Ch);

So the golden rule to learn is that if an operator can be implemented as a nonmember function, that is the best way to go as it would have the least impact on the object concerned.

Beta Qt SDK – Installation Issue

May 16th, 2010

I’m back to Qt again. This time prompted by my need for a simple application that will help me learn Chinese that I wanted to write for my cellphone. I have a Nokia N79 and I tried to venture into this adventure last year, but was put off by the S60 SDK and its flavor of ‘limited C++’. However, the announcement by Nokia of their plans to support Qt as the default application development framework for their mobile devices and plans to ship the runtime with the OS has re-kindled my interest in the framework.

Anyway, this is the issue. While installing the Beta Qt SDK, it fails to create the start menu shortcuts. The screenshot of the error is shown below.QtSDKInstallError1

This may very well be because of my peculiar environment. I’m running Vista on VMWare Fusion running on a Mac. For the first couple of shortcuts, I kept trying Retry to no avail. The Nokia Qt SDK –  beta release and the Symbian subfolder are created correctly though.

When I got the error again, I tried this. I created the shortcuts manually (same name as what is being displayed in the error message) from Windows and then tried the Retry option. And it worked just fine. I have posted a comment to a Nokia developer’s blog about this, let’s hope that it’ll get propagated to the right department.