PETITIONER: VELLORE CITIZENS WELFARE FORUM Vs. RESPONDENT: UNION OF INDIA & ORS. DATE OF JUDGMENT: 28/08/1996 BENCH: KULDIP SINGH, FAIZAN UDDIN, K. VENKATASWAMI ACT: HEADNOTE: JUDGMENT:
THE 28TH DAY OF AUGUST, 1996 Present:
Hon'ble Mr. Justice Kuldip Singh Hon'ble Mr. Justice Faizan Uddin Hon'Ble Mr, Justice K. Venkataswami R. Mohan, V.A. Bobde, Kapil Sibal, M.R. Sharma, V.C. Mahajan, and S.S. Ray, Sr. Advs., K.R.R. Pillai, M.C. Mehta, Ms. Seema Midha, V.G. Pragasam, Vijay Panjwani, S. Sukumaran, Sudhir Walia, A.T.M. Sampath, M.S. Dahiya,(Sudhir Walia, Roy Abraham, Advs. for Sm. Baby Krishna, P. Sukumar, Praveen Kumar, Romesh C. Pathak M.A. Krishnamurthy, V. Krishnamurthy, Mrs. Anil Katiyar, Ms. Indra Sawhney, Deepak Diwan, S.M, Jadhev, A.V. Rangam, Zafarullah Khan, Shahid Rizvi, Shakil Ahmed Syed, Jaideep Gupta and Sanjay Hegde, Advs. with them for the appearing parties.
J U D G M E N T The following Judgment of the Court was delivered:
J U D G M E N T Kuldip Singh, J..
This petition - public interest - under Article 32 of the Constitution of India has been filed by Vellore Citizens Welfare Forum and is directed against the pollution which is being caused by enormous discharge of untreated effluent by the tanneries and other industries in the State of Tamil Nadu . It is stated that the tanneries are discharging untreated effluent into agricultural fields to, road-Sides, Water ways and open lands. The untreated effluent is finally discharged in river Palar which is the main source of water supply to the residents of the area. According to the petitioner the entire surface and sub-soil water of river Palar has been polluted resulting in non availability Potable water to the residents of the area. It is stated that the tanneries in the State of Tamil Nadu have caused environmental degradation in the area. According to the preliminary survey made by the Tamil Nadu Agricultural University Research Center Vellore nearly 35,000 hectares of agricultural land in the Tanneries Belt, has become either partially or totally unfit for cultivation. It has been further stated in the petition that the tanneries use about 170 types of chemicals in the chrome tanning processes. The said chemicals include sodium chloride, lime, sodium sulphate, chlorium sulphate, fat liquor Amonia and sulphuric acid besides dyes which are used in large quantities. Nearly 35 litres of water is used for processing one kilogram of finished leather, resulting in dangerously enormous quantities of toxic effluents being let out in the open by the tanning industry. These effluents have spoiled the physico-chemical properties of the soil, and have contaminated ground water by percolation. According to the petitioner an independent survey conducted by Peace Members, a non governmental organisation, covering 13 villages of Dindigal and Peddiar Chatram Anchayat Unions, reveals that 350 wells out of total of 467 used for drinking and irrigation purposes have been polluted.  Legal Aid and Advice Board of Tamil Nadu requested two lawyers namely, M.R, Ramanan and P.S. Subramanium to visit the area and submit a report indicating the extent of pollution caused by the tanneries. Relevant part of the report is as under :
"As per the Technical Report dated 28.5.1983 of the Hydrological Investigations carried out in Solur village near Ambur it was noticed that 176 chemicals including acids were contained in the Tannery effluents. If 40 litres of water with chemicals are required for one Kilo of Leather, with the production of 200 tons of leather per day at present and likely to be increased multifold in the next four to five years with the springing up of more tanneries like mushroom in and around Ambur Town, the magnitude of the effluent water used with chemicals and acids let out daily can be shockingly imagined. ..... The effluents are let out from the tanneries in the nearby lands, then to Goodar and Palar rivers. The lands, the rivulet and the river receive the effluents containing toxic chemicals and acids. The sub soil water is polluted ultimately affecting not only arable lands, wells used for agriculture but also drinking water wells. The entire Ambur Town and the villages situated nearby do not have good drinking water. Some of the influential and rich people are able to get drinking water from a far off place connected by a few pipes. During rainy days and floods, the chemicals deposited into the rivers and lands spread out quickly to other lands. The effluents thus let out, affect cultivation, either crops do not come up at all or if produced the yield is reduced abnormally too low. ........ The Tanners have come to stay. The industry is a Foreign Exchange Earner. But one moot point is whether all the cost of the lives of lakhs of people with increasing human population the activities of the tanneries should be encouraged on monetary considerations. We find that the tanners have absolutely no regard for the healthy environment in and around their tanneries. The effluents discharged have been stored like a pond openly in the most of the places adjacent to cultivable lands with easy access for the animals and the people. The Ambur Municipality, which can exercise its powers as per the provisions of the Madras District Municipalities Act (1920) more particularly under Sections 226 to 231, 249 to 253 and 338 to 342 seems to be a silent spectator probably it does not want to antagomise the highly influential and stupendously rich tanners. The powers given under Section 63 of the Water Prevention and Control of Pollution Act 1974 (6 of 1974) have not been exercised in the case of tanneries in Ambur and the surrounding areas."
Alongwith the affidavit dated July 21, 1992 filed by Deputy Secretary to Government, Environment and Forests Department of Tamil Nadu, a list of villages affected by the tanneries has been attached. The list mentions 59 villages in the three Divisions of Thirupathur, Vellore and Ranipath. There is acute shortage of drinking water in these 59 villages and as such alternative arrangements were being made by the Government for the supply of drinking water.
In the affidavit dated January 9, 1992 filed by Member Secretary, Tamil Nadu Pollution Control Board (the board), it has been stated as under :
"It is submitted that there are 584 tanneries in North Arcot Ambedkar District vide annexure 'A' and 'D'. Out of which 443 Tanneries have applied for consent of the Board. The Government were concerned with the treatment and disposal of effluent from tanneries. The Government gave time upto 31.7.1985 to tanneries to put up Effluent Treatment Plant (E.T.P.). So far 33 tanneries in North Arcot Ambedkar District have put up Effluent Treatment Plant. The Board has stipulated standards for the effluent to be disposed by the tanneries."
The affidavits filed on behalf of State of Tamil Nadu and the Board clearly indicate that the tanneries and other polluting industries in the State of Tamil Nadu are being persuaded for the last about 10 years to control the pollution generated by them. They were given option either to construct common effluent treatment plants for a cluster of industries or to set up individual pollution control devices. The Central Government agreed to give substantial subsidy for the construction of common effluent treatment plants (CETPs). It is a pity that till date most of the tanneries operating in the State of Tamil Nadu have not taken any step to Control the Pollution caused by the discharge of effluent. This Court on MAY 1, 1995 passed a detailed order. In the said order this Court noticed various earlier orders passed by this Court and finally directed as under :
"Mr. R. Mohan, learned senior counsel for the Tamil Nadu Pollution Control Board has placed before us a consolidated statement dividing the 553 industries into three parts. The first part in Statement No.1 and the second part in Statement No.2 relate to those tanneries who have set up the Effluent Treatment Plants either individually or collectively to the satisfaction of the Tamil Nadu Pollution Control Board. According to the report placed on the record by the Board, these industries in Statements 1 and 2 have not achieved the standard or have not started functioning to the satisfaction of the Board. So far as the industries in Statements 1 and 2 are concerned, we give them three months notice from today to complete the setting up of Effluent Treatment Plant (either individually or collectively) failing which they shall be liable to pollution fine on the basis of their past working and also liable to be closed. We direct the Tamil Nadu Pollution Control Board to issue individual notices to all these industries within two weeks from today. The Board is also directed to issue a general notice on three consecutive days in a local newspaper which has circulation in the District concerned.
So far as the 57 tanneries listed in Statement III (including 12 industries who have filed writ petition, Nos. of which have been given above) are concerned, these units have not installed and commissioned the Effluent Treatment Plants despite various orders issued by this Court from time to time. Mr. R. Mohan, learned senior counsel appearing for Tamil Nadu Pollution Control Board states that the Board has issued separate notices to these units directing them to set up the Effluent Treatment Plants. Keeping in view the fact that this Court has been monitoring the matter for the last about four years and various orders have been issued by this Court from time to time, there is no justification to grant any further time to these industries. We, therefore, direct the- 57 industries listed hereunder to be closed with immediate effect. ...... We direct the District Collector and the Senior Superintendent of Police of the District to have our orders complied with immediately. Both these Officers shall file a report in This Court within one week of the receipt of the order. We give opportunity to these 57 industries to approach this ' court as and when any steps towards the setting up of Effluent treatment Plants their plants and their commissioning have been taken by these industries. If any of the industries wish to be relocated to some other area they may come out with a proposal in that respect :
On July 28,1995 this Court suspended the closure order in respect or seven industries mentioned therein for a period of eight weeks. It was further observed as under:
"Mr. G . Ramaswamy, learned senior advocate appearing for some of the tanneries in Madras states that the setting up of the effluent treatment plants is progressing satisfactorily. According to him several lacs have already been spent and in a short time it would start operating. Mr. Mohan, learned counsel for the Tamil Nadu Pollution Control Board will inspect that project and file a report by 3rd August, 1995".
This Court on September 8, 1995 passed the following order :
"The Tamil Nadu pollution Control Board relates to about 299 industries stated by M.G. Ramaswamy, Mr. Kapil Sibal and Mr. Sanghi, learned senior advocates appearing f for these industries, that the setting up of projects is in progress. According to the learned counsel Tamil Nadu Leather Development Corporation (TALCO) is in charge of the project. The learned counsel state that the project shall be completed in every respect within 3 months from today. The details of these industries and the projects undertaken by TALCO as per list No. I is as under...... We are of the view that it would be in the interest of justice to give a little more time to these industries to complete the project. Although the industries have asked time for three months, we give them time till 31st December, 1995. We make it clear that in case the projects are not completed by that time, the industries shall be liable to be to be closed forthwith. Apart from that, these industries shall also be liable to pollution fine for the past. period during which they had been operating. We also take this opportunity to direct TALCO to take full interest in these projects and have the projects completed within the time granted by us.
Mr. Kapil Sibal, learned counsel appearing for the tanneries, stated that Council, for Indian Finished Leather Manufacturers Export Association is a body which is collecting 5% on all exports. This body also helps the tanneries in various respect. We issue notice to the Association to be present in this Court and assist this Court in all the matters pertaining to the leather tanneries in Madras. Mr. Sampath takes notice .
So far as List No. II is concerned, it relates to about 163 tanneries (except M/s. Vibgyor Tanners & Co., Kailasagiri Roads, Mittalam-635 811 Ambur (via), The Pollution Control Board has inspected all these tanneries and placed its report before us. According to the report mosts of these tanneries have not even started primary work at spot. Some of them have not even located the land. The tanneries Should have themselves set, up the pollution control devices right at time when they started working. They have not done so. They are not even listening to various orders passed by this Court from time to time during the last more than 2 years. It is on the record that these tanneries are polluting the area. Even the water around the area where they are operating is not worth drinking. We give no further time to these tanneries. We direct all the following tanneries which are numbering about 162 to be closed with immediate effect.
It may be mentioned that this Court suspended the closure orders in respect of various industries from time to time enable the said industries to install the pollution control devices.
This Court by the order dated October 20, 1995 directed the National Environmental Engineering Research Institute, Nagpur (NEERI) to send a team of experts to examine, in particular, the feasibility of setting up of CETPs for cluster of tanneries situated at, different places in, the State of Tamil Nadu where the work of setting up of the CETPs has not started and also to inspect the existing CETPs including those where construction work was in progress . NEERI submitted its first report on December 9, 1995 and the second report on February 12, 1996. This Court examined the two reports and passed the following order on April 9, 1996:
"Pursuant to this Court's order dated December 15, 1955, NEERI has submitted Final Examination Report dated February 12, 1996, regarding CETPs constructed/under construction by the Tanneries in various districts of the State of Tamil Nadu. A four member team constituted by the Director, NEERJ inspected the CETPs from January 27 to February 12, 1996. According to the report, at present, 30 CETPs sites have been identified for tannery clusters in the five districts of Tamil Nadu viz., North Arcot Ambedkar, Erode Periyar, Dindigul Anna, Trichi and Chengai M.G.R. All the 30 CETPs are inspected by the Team. According to the report, only 7 CETPs are under operation, while 10 are under construction and 13 are proposed. The following 7 ETPs are under operation:
1. M/s. TALCO Ranipet Tannery Effluent Treatment Co. Ltd. Ranipet, Dist. North Arcot Ambedkar. 2. M/s. TALCO Ambur Tannery Effluent Treatment Co. Ltd.,
Thuthipet Sector, Ambur Dist. North Arcot Ambedkar.
3. M/s. TALCO Vaniyambadi Tanners Enviro Control Systems Ltd., Vaniyambattu, Vaniyambadi, Dt. North Arcot.
4. M/s. Pallavaram Tanners Industrial Effluent Treatment Co., Chrompet Area, Dist. Chengai) MGR.
5. M/s. Ranipet SIDCO Finished Leather Effluent Treatment Co. Pvt. Ltd., Ranipet, Dist. North Arcot Ambedkar.
6. M/s. TALCO Vaniyambadi Tanners Enviro Control Systems Ltd. Udayendiram, Vaniyambadi, Dist. North Arcot Ambedkar.
7. M/s. TALCO Pernambut Tannery Effluent Treatment Co. Ltd., Bakkalapalli, Pernambut, Dist. North Arcot Ambedkar.
The CETPs mentioned at Sl. Nos. 5, 6 & 7 were commissioned in January, 1996 and were on the date of report passing through stabilization period. The report indicates that so far as the above CETPs are concerned, although there is improvement in the performance they are still not operating at their optimal level and are not meeting the standards as laid down by the Ministry of Environment and Forests and the Tamil Nadu Pollution Control Board for inland surface water discharge. The NEERI has given various recommendations to be followed by the above mentioned units. We direct the units to comply with the recommendations of NEERI within two months from today. The Tamil Nadu Pollution Control Board shall monitor the directions and have the recommendations of the NEERI complied with. So far as the three units which are under stabilization, the NEERI Team may inspect the same and place a final report before this Court within the period of two months.
Apart from the tanneries which are connected with the above mentioned 7 units, there are large number of other tanneries operating in the 5 districts mentioned above which have not set up any satisfactory pollution control devices. Mr. Mohan learned counsel for the Tamil Nadu Pollution Control Board states that notices were issued to all those tanneries from time to time directing them to set up the necessary pollution control devices. It is mandatory for the tanneries to set up the pollution control devices. Despite notices it has not been done. This Court has been monitoring these matters for the last about 4 years. There is no awakening or realisation to control the pollution which is being generated by these tanneries. The NEERI has indicated the physico-chemical characteristics of ground water from dug wells near tannery clusters. According to the report, water samples show that well-waters around the tanneries are unfit for drinking. The report also shows that the that the quality of water in Paler river down stream from the place where effluent is discharged, is highly polluted. We, therefore, direct that all the tanneries in the districts of North Arcot Ambedkar, Erode Periyar, Dindigul Anna, Trichi and Chengai M.G.R which are not connected with the seven CETPs mentioned above, shall be closed with immediate effect. None of these tanneries shall be permitted to operate till the time the CETPs are constructed to the satisfaction of the Tamil Nadu Pollution control Board. We direct the District Magistrate and the Superintendent of Police of the area concerned, to have all these tanneries closed with immediate effect. Mr. Mehta has placed on record the report of Tamil Nadu Pollution Control board. In Statement I of the Index, there is a list of 30 industries which have also not been connected with any CETPs. According to the report, these industries have not, till date set up pollution control devices. We direct the closure of these industries also. List is as under. ..... The Tamil Nadu Pollution Control] Board has filed another report dated January 18, 1996 pertaining to 51 Tanneries. There is dispute regarding the permissible limit of the quantity of total dissolved solids (TDS). Since the NEERI team is visiting these tanneries, they may examine the TDS aspect also and advise this Court accordingly. Meanwhile, we do not propose to close any of the tannery on the ground that it is discharging more than 2001 TDS. The report indicates that except the 17 units, all Other units are non-complaint units in the sense that they are not complying with the BOD standards. Excepting these 17 industries the remaining 34 tanneries listed hereunder are directed to be closed forthwith. ..... We direct the District Magistrate and the Superintendent of the Police of the area concerned to have all these industries mentioned above closed forthwith The tanneries in the 5 districts of Tamil Nadu referred to in this order have been operating for a longtime. Some of the tanneries are operating for a period of- more than two decades. All this period these tanneries have been, polluting the area. Needless to say that the total environment in the area has been polluted the area. Needless issue show cause notice to these industries through their learned counsel who are present in Court why they be not subjected to heavy pollution fine. We direct the state of Tamil Nadu through the Industry Ministry, the Tamil Nadu Pollution Central Board and all other authorities concerned and also the Government of India through the Ministry of Environment and Forests not to permit the setting up of further tanneries in the State of Tamil Nadu.
Copy of this order be communicated to the concerned authorities within three days. To come up for further consideration after the replies to the show cause. There are large number of tanneries in the State of Tamil Nadu which have set up individual pollution control devices and which according to the Tamil Nadu Pollution Control Board are operating satisfactorily. The fact however remains that all these tanneries are discharging the treated efficient within the factory precinct itself. We direct NEERI Team which is visiting this area to find out as to whether the discharge of the effluent on the land within the factory premises is permissible environmentally. M/s. Nandeem Tanning Company, Valayampet Vaniyambadi is one is one of such industries. Copy of the report submitted by the Tamil Nadu Pollution Control Board be forwarded to the NEERI. NEERI may inspect this industry within ten days and file a report in this Court. Copy of this order be communicated to NEERI.
Matter regarding Distilleries in the State of Tamil Nadu.
The Tamil Nadu Pollution Control Board has placed on record the factual report regarding Distilleries mentioned in page 4 of the Index of its report dated April 5, 1996. Learned counsel for the Board states that the Board shall issue necessary notices to these industries to set up pollution control devices to the satisfaction of the Board, failing which these distilleries shall be closed. The Pollution Control Board shall place a status report before this Court."
The NEERI submitted two further reports on may 1, 1996 and June 11, 1996 in respect of CETPs set up by various industries. The NEERI reports indicate that the physico- chemical characteristics of ground water from dug wells in Ranipath, Thuthipath, Valayambattu, Vandyambadi and various other places do not conform to the limits prescribed for drinking purposes.
This Court has been monitoring this petition for almost five years. The NEERI, Board and the Central Pollution Control Board (Central Board) have visited the tanning and other industries in the State of Tamil Nadu for several times. These expert bodies have offered all possible assistance to these industries. The NEERI reports indicate that even the seven operational CETPs are not functioning to its satisfaction. NEERI has made several recommendations to be followed by the operational CETPs. Out of the 30 CETP- sites which have been identified for tannery clusters in the five districts of North Arcot Ambedkar, Erode Periyar, Dindigul Anna, Thrichi and Chengai MGR. are under operation 10 are under construction and 13 are proposed. There are large number of tanneries which are not likely to be connected with any CETP and are required to set up pollution control devices on their own. Despite repeated extensions granted by this Court during the last five years and prior to that by the Board the tanneries in the State of Tamil Nadu have miserably failed to control the pollution generated by them.
It is no doubt correct that the leather industry in India has become a major foreign exchange earner and at present Tamil Nadu is the leading exporter of finished leather accounting for approximately 80% of the country's export. Though the leather industry is of vital importance to the country as it generates foreign exchange and provides employment avenues it has no right to destroy the ecology, degrade the environment and pose as a health hazard. It cannot be permitted to expand or even to continue with the present production unless it tackles by itself the problem of pollution created by the said industry.
The traditional concept that development and ecology are opposed to each of her, is no longer acceptable. "Sustainable Development is the answer. In the International sphere "Sustainable Development" as a concept came to be known for the first time in the Stockholm Declaration of 1972. Thereafter, in 1987 the concept was given a definite shape by the World Commission on Environment and Development in its report called Court Common Future. The Commission was chaired by the then Prime Minister of Norway Ms. G.H. Brundtland and as such the report is popularly known as "Brundtland Report" 1991 the World Conservation Union, United Nations Environment Programme and World Wide Fund for Nature, jointly came out with a document called "Caring for the Earth" which is a strategy for sustainable living. Finally, came the Earth Summit held in June, 1992 at Rio which saw the largest gathering of world leaders ever in the history - deliberating and chalking out a blue pring for the survival of the planet. Among the tangible achievements of the Rio Conference was the signing of two conventions, one on biological diversity and another on climate change. These conventions were signed by 153 nations. The delegates also approved by consensus three non binding documents namely, a Statement on Forestry Principles a declaration of principles on environmental policy and development and initiatives and Agenda 21 a programme of action into the next century in areas like poverty, population and pollution. during the two decades from Stockholm to Rio "sustainable Development" and came to be accepted as a viable concept to eradicate poverty and improve the quality of human life while living within the carrying capacity of the supporting eco-systems. "sustainable Development: as defined by the Brundtland Report means "Development that meets the needs of the present without compromising the ability of the future generations to meet their own needs". We have no hesitation in holding that "Sustainable Development' As a balancing concept between eclogy and development has been accepted as a part of the Customary International Law though its salient feature have yet to be finalised by the International Law Jurists.
Some of the salient principles of "Sustainable Development", as culled-out from Brundtland Report and other international documents, are Inter-Generational Equity, Use and Conservation of Nature Resources, Environmental Protection, the Precautionary Principle, Polluter Pays principle, Obligation to assist and cooperate, Eradication of Poverty and Financial Assistance to the developing countries. We are, however, of the vies that "The Precautionary Principle" and "The Polluter Pays" principle are essential features of "Sustainable Development". The "Precautionary Principle" - in the context of the municipal law - means.
(i) Environment measures - by the State Government and the statutory Authorities must anticipate, prevent' and attack the causes of environmental degradation.
(ii) Where there are threats of serious and irreversible damage lack of scientific certainly should not be used as the reason for postponing, measures to prevent environmental depredation.
(iii)The "Onus of proof" is on the actor or the developer/industrial to show that his action is environmentally benign.
"The Polluter Pays" principle has been held to be a sound principle by this Court Indian Council for Enviro- Legal Action vs. Union of India J.T. 1996 (2) 196. The Court observed, "We are of the opinion that any principle evolved in this 'behalf should be simple practical and suited to the conditions obtaining in this country". The Court ruled that "Once the activity carried on is hazardous or inherently dangerous, the person carrying on such activity is liable to make good the loss caused to any other person by his activity irrespective of the fact whether he took reasonable care while carrying on his activity. The rule is premised upon the very nature of the activity carried on". Consequently the polluting industries are "absolutely liable to compensate for the harm caused by them to villagers in the affected area, to the soil and to the underground water and hence, they are bound to take all necessary measures to remove sludge and other pollutants lying in the affected areas". The "Polluter Pays" principle as interpreted by this Court means that the absolute liability for harm to the environment extends not only to compensate the victims of pollution but also the cost of restoring the environmental degradation. Remediation of the damaged environment is part of the process of "Sustainable Development" and as such polluter is liable to pay the cost to the individual sufferers as well as the cost of reversing the damaged ecology.
The precautionary principle and the polluter pays principle have been accepted as part of the law of the land. Article 21 of the Constitution of India guarantees protection of life and personal liberty. Articles 47, 48A and 51A(g) of the Constitution are as under:
"47. Duty of the State to raise the level of nutrition and the standard of living and to improve public health. The State shall regard the raising of the level of nutrition and the standard of living of its people and the improvement of public health as among its primary duties and in particular, The State shall endeavour to bring about prohibition of the consumption except for medicinal purposes of intoxicating drinks and of drugs which are injurious to health. 48A. (g) Protection and improvement of environment and safeguarding of forests and wild life. The State shall endeavour to protect and improve the environment and to safeguard the forests and wild life of the country.
51A.(g) To protect and improve the natural environment including forests, takes, rivers and wild life, and to have compassion for living creatures."
Apart from the constitutional mandate to protect and improve the environment there are plenty of post independence legislations on the subject but more relevant enactments for our purpose are: The Water (Prevention and Control of Pollution Act 1974 (the Water Act), The Air (Prevention and Control of Pollution) Act, 1981 (the Air Act) and the Environment Protection Act 1986 (the Environment Act). The Water Act provides for the constitution of the Central Pollution Control Board by the Central Government and the constitution of one State Pollution Control boards by various State Governments in the country. The Boards function under the control of the Governments concerned. The Water Act prohibits the use or streams and wells for disposal of polluting matters. Also provides for restrictions on outlets and discharge of effluents without obtaining consent from the Board. Prosecution and penalties have been provided which include sentence of imprisonment. The Air Act provides that the Central Pollution Control Board and the State Pollution Control Boards constituted under the later Act shall also perform the powers and functions under the Air Act. The main function of the Boards, under the Air Act, is to improve the quality of the air and to prevent. control and abate air pollution in the country. We shall deal with the Environment Act in the later part of this judgement.
In view of the above mentioned constitutional and statutory provisions we have no hesitation in holding that the precautionary principle and the polluter pays pcinciple are part of the environmental law of the country.
Even otherwise once these principles are accepted as part of the Customary International Law there would be no difficultly in accepting them as part of the domestic law. It is almost accepted proposition of law that the rule of Customary International Law which are not contrary to the municipal law shall be deemed to have been incorporated in the domestic law and shall be followed by the Courts of Law. To support we may refer to Justice H.R. Khanna's opinion in Addl. Distt. Magistrate Jabalpur vs Shivakant Shukla (AIR 1976 SC 1207) Jolly George Varghese's case (AIR 1980 SC 470) and Gramophone Company's case (AIR 1984 SC 667).
The Constitutional and statutory provision protect a persons right to fresh air, clean water and pollution free environment, but the source of the right is the inalienable common law right of clean environment. It would be useful to quote a paragraph from Blackstone's commentaries on the Laws of England (Commentaries on the Laws of England of Sir Willian Blackstone) Vol.III, fourth edition published in 1876. Chapter XIII, "Of Nuisance" depicts the law on the subject in the following words :
"Also, if a person keeps his hogs, or other noisome animals, 'or allows filth to accumulate on his premises, so near the house of another, that the stench incommodes him and makes the air unwholesome, this is an injurious nuisance, as it tends to deprive him of the use and benefit of his house. A like injury is, if one's neighbour sets up and exercises any offensive trade; as a tanner's, a tallow chandler's, or the like; for though these are lawful and necessary trades, yet they should be exercised in remote places; for the rule is, sic utere "tuo, ut alienum non laedas;" this therefore is an actionable nuisance. 'And on a similar principle a constant ringing of bells in one's immediate neighbourhood may be a nuisance ....... With regard to other corporeal heriditaments; it is a nuisance to stop or divert water that used to run to another's meadow or mill; to corrupt or poison a water-course, by erecting a due house or a lime-pit, for the use of trade, in the upper part of the stream; 'to pollute a pond. from which another is entitled to water his cattle: to obstruct a drain; or in short to do any act in common property, that in its consequences must necessarily tend to the prejudice of one's neighbour. So closely does the law of England enforce that excellant rule of gospel-morality, of "doing to others. as we would they should do unto ourselves ."
Our legal system having been founded on the British Common law the right of a person to pollution free environment is a part of the basic jurisprudence of the land.
The Statement of Objects and Reasons to the Environment Act, inter alia, states as under :
"The decline in environmental quality has been evidenced by increasing pollution, loss of vegetal cover and biological diversity, excessive concentrations of harmful chemicals in the ambient atmosphere and in food chains, growing risks of environmental accidents and threats to life support systems. The world community's resolves to protect and enhance the environmental quality found expression in the decisions taken at the United Nations Conference on the Human Environment held in Stock hold in June, 1972. Government of India participated in the Conference and strongly voiced the environmental concerns. While several measures have been taken for environmental protection both before and after the Conference, the need for a general legislation further to implement the decisions of the Conference has become increasingly evident ...... Existing lass generally focus on specific types of pollution or on specific categories of hazardous substances. Some major areas of environmental hazardous are not covered. There also exist uncovered gaps in areas of major environmental hazards. There are inadequate linkages in handling matters of industrial and environmental safety. Control mechanisms to guard against slow, insidious build up of hazardous substances, especially new chemicals, in the environment are weak. Because of a multiplicity of regulatory agencies, there is need for an authority which can. Assume the lead role for studying, planning and implementing long-term requirements of environmental safety and to give direction to, and co-ordinate a system of speedy and adequate response to emergency situations threatening the environment ...... In view of what has been state above, there is urgent need for the enactment of a general legislation on environmental protection which inter alia, should enable co- ordination of activities of the various regulatory agencies, creation of an authority or authorities with adequate powers for environmental protection, regulation of discharge of environmental pollutants and handling of hazardous substances, speedy response in the event of accidents threatening environment and deterent punishment to those who endanger human environment, safety and health".
Sections 3, 4, 5, 7 and 8 of the Environment Act which are relevant are as under :
"3. Power of Central Government to take measures to protect and improve environment - (1) Subject to the provisions of this Act the Central, Government shall have till power to take all such measures as it deems necessary or expedient for the purpose of protecting improving the quality of the environment and preventing controlling and abating environmental pollution. (2) In particular, and without prejudice to the Generality of the provisions of section (1), such measures may include measures with respect to all or any of the following matters, namely :-
(i) co-ordination of actions by the State Governments, officers and other authorities -
(a) under tis Act, or the rules made thereunder, or
(b) under any other law for the time being in force which is relatable to the objects of this Act;
(ii) planning and execution of a nation-wide programme for the prevention, control and abatement of environmental pollution;
(iii) laying down standards for the quality of environment in its various aspects;
(iv) laying down standards for the emission or discharge of environmental pollutants from various sources whatsoever : Provided that different standards for emission or discharge may be laid down under this clause from different sources having regard to the quality or composition of the emission or discharge of environmental pollutants from such sources :
(v) restriction of areas in which any industries, operation or processes or class of industries, operations or processes shall not be carried out or shall be carried out object to certain safeguards;
(vi) laying down procedures and safeguards for the prevention of accidents which may cause environmental pollution and remedial measures for such accidents;
(vii) lying down procedures and safeguards for the handling of hazardous substances;
(viii) examination of such manufacturing processes, materials and substances as are likely to cause environmental pollution;
(ix) carrying out and sponsoring investigations and research relating to problems of environmental pollution;
(x) Inspection of any premises, plant, equipment, machinery, manufacturing or other processes, material or substances and giving, by order, of such direction to such authorities, officers or persons as it may consider necessary to take steps for the prevention, control and abatement of environmental pollution;
(xi) establishment or recognition or environmental laboratories and institutes to carry out the functions entrusted to such environmental laboratories and institutes under this Act;
(xii) collection and dissemination of information in respect of matters relating to environmental pollution;
(xiii) preparation of manuals, codes or guides relating to the prevention, control and abatement of environmental pollution;
(xiv) such other matters as the Central Government deems necessary or expedient for the purpose of securing the effective implementation of the provisions of this Act.
(3) The Central Government may, if it considers it necessary or expedient so to do for the purposes of this Act, by order, published in the powers and functions (including the power to issue directions under Section 5 ) of the Central Government under this act and for taking measures with respect to such of the matters referred to in sub-section (2) as may be mentioned in the order and subject to the supervision and control of the Central government and the provisions of such order, such authority or authorities may exercise the powers or perform the functions or take the measures so mentioned in the order as if such authority or authorities had been empowered by this Act to exercise those powers or perform those functions or take such measures.
4. Appointment or officers and their powers and functions (1) without prejudice to the provisions of sub-section (3) of section 3, the Central Government may appoint officers with such designations as it thinks fit for the purposes of this Act and may entrust to them such of the powers and functions under this Act as it may deem fit. (2) The officers appointed under sub-section (1) shall be subject to the general control and direction of the Central Government or, if so directed by that Government, also of the authority or authorities, if any, constituted under sub-section (3) of section 3 of any other authority or officer".
5. Power to give directions. - Notwithstanding anything contained in any other law but subject to the provisions of this Act, the Central Government may, in the exercise of its powers and performance of its functions under this Act, issue direction in writing to any person, officer or any authority and such person, officer or authority shall be bound to comply with such directions.
Explanation. - for the avoidance of doubts, it is hereby declared that the power to issue directions under this section includes the power to direct ---
(a) the closure, prohibition or regulation of any industry, operation or process; or
(b) stoppage or regulation of the supply of electricity or water or any other service.
7. Persons carrying on industry, operation etc. not to allow emission or discharge of environmental pollutants in excess of the standards. No. person carrying on any industry, operation or process shall discharge or emit or permit to be discharged or emitted any environmental pollutant in excess of such standards as may be prescribed.
8. Persons handling hazardous substances to comply with procedural safeguards. - No person shall handle or cause to be handled any hazardous substance except in accordance with such procedure end after complying with such safeguards as may be prescribed".
Rule 3(1), 3(2), and 5(1) of the Environment (Protection) Rules 1986 (the Rules) are as under:
"3. Standards for emission or discharge of environmental pollutants. - (1) For the purposes of protecting and improving the quality of the environmental and preventing and abating environmental pollution, the standards for emission or discharge of environmental pollutants from the industries, operations or processes shall be as specified in Schedule I to IV).
3(2) Notwithstanding anything contained in sb-rule(l), the
Control Board or a State Board may specify more stringent standards from those provided in (Schedule to IV) in respect of any specific industry, operation or process depending upon the quality of the recipient system and after recording reasons, therefore, in writing.
5. Prohibition and restriction on the location of industries and the carrying on processes and operations in different areas - (1) The Central Government may take into consideration the following factors while prohibiting or restricting the location of industries and carrying on of processes and operations an different areas :
(i) Standards for quality of environment in its various aspects laid down for an area.
(ii) The maximum allowable limits of concentration of various environment pollutants (including noise) for an area.
(iii) The likely emission or discharge of environmental pollutants from an industry, process or operation proposed to be prohibited or restricted.
(iv) The topographic and climatic features of an area.
(v) The biological diversity of the area which, in the opinion of the Central Government, needs to be preserved.
(vi) Environmentally compatible land use.
(vii) Net adverse environmental impact likely to be caused by an industry, process or operation proposed to be prohibited or restricted.
(viii) Proximity to a protected area under the Ancient Monuments and Archaeological Sites and Remains Act, 1958 or a sanctuary, National Park, game reserve or closed area notified, as such under the Wild Life (Protection) Act, 19/2, or places protected under any treaty, agreement or convention with any other country or countries or in pursuance of any decision made in any international conference, association or other body.
(ix) Proximity to human settlements
(x) Any other factors as may be considered by the Central Government to be relevant to the protection of the environment in an area".
It is thus obvious that the Environment Act contains useful provisions for controlling pollution. The main purpose of the Act is to create an authority or authorities under Section 3(3) of the Act with adequate powers to control pollution and protect the environment. It is a pity that till date no authority has been constituted by the Central Government. The work which is required to be done by an authority in terms of Section 3(3) read with other provision of the Act is being done by this Court and the other Courts in the country. It is high time that the Central Government realises its responsibility and statutory duty to protect the degrading environment in the country. If the conditions in the five districts of Tamil Nadu, where tanneries are operating, are permitted to continue then in the near future all rivers/canals shall be polluted, underground waters contaminated, agricultural lands turned barren and the residents of the area exposed to serious diseases. lt is, therefore, necessary for this Court to direct the Central Government to take immediate action under the provisions of the Environment Act.
There are more than 900 tanneries operating in the five districts of Tamil Nadu. Some of them may, by now, have installed the necessary pollution control measures, they have been polluting the environment for over a decade and in some cases even for a longer period. This Court has in various orders indicated that these tanneries are liable to pay pollution fine. The polluters must compensate the affected persons and also pay the cost of restoring the damaged ecology.
Mr. M.C. Mehta, learned counsel for the petitioner has invited our attention to the Notification GOMs No. 213 dated March 30, 1989 which reads are under :
"Order :-
In the Government Order first read above, the Government have ordered, among other things, that no industry causing serious water pollution should be permitted with in one kilometer from the embankments of rivers, streams, dams etc, and that the Tamil Nadu Pollution Control Board Should furnish a list of such industries to all local bodies. It has been suggested that it is necessary to have a sharper definition for water sources so that ephemeral water collections like rein water ponds, drains, sewerages (bio-degradable) etc. may be excluded form the purview of the above order. The Chairman, Tamil Nadu Pollution Control Board has stated that the scope of the Government Order may be restricted to reservoirs, rivers and public drinking water sources.
He has also stated that there should be a complete ban on location of highly polluting industries within 1 Kilometer of certain water sources.
2. The Government have carefully examined the above suggestions. The Government impose a total ban on the setting up of the highly polluting industries mentioned in Annexure - I to this order ' within one Kilometer from the embankments of the water sources mentioned in Annexure-II to this order.
3. The Government direct that under any circumstance if any highly polluting industry is proposed to be set up within one kilometer from the embankments of water sources other than those mentioned in Annexure-II to this order, the Tamil Nadu Pollution Control Board should examine the case and obtain the approval of the Government for it".
Annexure-I to the Notification includes Distilleries, tanneries, fertilizer, steel plants and foundries as the highly polluting industries. We have our doubts whether the above quoted government order is being enforced by the Tamil Nadu Government. The order has been issued to control pollution and protect the environment. We are of the view that the order should be strictly enforced and no industry listed in Annexure-l to the order should be permitted to be set up in the prohibited area.
Learned counsel for the tanneries raised an objection that the standard regarding total dissolved solids (TDS) fixed by the Board was no. justified. This Court by the order date April 9, 1996 directed the NEERI to examine this aspect and give its opinion. In its report dated June 11, 1996 NEERI has justified the standards stipulated by the Board. The reasoning of the NEERI given in its report dated June 11, 1996 is as under:
"The total dissolved solids in ambient water have phisiological, industrial and economic significance. The consumer acceptance of mineralized water decreases in direct proportion to increased mineralization as indicated by Bruvold (1). High Total dissolved solids (TDS), including chlorides and sulphates, are objectionable due to possible physiological effect and mineral taste that they impart to water. High levels of total dissolved solids produce Laxative/cathartic/purgative effect in consumers. the requirement of soap and other detergents in household and industry is directly related to water hardness as brought out by DeBoer and Larsen (2). High concentration of mineral salts, particularly sulphates and chlorides, are also associated with costly corrosion damage in wastewater treatment systems, as detailed by patterson and Banker (3). Of par particular importance is the tendency of scale deposits with high TDS thereby resulting in high fuel consumption in boilers. The Ministry of Environment and forests (MEF) has not categorically laid down standards for inland surface water discharge for total dissolved solids (TDS), sulphates and chlorides. The Decision on these standards rests with the respective state Pollution Control Boards as per the requirements based on local site conditions. The standards stipulated by the TNPCB are justified on the aforereffered considerations.
The prescribed standards of the TNPCB for inland surfaces water discharge can be met for tannery wastewaters cost-effectively through proper implant control measures in tanning operation, and rationally designed and effectively operated wastewater treatment plants (ETPs & CETPs). Tables 3 and 5 depict the quality of groundwater in some areas around tanneries during peak summer period (June 3- 5, 1996). Table 8 presents the data collection by TNPCB at individual ETPs indicating that TDS, sulphates and chlorides concentrations are below the prescribed standards for inland surface water discharge. The quality of ambient waters needs to the maintained through the standards stipulated by TNPCB."
The Board has Power under the Environment Act and the Rules to lay down standards for emissions or discharge of environmental Pollutants. Rule 3(2) of the Rules even permit the Board to specify more stringent standards from those provided under the Rules. The NEERI having justified the standards stipulated by the Board, We direct that these standards are to be maintained by the tanneries and other industries in the State of Tamil Nadu.
Keeping in view the scenario discussed by us in this judgment, we order and direct as Under:-
1. The Central Government shall constitute an authority under Section 3(3) of the Environment (Protection) Act, 1986 and shall confer on the said authority all the powers necessary to deal with the situation created by the tanneries and other polluting industries in the State of Tamil Nadu. The Authority shall be headed by a retired judge of the High Court and it may have other members- preferably with expertise in the field of pollution control and environment protection- to be appointed by the Central Government. The Central Government shall confer on the said authority the powers to issue directions under Section 5 of the Environment Act and for taking measures with respect to the matters referred to in Clause (v), (vi) (vii) (viii)
(ix) (x) and (xii) of Sub-Section (2) of Section 3. The Central Government shall consitute the authority before September 30, 1996.
2. The authority so constituted by the Central Government shall implement the "precautionary principle" and the "polluter pays" principle. The authority shall, with the help of expert opinion and after giving opportunity to the concerned polluters assess the loss to the ecology\environment in the affected areas and shall also identify the individuals/families who have suffered because of the pollution and shall assess the compensation to be paid to the said individuals/families. The authority shall further determine the compensation to be recovered from the polluters as cost of reversing the damaged environment. The authority shall lay down just and fair procedure for completing the exercise.
3. The authority shall compute the compensation under two heads namely, for reversing the ecology and for payment to individuals. A statement showing the total amount to be recovered, the names of the polluters from who the amount is to be recovered, the amount to be recovered from each polluter, the persons to who the compensation is to be paid and the amount payable to each of them shall be forwarded to the Collector\District Magistrates of the area concerned. The Collector\District magistrate shall recover the amount from the polluters, if necessary, as arrears of land revenue. He shall disburse the compensation awarded by the authority to be affected persons/families.
4. The authority shall direct the closure of the industry owned/managed by a polluter in case he evades or refuses to pay the compensation awarded against him. This shall be in addition to the recovery from his as arrears of land revenue.
5. An industry may have set up the necessary pollution control device at present but it shall be liable to pay for the past pollution generated by the said industry which has resulted in the environmental degradation and suffering to the residents of the area.
6. We impose pollution fine of Rs. 10,000/- each on all the tanneries in the districts of North Arcot Ambedkar, Erode Periyar, Dindigul Anna, Trichi and Chengai M.G.R. The fine shall be paid before October 31, 1996 in the office of the Collector/District Magistrate concerned. We direct the Collectors/District Magistrates of these districts to recover the fines from the tanneries. The money shall be deposited, alongwith the compensation amount recovered from the polluters, under a separate head called "Environment protection Fund" and shall be utilised for compensating the affected persons as identified by the authorities and also for restoring the damaged environment. The pollution fine is liable to the recovered as arrears of land revenue. The tanneries which fail to deposit the amount by October 31, 1996 shall be closed forthwith and shall also be liable under the Contempt of Courts Act.
7. The authority, in consultation with expert bodies like NEERI, Central Board, Board shall frame scheme/schemes for reversing the damage caused to the ecology and environment by pollution in the State of Tamil Nadu. The scheme/schemes so framed shall be executed by the State Government under the supervision of the Central Government. The expenditure shall be met from the "Environment protection fund" and from other sources provided by the state Government and the Central Government.
8. We suspend the closure orders in respect of all the tanneries in the five districts of North Arcot Ambedkar, Erode Periyar, Dindigul Anna, Trichi and Chengai M.G.R. We direct all the tanneries in the above five districts to set up CETPs or Individual Pollution control Devices on or before November 30, 1996. Those connected with CETPs shall have to install in addition the primary devices in the tanerries. All the tanneries in the above five districts shall obtain the consent of the Board to function and operate with effect from December 15, 1996. The tanneries who are refused consent or who fail to obtain the consent of the Board by December 15, 1996 shall be closed forthwith.
9. We direct the Superintendent of Police and the Collector/district Magistrate/Deputy Commissioner of the district concerned to close all those tanneries with immediate effect who fail to obtain the consent from the Board by the said date. Such tanneries shall not be reopened unless the authority permits them to do so. It would be open to the authority to close such tanneries permanently or to direct their relocation.
10. The Government Order No. 213 dated March 30, 1989 shall be enforced forthwith. No. new industry listed in Annexure-I to the Notification shall be permitted to be set up within the prohibited area. The authority shall review the case of all the industries which are already operating in the prohibited area and it would be open to authority to direct the relocation of any of such industries.
11. The standards stipuated by the Board regarding total dissolved solids (TDS) and approved by the NEERI shall be operative. All the tanneries and other industries in the State of Tamil Nadu shall comply with the said standards. The quality of ambient waters has to be maintained through the standards stipulated by the Board.
We have issued comprehensive directions for achieving the end result in this case. It is not necesary for this Court to monitor these matters any further. we are of the view that the Madras High Court would be in a better position to monitor these matters hereinafter. We, therefore, request the Chief Justice of the Madras High Court to constitute a special Bench "Green bench" to deal with this case and other environmental matters. We make it clear that it would be open to the Bench to pass any appropriate order/orders keeping in view the directions issued by us. We may mention that "Green Benches" are already functioning in Calcutta, Madhya Pradesh and some other High Courts. We Direct the Registry of this Court to send the records to the registry of the Madras High matter as a petition under Article 226 of the Constitution of India and deal with it in accordance with law and also in terms of the directions issued by us. We give liberty to the parties to approach the High Court as and when necessary.
Mr. M.C. Mehta has been assisting this Court to our utmost satisfaction. We place on record our appreciation for Mr. Mehta. We direct the State of Tamil Nadu to pay Rs. 50,000/- towards legal fees and other out of pocket expenses incurred by Mr. Mehta.


Welcome to the Quest Map page, {{this.currentUser.getUserFirstName()}}! This is where you can create quests and form your
section's questmap.
Currently, you have not set the maximum EXP that your students can get. Set it so you can start creating your quest and
questmap
Edit your section's max EXP below.
0" class="quest-table">
Quest
{{quest.questLabel}}
Max EXP
{{quest.quest.getQuestXp()}}
Max HP
{{quest.quest.getQuestHp()}}
You have no quest yet. Click
here to create your first quest!
Create Quest
{{this.questClicked.getQuestTitle()}}
{{this.questClicked.getQuestDescription()}}
Rewards:
+ {{this.questClicked.getQuestXp()}} XP
+ {{this.questClicked.getQuestHp()}} HP
0">Badge: {{this.badgeName}} (if achieved at least 80% when graded)
Started on:
{{this.pageService.formatDateTime(this.questClicked.getQuestStartTimeDate())}}


This webpage is a school project. www.arteveldehs.be I do not take credit for what is not mine and I don't have the right to say I do.


Redis Client for Crystal
A Redis client for the Crystal programming language.
Features
- Performance (> 680,000 commands per second using pipeline on a MacBook Air with a single client thread)
- Pipelining
- Transactions
- LUA Scripting
- All string commands
- All hash commands
- All list commands
- All set commands
- All hyperloglog commands
- All commands for bit operations
- All sorted set commands
- All geo commands
- Publish/subscribe
Installation
Add it to your shard.yml
:
dependencies:
redis:
github: stefanwille/crystal-redis
version: ~> 2.6.0
and then install the library into your project:
$ shards install
Installation on MacOS X
On MacOS X you may get this error:
ld: library not found for -lssl (this usually means you need to install the development package for libssl)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
...
Or this warning:
Package libssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `libssl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libssl' found
Package libcrypto was not found in the pkg-config search path.
Perhaps you should add the directory containing `libcrypto.pc
The problem is that Crystal can't find openssl, because it is not installed by default on MacOS X.
The fix:
- Install openssl via Homebrew:
$ brew install openssl
- Set the environment variable
PKG_CONFIG_PATH
:
$ export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
Note: Please write me if you know a better way!
Required Crystal Version
This library needs Crystal version >= 0.34.0
I haven't tested older Crystal versions.
Usage
Require the package:
require "redis"
then
redis = Redis.new
Then you can call Redis commands on the redis
object:
redis.set("foo", "bar")
redis.get("foo")
Connection Pooling
Since version 2.0.0, a connection pool is built in. It is used implicitly through Redis::PooledClient
:
redis = Redis::PooledClient.new
10.times do |i|
spawn do
redis.set("foo#{i}", "bar")
redis.get("foo#{i}") # => "bar"
end
end
This redis
instance can be shared across fibers, and accepts the same Redis commands as the Redis
class.
It automatically allocates and frees connections from/to the pool, per command.
Examples
To get started, see the examples:
- There is a separate git repository crystal-redis-examples with examples.
- start with this basic example
- look at the other examples
- the spec contains even more usage examples
Documentation
- API documentation -
start reading it at the class
Redis
. - Redis commands documentation - the original Redis documentation is necessary, as the API documentation above is just a quick reference
- Redis documentation page - general information about Redis and its concepts
Performance
I have benchmarked Crystal-Redis against several other client libraries in various programming languages in this blog article.
Here are some results:
- Crystal: With this library I get > 680,000 commands per second using pipeline on a MacBook Air with a single client thread.
- C: The equivalent program written in C with Hiredis gets me 340,000 commands per second.
- Ruby: Ruby 2.2.1 with the redis-rb and Hiredis driver handles 150,000 commands per second.
Read more results for Go, Java, Node.js.
Status
I have exercised every API method in the spec and built some example programs. Some people report production usage.
I took great care to make this library very usable with respect to API, reliability and documentation.
Development
This project requires a locally running redis server running on port 6379 and with a Unix socket located at /tmp/redis.sock. In Homebrew's default redis.config the Unix domain socket option is disabled. To enable, edit /usr/local/etc/redis.conf
or whatever your redis.conf
is and uncomment this line:
# unixsocket /tmp/redis.sock
so that it reads
unixsocket /tmp/redis.sock
Then you can run the specs via
$ crystal spec
WARNING
Running the spec will delete database number 0!
Questions, Bugs & Support
If you have questions or need help, please open a ticket in the GitHub issue tracker. This way others can benefit from the discussion.


We are here for you with products and services for your every need.
If you have any questions for us, please check out our Customer Support site!


Using Henrik Bengtsson’s future package, it is possible to evaluate modules asynchronously using various resources available to the user. For instance, evaluation of modules can be eager, lazy, and/or parallelized (on multiple cores and/or on a cluster of machines).
# How many cores are available?
availableCores()
#> system
#> 4
"foo" %provides% {
future({
Sys.sleep(1L)
"Hello"
}) %plan% multicore
}
#> [2017-06-21T21:58:33 UTC] Defining 'foo' ... OK
"bar" %provides% {
future({
Sys.sleep(1L)
"World"
}) %plan% multicore
}
#> [2017-06-21T21:58:33 UTC] Defining 'bar' ... OK
"foobar" %requires% list(
f = "foo",
b = "bar"
) %provides% {
paste0(value(f), " ", value(b), "!")
}
#> [2017-06-21T21:58:33 UTC] Defining 'foobar' ... OK
system.time(print(make("foobar")))
#> [2017-06-21T21:58:33 UTC] Making 'foobar' ...
#> [2017-06-21T21:58:33 UTC] * Visiting and defining dependencies ...
#> [2017-06-21T21:58:33 UTC] * Constructing dependency graph ... OK
#> [2017-06-21T21:58:33 UTC] * Sorting 2 dependencies with 2 relations ... on 1 layer, OK
#> [2017-06-21T21:58:33 UTC] * Evaluating new and outdated dependencies ...
#> [2017-06-21T21:58:33 UTC] ** Evaluating #1/2 (layer #1/1): 'bar' ...
#> [2017-06-21T21:58:33 UTC] ** Evaluating #2/2 (layer #1/1): 'foo' ...
#> [2017-06-21T21:58:34 UTC] DONE ('foobar' in 1.1 secs)
#> [1] "Hello World!"
#> user system elapsed
#> 0.051 0.006 1.068
It is often interesting to parallelize an already existing module. modulr
comes with the handy futurize
function for this purpose. The following two examples illustrate the difference between eager and lazy orchestrations of parallelized modules.
"foo" %provides% { Sys.sleep(1L); "Hello" }
#> [2017-06-21T21:58:34 UTC] Defining 'foo' ... OK
"bar" %provides% { Sys.sleep(1L); "World" }
#> [2017-06-21T21:58:34 UTC] Defining 'bar' ... OK
"foobar" %requires% list(
f = "foo",
b = "bar"
) %provides% {
paste0(f, " ", b, "!")
}
#> [2017-06-21T21:58:34 UTC] Defining 'foobar' ... OK
futurize("foo", strategy = multicore)
#> [2017-06-21T21:58:34 UTC] Defining 'foo/future' ... OK
futurize("bar", strategy = multicore)
#> [2017-06-21T21:58:34 UTC] Defining 'bar/future' ... OK
futurize(
"foobar",
name = "foobar/eager",
dependencies = list(f = "foo/future", b = "bar/future"),
strategy = eager
)
#> [2017-06-21T21:58:34 UTC] Defining 'foobar/eager' ... OK
system.time(fb_eager <- make("foobar/eager"))
#> [2017-06-21T21:58:34 UTC] Making 'foobar/eager' ...
#> [2017-06-21T21:58:34 UTC] * Visiting and defining dependencies ...
#> [2017-06-21T21:58:34 UTC] * Constructing dependency graph ... OK
#> [2017-06-21T21:58:34 UTC] * Sorting 2 dependencies with 2 relations ... on 1 layer, OK
#> [2017-06-21T21:58:34 UTC] * Evaluating new and outdated dependencies ...
#> [2017-06-21T21:58:34 UTC] ** Evaluating #1/2 (layer #1/1): 'bar/future' ...
#> [2017-06-21T21:58:34 UTC] ** Evaluating #2/2 (layer #1/1): 'foo/future' ...
#> [2017-06-21T21:58:35 UTC] DONE ('foobar/eager' in 1.1 secs)
#> user system elapsed
#> 0.103 0.010 1.100
system.time(print(value(fb_eager)))
#> [1] "Hello World!"
#> user system elapsed
#> 0 0 0
touch("foo/future")
#> [2017-06-21T21:58:35 UTC] Touching 'foo/future' ... OK
touch("bar/future")
#> [2017-06-21T21:58:35 UTC] Touching 'bar/future' ... OK
futurize(
"foobar",
name = "foobar/lazy",
dependencies = list(f = "foo/future", b = "bar/future"),
strategy = lazy
)
#> [2017-06-21T21:58:36 UTC] Defining 'foobar/lazy' ... OK
system.time(fb_lazy <- make("foobar/lazy"))
#> [2017-06-21T21:58:36 UTC] Making 'foobar/lazy' ...
#> [2017-06-21T21:58:36 UTC] * Visiting and defining dependencies ...
#> [2017-06-21T21:58:36 UTC] * Constructing dependency graph ... OK
#> [2017-06-21T21:58:36 UTC] * Sorting 2 dependencies with 2 relations ... on 1 layer, OK
#> [2017-06-21T21:58:36 UTC] * Evaluating new and outdated dependencies ...
#> [2017-06-21T21:58:36 UTC] ** Evaluating #1/2 (layer #1/1): 'bar/future' ...
#> [2017-06-21T21:58:36 UTC] ** Evaluating #2/2 (layer #1/1): 'foo/future' ...
#> [2017-06-21T21:58:36 UTC] DONE ('foobar/lazy' in 0.054 secs)
#> user system elapsed
#> 0.046 0.010 0.056
Sys.sleep(0.5)
system.time(print(value(fb_lazy)))
#> [1] "Hello World!"
#> user system elapsed
#> 0.005 0.004 0.434
Let us consider the following situation: most of your code rely on an old version of dplyr, say 0.4.1, and you want to migrate progressively to the latest version available on CRAN, say 0.7.0. How two different versions of dplyr can cohabitate in your ecosystem? Package isolation is an experimental feature allowing to isolate a portion of code, for example a module, from already loaded and attached packages.
Let us assume that dplyr_0.4.1 is installed in the current library paths:
library(dplyr) # version 0.4.1, installed in the library paths
#>
#> Attaching package: 'dplyr'
#> The following object is masked from 'package:stats':
#>
#> filter
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
print(sessionInfo())
#> R version 3.2.5 (2016-04-14)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Red Hat Enterprise Linux
#>
#> locale:
#> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_DK.UTF-8 LC_COLLATE=en_US.UTF-8
#> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
#> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] dplyr_0.4.1 memoise_1.1.0 future_1.0.1
#> [4] RColorBrewer_1.1-2 chorddiag_0.1.1 networkD3_0.2.13
#> [7] modulr_<IP_ADDRESS>86
#>
#> loaded via a namespace (and not attached):
#> [1] igraph_1.0.1 Rcpp_0.12.11 rstudioapi_0.6
#> [4] knitr_1.16 magrittr_1.5 pooh_0.3-2
#> [7] stringr_1.2.0 globals_0.7.0 tools_3.2.5
#> [10] parallel_3.2.5 DBI_0.6-1 withr_1.0.2
#> [13] htmltools_0.3.6 yaml_2.1.14 assertthat_<IP_ADDRESS>00
#> [16] rprojroot_1.2 digest_0.6.12 htmlwidgets_0.8
#> [19] codetools_0.2-14 evaluate_0.10 rmarkdown_1.5
#> [22] stringi_1.1.5 backports_1.1.0 listenv_0.6.0
This is the current code using dplyr_0.4.1, where arrange
applies by default to every element of the group:
cars %>%
group_by(speed) %>%
arrange(desc(dist)) %>%
ungroup %>%
head
#> Source: local data frame [6 x 2]
#>
#> speed dist
#> 1 4 10
#> 2 4 2
#> 3 7 22
#> 4 7 4
#> 5 8 16
#> 6 9 10
Let us isolate from all the loaded and attached packages (except the so-called base packages and a few others, like modulr itself, obviously):
isolate_from_packages()
#> [2017-06-21T21:58:37 UTC] Isolating from loaded and attached packages ...
#> [2017-06-21T21:58:37 UTC] * Ignoring base packages and 13 packages: 'assertthat', 'curl', 'devtools', 'digest', 'httr', 'jsonlite', 'knitr', 'memoise', 'modulr', 'pooh', 'rmarkdown', 'rstudioapi', 'stringi'.
#> [2017-06-21T21:58:37 UTC] * Forgetting 'dplyr' ... OK
#> [2017-06-21T21:58:37 UTC] * Forgetting 'future' ... OK
#> [2017-06-21T21:58:37 UTC] * Forgetting 'RColorBrewer' ... OK
#> [2017-06-21T21:58:37 UTC] * Forgetting 'chorddiag' ... OK
#> [2017-06-21T21:58:37 UTC] * Forgetting 'networkD3' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'igraph' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'Rcpp' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'magrittr' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'stringr' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'globals' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'DBI' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'withr' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'htmltools' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'lazyeval' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'yaml' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'rprojroot' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'htmlwidgets' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'codetools' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'evaluate' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'backports' ... OK
#> [2017-06-21T21:58:38 UTC] * Unloading 'listenv' ... OK
#> [2017-06-21T21:58:38 UTC] Isolated from loaded and attached packages.
This function returns a packages manifest containing all the necessary information to restore the situation. The last manifest produced by isolate_from_packages
is available from the .Last.packages_manifest
variable and is used by restore_packages
(see infra).
Let us now suppose that dplyr_0.7.0 and its dependencies have been installed in the dedicated “./new_lib” directory. We can then change the library path to point to ./new_lib
, and attach the packages as usual:
.libPaths("./new_lib")
library(dplyr) # version 0.7.0, installed in "./new_lib"
print(sessionInfo())
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
#> R version 3.2.5 (2016-04-14)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Red Hat Enterprise Linux
#>
#> locale:
#> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_DK.UTF-8 LC_COLLATE=en_US.UTF-8
#> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
#> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] dplyr_0.7.0 memoise_1.1.0 modulr_<IP_ADDRESS>86
#>
#> loaded via a namespace (and not attached):
#> [1] Rcpp_0.12.11 rstudioapi_0.6 magrittr_1.5
#> [4] knitr_1.16 devtools_1.13.2 R6_2.2.1
#> [7] rlang_0.1.1 pooh_0.3-2 stringr_1.2.0
#> [10] tools_3.2.5 parallel_3.2.5 assertthat_<IP_ADDRESS>00
#> [13] digest_0.6.12 tibble_1.3.3 glue_1.1.0
#> [16] evaluate_0.10 rmarkdown_1.5 stringi_1.1.5
Thus, the following code uses dplyr_0.7.0: a tibble is returned instead of a data frame and the verb arrange
requires a parameter (.by_group = TRUE
) to apply to every element of the group:
cars %>%
group_by(speed) %>%
arrange(desc(dist), .by_group = TRUE) %>%
ungroup %>%
head
#> # A tibble: 6 x 2
#> speed dist
#> <dbl> <dbl>
#> 1 4 10
#> 2 4 2
#> 3 7 22
#> 4 7 4
#> 5 8 16
#> 6 9 10
Finally, we can restore the previously attached and loaded packages (by default, the previous library paths are also restored), based by default on the last manifest:
restore_packages()
#> [2017-06-21T21:58:39 UTC] Restoring previously attached and loaded packages ...
#> [2017-06-21T21:58:39 UTC] * Restoring library paths ... OK
#> [2017-06-21T21:58:39 UTC] * Forgetting 'dplyr' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'Rcpp' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'magrittr' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'R6' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'rlang' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'stringr' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'tibble' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'glue' ... OK
#> [2017-06-21T21:58:39 UTC] * Unloading 'evaluate' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'listenv' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'backports' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'evaluate' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'codetools' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'htmlwidgets' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'rprojroot' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'yaml' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'lazyeval' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'htmltools' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'withr' ... OK
#> [2017-06-21T21:58:39 UTC] * Loading 'DBI' ... OK
#> [2017-06-21T21:58:40 UTC] * Loading 'globals' ... OK
#> [2017-06-21T21:58:40 UTC] * Loading 'stringr' ... OK
#> [2017-06-21T21:58:40 UTC] * Loading 'magrittr' ... OK
#> [2017-06-21T21:58:40 UTC] * Loading 'Rcpp' ... OK
#> [2017-06-21T21:58:40 UTC] * Loading 'igraph' ... OK
#> [2017-06-21T21:58:40 UTC] * Attaching 'dplyr' at position 2 ... OK
#> [2017-06-21T21:58:40 UTC] * Attaching 'future' at position 4 ... OK
#> [2017-06-21T21:58:40 UTC] * Attaching 'RColorBrewer' at position 5 ... OK
#> [2017-06-21T21:58:40 UTC] * Attaching 'chorddiag' at position 6 ... OK
#> [2017-06-21T21:58:40 UTC] * Attaching 'networkD3' at position 7 ... OK
#> [2017-06-21T21:58:40 UTC] Previously attached and loaded packages restored.
print(sessionInfo())
#> R version 3.2.5 (2016-04-14)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Red Hat Enterprise Linux
#>
#> locale:
#> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_DK.UTF-8 LC_COLLATE=en_US.UTF-8
#> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
#> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] dplyr_0.4.1 memoise_1.1.0 future_1.0.1
#> [4] RColorBrewer_1.1-2 chorddiag_0.1.1 networkD3_0.2.13
#> [7] modulr_<IP_ADDRESS>86
#>
#> loaded via a namespace (and not attached):
#> [1] Rcpp_0.12.11 tools_3.2.5 digest_0.6.12
#> [4] evaluate_0.10 rlang_<IP_ADDRESS>00 igraph_1.0.1
#> [7] DBI_0.6-1 rstudioapi_0.6 yaml_2.1.14
#> [10] parallel_3.2.5 withr_1.0.2 stringr_1.2.0
#> [13] knitr_1.16 globals_0.7.0 htmlwidgets_0.8
#> [16] devtools_1.13.2 rprojroot_1.2 listenv_0.6.0
#> [19] pooh_0.3-2 rmarkdown_1.5 magrittr_1.5
#> [22] backports_1.1.0 codetools_0.2-14 htmltools_0.3.6
#> [25] assertthat_<IP_ADDRESS>00 stringi_1.1.5 lazyeval_0.2.0
The with_packages
function allows to isolate temporarily a portion of code, so that the previous example simply becomes:
with_verbosity(1L, with_packages("./new_lib", {
library(dplyr)
cars %>%
group_by(speed) %>%
arrange(desc(dist), .by_group = TRUE) %>%
ungroup %>%
as.data.frame(stringsAsFactors = FALSE) %>%
head
}))
#> [2017-06-21T21:58:40 UTC] Isolating from loaded and attached packages ...
#> [2017-06-21T21:58:42 UTC] Isolated from loaded and attached packages.
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
#> [2017-06-21T21:58:42 UTC] Restoring previously attached and loaded packages ...
#> [2017-06-21T21:58:43 UTC] Previously attached and loaded packages restored.
#> speed dist
#> 1 4 10
#> 2 4 2
#> 3 7 22
#> 4 7 4
#> 5 8 16
#> 6 9 10
When working with modules, it is sometimes useful to associate a specific library to an on-disk module with with_module_packages
or to a namespace of modules with with_namespace_packages
.
In the following example, with_module_packages
temporarily sets the library path to the sub-directory lib/x86_64-pc-linux-gnu-library/3.2
of the directory experimental/arranged_cars
.
# File: ./modules/experimental/arranged_cars.R
library(modulr)
"experimental/arranged_cars" %provides% {
with_verbosity(0L, with_module_packages({
if (!"dplyr" %in% rownames(installed.packages()))
install.packages("dplyr")
library(dplyr)
cars %>%
group_by(speed) %>%
arrange(desc(dist), .by_group = TRUE) %>%
ungroup %>%
as.data.frame(stringsAsFactors = FALSE) %>%
head
}))
}
make("experimental/arranged_cars")
#> [2017-06-21T21:58:43 UTC] Making 'experimental/arranged_cars' ...
#> [2017-06-21T21:58:43 UTC] * Visiting and defining dependencies ...
#> [2017-06-21T21:58:43 UTC] ** Defining 'experimental/arranged_cars' ... OK
#> [2017-06-21T21:58:43 UTC] * Constructing dependency graph ... OK
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
#> [2017-06-21T21:58:47 UTC] DONE ('experimental/arranged_cars' in 3.6 secs)
#> speed dist
#> 1 4 10
#> 2 4 2
#> 3 7 22
#> 4 7 4
#> 5 8 16
#> 6 9 10


Bangalore - 8th edition
vodQA is a forum for passionate quality enthusiasts to network, share and learn from each other. So far, we have successfully hosted more than 20+ editions of vodQA across all ThoughtWorks India offices. vodQA aims at taking you to another level altogether, where you get a wider perspective of testing. Let us meet more evangelists, to talk and learn about the vast spectrum of testing realms.
Please have a look at the Agenda below.
For any queries please write to us at:
<EMAIL_ADDRESS>8:45 AM
Registrations
9:15 AM
Introduction
9:40 - 10:00 AM
10:05 - 10:45 AM
Track 1
Webdriver Lambda - Next Gen Scalable Tests
by Varunaa Srivastava & Vinayaka Mayura (ThoughtWorks)
Track 2
Testing Natural Language Processing
by Venkat Ramakrishnan (Independent Consultant)
10:45 - 11:00 AM
Tea Break
11:00 - 11:20 AM
Track 1
Testing tools with artificial intelligence
by Haritha Hari (ThoughtWorks)
Track 2
Pen Testing Android Apps
by Srinivasan Sekar (ThoughtWorks)
11:25 AM - 11:45 AM
Track 1
Improve your chaos IQ
by Sunita Venkatachalam (Target)
Track 2
Meet Taiko
by Zabil C M (ThoughtWorks)
11:50 AM - 12:30 PM
Track 1
Drive chrome(headless) with puppeteer
by Shilpa G (ThoughtWorks)
Track 2
How to approach chatbot testing
by VijayKumar (ThoughtWorks)
12:30 - 1:20 PM
Lunch Break
1:30 - 4:00 PM
Track 1
Workshop:
Advanced Appium Workshop
by Shridhar Kalagi, Hitesh Sharma & Shalini Saini (ThoughtWorks)
Track 2
Workshop:
Testing Blockchain Application
by Srinivasan Sekar & Lipika Dugar (ThoughtWorks)
Track 3
Workshop:
Contract testing using Pact
by Pravitha Nair & Sunita Venkatachalam (Target) & Tina Maria Thomas(ThoughtWorks)
1:30 - 4:00 PM
Track 4
Fish Bowl
4:10 - 4:20 PM
Closing key Note
4:20 PM Onwards
Networking
ThoughtWorks Technologies (India) Pvt. Ltd. #601/602, 6th Floor Brigade Nalapad, Mahadevapura Bangalore-560048 « Open in Google Maps »


Welcome to iReporter
iReporter enables you to bring any form of corruption to the notice of appropriate authorities and the general public. You can also report on things that needs government intervention
Features
Report incidents
Lorem ipsum dolor sit amet consectetur adipisicing elit. A obcaecati commodi dolor illum et voluptas?
Notifications
Lorem ipsum dolor sit amet consectetur adipisicing elit. A obcaecati commodi dolor illum et voluptas?
Win Badges
Lorem ipsum dolor sit amet consectetur adipisicing elit. A obcaecati commodi dolor illum et voluptas?


Meet the Team
We are members of the Carlton Cyber Security Club
Christopher Bennett
Software Developer
Komiljon Abdurahimov
Software Developer
Filipp Gorodkov
Software Developer
Emma Sewell
Software Developer
Challenge: GOCanada - Geomagnetic Data Integration
Part 1: Helping point out erroneous data collected by magnetometers across Canada
Link - To a copy of our results
Part 2: Determine geomagnetic activity across Canada and map it
{% endblock %}


Tarzan (1999)
A Movie Review by Mark O'Hara
Visit Online Film Critics Society at http://www.ofcs.org
I recommend Disney's Tarzan for a number of reasons.
First, my family liked it a lot. My wife and kids and I all sat fascinated by the animation. The computer-assists grow sharper by the movie: here we have a startlingly three-dimensional jungle, limbs and vines passing the camera with fresh realism. Many of the characters - Wayne Knight's Tantor, for instance - are drawn as charming throwbacks to traditional animation; the elephants are reminiscent of the military marchers in The Jungle Book. What's most exciting is the way the camera follows Tarzan's agile ranging among the trees. He zips and zooms, cuts and caroms, surfs and slides. American amusement parks are always trying to build a better roller coaster, and Disney has built the ultimate (as of the last year of the century) ape man. Tarzan is always likable and, even though his hi-jinks defy physics, he always keeps the eye occupied.
Edgar Rice Burroughs' story moves smoothly at the start. We watch a husband, wife and baby abandoning a burning ship. They land on some part of the African coast, where they build an extensive tree dwelling and, presumably, the parents die by the claws and teeth of a large cat. Discovered by a compassionate and large-eyed gorilla (Kala, voiced by Glenn Close), the English baby becomes part of the extended clan. Although the silver-backed leader Kerchak (Lance Henrickson) is against keeping the child, as he is not of their kind, the boy grows and becomes friends with most of the surrounding animals, especially his two pals, this film's versions of sidekicks. They are Tantor, done with a slightly silly, adenoidal voice by Wayne Knight, and Terk, a young female gorilla with a Don King 'do and a Brooklyn attitude (supplied ably by Rosie O'Donnell). Both of these voices are delightfully distinguishable, by the way, as is the threatening rasp of Henrickson as Kerchak.
Something else we loved was the human side to Tarzan. We are attracted to his character mostly, I think, because he is an outcast, fully accepted neither in the world of the jungle, nor in the less civilized society of humankind. Tarzan frequently feels excluded from his clan, and is thrilled to find Jane (Minnie Driver), the English woman who has accompanied her father, Professor Porter (Nigel Hawthorne), and the hunter Clayton (Brian Blessed). Of course the main conflict is supplied by the white man's encroachment upon the natural habitat of the apes. What's rather predictable here is that Professor Porter himself has come merely to observe gorillas, whereas Clayton - and his boatload of mercenary thugs - are armed with rifles and the cages that will transport as many apes as possible back to the zoos and laboratories of Western civilization.
Small moments make most of the difference. Directors Chris Buck and Kevin Lima cause Tarzan's basic conflicts to evoke our sympathy again and again. There's one scene in which the jungle hero has heard the reports of rifles and gone to investigate. We watch as he picks up a shell casing, sniffs and then tastes it. It's foreign and unsavory, of course, and a fine example of the main fight going on in the narrative. Another moving scene occurs when Tarzan places his palm against Jane's - and sees that hers is a comparably-sized, human hand. These brief moments sketch character without using speech, a feat difficult to do even when using live actors.
As the voice of Tarzan, Tony Goldwyn performs well. He's heroic without showing off - his job the equivalent of a good writer telling a story with a transparent prose style. Minnie Driver is very expressive, especially in the frantically-paced scenes in which Tarzan rescues her from vicious baboons. Finally, the voice of Phil Collins is quite pleasing in the background. It's a pleasure that none of the animals themselves breaks into song: the story relies on the musicianship of a proven soft-rock star. Another aspect of language handled cleverly is the English spoken by Tarzan while he is with the gorillas, versus the English he learns from Jane and her father. It's more believeable than the scenes in which Pocahantas suddenly speaks fluent English to John Smith; it also makes good use of linguistic jokes, as when Tarzan connects the name "Clayton" with the gunshots intruding upon the quiet jungle.
Only The Lion King used a story original to Disney writers. I find it ironic, therefore, that their Renaissance continues with reliable stories like Tarzan. I hope they keep doing it, though, because there are not enough good G-rated movies around, and because it makes good sense, after all, to go with a good thing.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


video
element: source
elementsTests whether media specified via source
elements is recognized:
If the preceding video clip can be played (a man's voice will be heard, beginning "Hi there, I quickly want to show you"), the test passes.
This test will fail if neither H.264 nor VP8 are supported, regardless of support for the source
element. Other codecs must be tested manually.
video
element: Poster ImagesTests whether poster images are supported the HTML5 video
element:
If the Skype logo appears in the video area, the test passes.


Welcome to the SM64 Randomizer Generator. Using this service, you can create your own unique randomized ROMs of Super Mario 64 for the Nintendo 64.
This is a game randomizer for the N64 launch-title Super Mario 64. It works by shuffling in game level entries, pointers, addresses and other bits and pieces, to completely alter the game experience, every time you use it. Using seeds, you can play the same version that your friends are playing, to see who can finish it the fastest.
Using this Page, you can upload a ROM file of the game, and we will shuffle it around, you can then download the altered ROM and play it.
Currently, these features are implemented.


Hotel
Rooms
Room #
Capacity
Rate / Night
2B
4
$59.99
Book
2A
4
$59.99
Book
3A
2
$45.00
Book
3B
2
$45.00
Book
3C
3
$52.64
Book
4A
4
$59.99
Book
4B
4
$59.99
Book
Close ×
BOOKING INFORMATION
ROOM
Check-in
Nights
1
2
3
4
5
6
7
8
9
10
TOTAL
CONFIRM


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/simp.20lemma.3F.html ---
@[simp] lemma eq_default {α : Sort*} [inhabited α] [subsingleton α] (x : α) : x = default α := subsingleton.elim _ _
Should this be a simp lemma?
Or maybe should we say that all punits are punit.star instead?
I seem to remember trying a simp lemaa like this ages ago and it never triggering.
this won't trigger because the LHS is arbitrary
If you are inhabited
and subsingleton
than you are unique
. I wrote a tiny api for unique
some time ago. Does that help, or is it maybe not constructive enough for your purposes?
this won't trigger because the LHS is arbitrary
why does that mean it wouldn't trigger?
is it because it's a loop?
It doesn’t trigger because its RHS is only a variable, therefore no head symbol to match on
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC