Sunday, May 10, 2015

Signed vs. Unsigned Integers in C

2's complement Encoding

The most common binary encoding technique for integers is called 2's complement. A signed integer is represented with “N” bits will have a range from -2N-1 to 2N-1 – 1.

The encoding algorithm is as follows.

1. The high-order (leftmost) bit of the word is the sign bit. If the sign bit is 1, the number is negative; otherwise, the number is positive.

2. Positive numbers follow the normal binary sequence.

    0 = 000...0002
    1 = 000...0012
          ...

3. In an N-bit word, omitting the sign bit, there are “N-1” bits for the positive integers which can represent the integers from 0 to 2N-1 – 1.

4. To negate an integer, complement all the bits in the word and then add 1 to the result. For example, to form negative integer -9, start with 9 = 000..10012, complement all the bits to get   111..01102, then add 1 to get -9 = 111..01112 = 247.

5. The maximum negative value, -2N-1, does not have a positive equivalent; negating this value produces the same value.

1's complement Encoding

Another encoding scheme which is used for representing integers is 1's complement. In this scheme, each positive number is represented by normal binary encoding. To obtain a negative number, each bit is simply complemented. For example, to form negative integer -9, start with 9 = 000..10012 and complement each bit to get -9 = 111..01102.

The range of numbers that can be represented for a N-bit word is -(2N-1 – 1) to 2N-1 – 1. 1's complement represents 1 less negative value and has both “-0” and “0”.

Sign Magnitude Encoding

The sign magnitude encoding is similar to the 1's complement encoding. To negate an integer, it just complements the sign bit. For example, to form negative integer -9, start with 9 = 000..10012 and complement the sign bit to get -9 = 100..10012.

The range of numbers that can be represented for a N-bit word is -(2N-1 – 1) to 2N-1 – 1. 1's complement represents 1 less negative value and has both “-0” and “0”.

Signed vs. Unsigned

Unsigned integers are always stored using straight binary notation regardless of whether the signed types use 2-s complement, 1-s complement or sign magnitude notation. For example, in 2-s complement notation, the bit pattern 111...111 (n bits long) can represent either “-1” (using the signed notation) or 2N – 1 (using the unsigned notation). The integers from “0” to 2N-1 – 1 are represented identically in both signed and unsigned notations.

Whether an integer is signed or unsigned affects the operations performed on it. All arithmetic operations on unsigned integers behave according to the rules of modular (congruence) arithmetic modulo 2N. For example, adding 1 to the largest value of an unsigned type is guaranteed to produce “0”. The behaviour of overflow is well-defined.

Expressions that mix signed and unsigned integers are often forced to use unsigned operations. When a negative signed integer is promoted to an unsigned integer of the same or larger type, it is first promoted to the signed equivalent of the larger type, then converted to the unsigned value.

The conversion rules are as follows.



Mahakavi Kumaran Asan -- A Brief Tribute

Malayalam literature has a very prominent place in Indian literature scene. The more serious taste developed in the 16th century but the actual, unrecorded contributions date back to Sangam Age. Many noted and versatile novelists, poets, dramatists, philosophers, astronomoers, linguists have combined over the centuries to nourish and flourish Malayalam literature. Among all these writers, Mahakavi Kumaran Asan was undoubtedly the biggest poetical influence.

In a short career of just 16 years, Kumaran "Kumaru" Asan, left an indelible mark on the Malayalam poetry. Romance and love were the most widespread theme of his poems. The publication of Veena Poovu (The Fallen Flower), a long elegiac poem, in 1908 initiated the tradition of love in Malayalam poetry. The major poems of Asan, which won immediate and unqualified acclaim from all those who kept their ears open for a new voice, are Nalini (1911), Leela (1914), Duravastha (1923), Chandalabhikshuki (1923) Karuna (1925) all of which are story-poems, Prarodanam (1919) an elegy on the death of Raja Raja Varma, and Chintavishtayaya Seeta, a dramatic monologue. His Gramavrikashathile Kuyil, Buddhacharitam, Balaramayanam and short lyrics are also poems of considerable merit.

He was born on 12 April 1853 in Ezhava business community at Kayikkara village, Chirayinkeezhu taluk, north of Thiruvananthapuram, Kerala. Belonging to a backward caste by birth, his major active life was involved in agitation against the Brahmanical rules which deprived the lower castes of their liberties as well as their own primitive custom and ceremonies. He worked as a member and general secretary of Sree Narayana Dharma Paripalana Sangham and was a highly respected member of the Tiruvitamkur Legislature.

Sanskrit was Asan's favourite language. He left his primary teacher job to study Sanskrit in Bangalore and Calcutta. He was equally proficient in English. The exposure to social and spiritual resurgence in Bengal instilled a sense of self-belief in him that change can be brought around in caste-ridden Kerala of those times. His heroes and heroines refused to be swayed by parental authority or social injunctions and chartered their own path of love and discover their human worth above the society defined caste and prejudices.

Along with Vallathol Narayana Menon and Ulloor.S.Parameswara Iyer, Asan weaved a new and vibrant trajectory for the Malayalam poetry. Professor G. Kumar Pillai quips the following summary of their achievement.
What Kumaran Asan and his contemporaries did was to revive the healthy element in our tradition and to extend it under the impact of western thought and literature. They did not reject the past, nor were they blind imitators of the west. Their greatest achievement was to recapture the spirit of Cherussery and Ezhuthassan and to forge another synthesis in a new context. They discarded the decadent neoclassicism in which they themselves were matured and restored the central tradition of our poetry to which they added a new dimension. The central tradition had two elements in it _ the Cherusseri style _ simple, sweet and beautiful, and the Ezhuthassan style _ deep, intense and grand. Of the two dominant figures in the first generation of our renaissance poetry, Vallathol, was the follower of the Cherusseri style while Asan inherited the Ezhuthassan style.
On 13 June, 1965, Kumaran Asan Memorial Association was established in Chennai with an aim to promote Malayalam literature. The association instituted the Asan Smaraka Kavitha Puraskaarama in 1985 to honour outstanding works of Tamil and Malayalam poetry. Now, it is conferred only on Malayalam poets. The award carries a prize of Rs. 30,000. A World Poetry Prize was also constituted. The award for 2015 has been given to Arab poet Adonis.

He regarded a life of transient brilliance and devotion to be the one to be picked over the life of long servitude to social and cultural absurdities. And, his work is full of this message. What life shall we choose?

Monday, April 27, 2015

A MP on a Bicycle

Indian Parliament, as we know it, is a place where you get paid for shouting regularly, being absent for any length of time and doing very little work, of course. MPs are a spoiled breed who are getting richer and absent-minded day by day. If you have to seen any motivation from public figures, the last thing you should do is to look up to them. Is everything doomed for bad? Well, some hope still remains.

Next time you visit the Parliament, take a look at the parking area allotted to MPs. Year-on-year increase in the variety, cost and number of high-end luxury vehicles can be clearly observed. Yet, one MP comes to the Parliament on a bicycle. To shoo away the non-believers, he has put up a label on both the bicycle and its parking slot. Let us read further about him.

The bicycle and a board displaying the name of Arjun Ram Meghwalin Hindi


Arjun Ram Meghwal is a 62-year old BJP MP from Bikaner, Rajasthan. He was a weaver, became an IAS and then 2009 saw him enter the Parliament. “I was born in a traditional weaver family of Kismidesar village (Bikaner), where any student of my age hardly goes to school. During my school and college days I used to weave to support my family and my education,” says Meghwal. He got married when he was in Class 7. After marriage, he continued his studies and graduated in Arts (BA) & Law (LLB) from Sri Dungar College, Bikaner (Rajasthan). What’s more he managed to do his postgraduation from the same college.




All the makings of another rags-to-riches story, but not just any other such story. He is humble, down-to-earth, accessible to all and sundry in his constituency and an unfailing eagerness to work for the people. On winning the Lok Sabha election, he said, "I consider this a new beginning and I still have miles to go in the service of people".

To read more about this astute politician, who once was District Collector, Churu, Rajasthan, visit Official MP Bio Data.

Saturday, April 11, 2015

Adding 2 Binary Numbers in C

//This function adds two binary numbers.
void  AddBinaryNumbers(int iarrNumber1[], int iNoOfDigitsInNumber1, int iarrNumber2[], int iNoOfDigitsInNumber2, int iarrSum[], int iNoOfDigitsInResult)
{
   //The loop counter
   int         iLoopCounter                        = 0;
   //The carry over digit
   int         iCarryOverDigit                     = 0;

   //Iterating through the bigger number
   for (; iLoopCounter < iNoOfDigitsInResult; iLoopCounter++)
   {
      //The sum of two digits
      int  iSumOfDigits = iarrNumber1[iLoopCounter] + iarrNumber2[iLoopCounter] + iCarryOverDigit;

      switch (iSumOfDigits)
      {
         case 0:  //The resultant bit is 0.

                  iarrSum[iLoopCounter] = 0;
                  break;

         case 1:  //The resultant bit is 1.

                  iarrSum[iLoopCounter] = 1;
                  break;

         case 2:  //The resultant bit is 0 and the carry over is 1.

                  iarrSum[iLoopCounter] = 0;
                  iCarryOverDigit = 1;
                  break;

         case 3:  //The resultant bit is 1 and the carry over is 1.

                  iarrSum[iLoopCounter] = 1;
                  iCarryOverDigit = 1;
                  break;
      }
   }

   //Computing the last digit if needed
   iarrSum[iNoOfDigitsInResult - 1] = iCarryOverDigit;
}

//The main function
void main()
{
   //The two arrays holding the two numbers
   int     *piarrNumber1                       = NULL;
   int     *piarrNumber2                       = NULL;
   //The array holding the sum of the two input numbers
   int     *piarrSum                           = NULL;
   //The size of the arrays
   int     iNoOfDigitsInNumber1                = 0;
   int     iNoOfDigitsInNumber2                = 0;
   int     iNoOfDigitsInResult                 = 0;
   //The loop counter
   int     iLoopCounter                        = 0;

   do
   {
      //Asking for the number of digits in the first number
      printf("\nEnter the number of digits in the first number.\n");
      scanf("%d", &iNoOfDigitsInNumber1);
      piarrNumber1 = (int *) calloc(iNoOfDigitsInNumber1, sizeof(int));

      //Asking for the user input
      printf("\nEnter the binary digits of the first number separated by space.\n\n");
      for (iLoopCounter = iNoOfDigitsInNumber1 - 1; iLoopCounter >= 0; iLoopCounter--)
         scanf("%d", &piarrNumber1[iLoopCounter]);

      //Verifying the input
      for (iLoopCounter = 0; iLoopCounter < iNoOfDigitsInNumber1; iLoopCounter++)
      {
         if (0 > piarrNumber1[iLoopCounter] || 1 < piarrNumber1[iLoopCounter])
         {
            printf("\nThe digit %d at index %d is not a binary digit.\n", piarrNumber1[iLoopCounter], iLoopCounter + 1);
            free(piarrNumber1);
            piarrNumber1 = NULL;
            break;
         }
      }
   }
   while (!piarrNumber1);

   do
   {
      //Asking for the number of digits in the second number
      printf("\nEnter the number of digits in the second number.\n");
      scanf("%d", &iNoOfDigitsInNumber2);
      piarrNumber2 = (int *) calloc(iNoOfDigitsInNumber2, sizeof(int));

      //Asking for the user input
      printf("\nEnter the binary digits of the second number separated by space.\n\n");
      for (iLoopCounter = iNoOfDigitsInNumber2 - 1; iLoopCounter >= 0; iLoopCounter--)
         scanf("%d", &piarrNumber2[iLoopCounter]);

      //Verifying the input
      for (iLoopCounter = 0; iLoopCounter < iNoOfDigitsInNumber2; iLoopCounter++)
      {
         if (0 > piarrNumber2[iLoopCounter] || 1 < piarrNumber2[iLoopCounter])
         {
            printf("\nThe digit %d at index %d is not a binary digit.\n", piarrNumber2[iLoopCounter], iLoopCounter + 1);
            free(piarrNumber2);
            piarrNumber2 = NULL;
            break;
         }
      }
   }
   while (!piarrNumber1);

   //Allocating sufficient space for the array
   if (iNoOfDigitsInNumber1 < iNoOfDigitsInNumber2)
      iNoOfDigitsInResult = iNoOfDigitsInNumber2 + 1;
   else
      iNoOfDigitsInResult = iNoOfDigitsInNumber1 + 1;
   piarrSum = (int *) calloc(iNoOfDigitsInResult, sizeof(int));

   //Adding the two numbers
   AddBinaryNumbers(piarrNumber1, iNoOfDigitsInNumber1, piarrNumber2, iNoOfDigitsInNumber2, piarrSum, iNoOfDigitsInResult);

   //Displaying the result
   for (iLoopCounter = 0; iLoopCounter < iNoOfDigitsInResult; iLoopCounter++)
      printf("\n%d", piarrSum[iLoopCounter]);
}

Humidity -- A Brief Primer

Moisture

It is a small amount of water present in any object such as air, soil, grains etc.

Atmosphere

It is an envelope of gas that surrounds the Earth and extends from the Earth's surface out thousands of kilometres, becoming increasingly thinner (less dense) with distance but always held in place by Earth's gravitational pull.

The atmosphere is a mixture of gases that we call air. On a dry volume basis, it consists of about 78 percent nitrogen and 21 percent oxygen. The remainder of about one percent consists of argon, carbon dioxide and very small amounts of other gases. The atmosphere is rarely, if ever, completely dry. Water vapor is almost always present up to about four percent of the total volume. In desert regions, when dry winds are blowing, water vapor in the air will be nearly zero. This climbs in other regions to about three percent on extremely hot and humid days. The upper limit, approaching four percent, applies to tropical areas.

Evaporation

It is the process by which any liquid is transformed into a gaseous state. The evaporation process requires an input of energy from the environment. For example, the evaporation of one gram of water requires 600 calories of heat energy.

Condensation

It is the process by which any gas is transformed into a solid or liquid state. The condensation process releases energy into the environment.

Precipitation

It is water released from clouds in the form of rain, freezing rain, sleet, snow, or hail. It is the primary connection in the water cycle that provides for the delivery of atmospheric water to the Earth. Most precipitation falls as rain.

Transpiration

It is the process by which moisture is carried through plants from roots to small pores on the underside of leaves, where it changes to vapor and is released to the atmosphere. Transpiration is essentially evaporation of water from plant leaves. Transpiration also includes a process called guttation, which is the loss of water in liquid form from the uninjured leaf or stem of the plant, principally through water stomata.



Saturation

When a gas holds the maximum water vapour possible at a given temperature, it is said to be saturated. If extra water is added to a saturated gas or if its temperature is reduced, some of the water vapour will condense.

Partial Pressure

A gas mixture such as air is made up of several pure gas components such as oxygen, nitrogen and others. The total pressure of the gas mixture is said to be the sum of partial pressures of the component gases. In room air, the partial pressure of water vapour is around 1000 Pa.

Saturation Vapour Pressure

The partial pressure of water vapor in saturated air is called the saturation vapor pressure. The higher the air temperature, the greater the saturation vapor pressure, as expressed by the Clausius-Clapeyron relation, which gives the saturation vapor pressure over a plane surface of pure water. Saturation vapor pressure increases rapidly with temperature.

Humidity

It is the amount of water vapour or moisture present in the atmosphere. The main source of moisture in the atmosphere is the evaporation of water from the Earth's surface and the transpiration by plants. Studies have revealed that about 10 percent of the moisture found in the atmosphere is released by plants through transpiration. The remaining 90 percent is mainly supplied by evaporation from oceans, seas, and other bodies of water (lakes, rivers, streams).

When warm air containing a lot of water vapor (high humidity) moves into colder temperatures (either high in the atmosphere or even on the outside of your glass of iced tea), the colder temperatures cause water vapor to condense into a liquid. The colder temperatures cause water vapor to condense into water droplets and can result in fog.

There are 3 types of humidity.

Specific Humidity

Specific humidity is the concentration, by mass, of water vapor in a sample of moist air. It is, therefore, the ratio of the mass of water vapor in a sample to the total mass of the sample moist air, including both the dry air and the water vapor. The mixing ratio is the ratio of the mass of water vapor to the mass of dry air in the sample. As ratios of masses, both specific humidity and mixing ratio are dimensionless numbers. However, because atmospheric concentrations of water vapor tend to be less than a few percent at the surface, and much lower at higher elevations, they are both often expressed in units of grams of water vapor per kilogram of (moist or dry) air. 

Absolute Humidity
 
Absolute humidity is the water vapor density, defined as the ratio of the mass of water vapor to the volume of associated moist air and generally expressed in grams per cubic meter.

Relative Humidity

It is the ratio of the actual vapor pressure to the saturation vapor pressure at the air temperature, and the result is expressed as a percentage. Because of the temperature dependence of the saturation vapor pressure, for a given value of relative humidity, warm air has more water vapor than cooler air. When air is cooled, at constant pressure and water vapor content, to the saturation (or condensation) point, the resulting air temperature is the dew point temperature. The difference between the actual temperature and the dew point is called the dew point depression.

Hygrometer

It is a device used to measure Humidity. It can measure a wide range of humidity depending on the sensitivity needs. Here is a table which indicates the types of Hygrometers and the principles of sensitivity employed by them.


Humidity and Economy

Humidity affects many properties of air, and of materials in contact with air. Water vapour is key agent in both weather and climate, and it is an important atmospheric greenhouse gas. A huge variety of manufacturing, storage and testing process are humidity-critical. Humidity measurements are used wherever there is a need to prevent condensation, corrosion, mould, warping or other spoilage of products. This is highly relevant for foods, pharmaceuticals, chemicals, fuels, wood, paper, and many other products.

Air-conditioning systems in buildings often control humidity, and significant energy may go into cooling the air to remove water vapour. Humidity measurements contribute both to achieving correct environmental conditions and to minimising the energy cost of this.
 
Humidity and Humans

The usual values of humidity that we come across in daily weather updates is relative humidity. Human body temperature is dependent on the air as it absorbs and removes moisture from our skin to cool us down.  If the relative humidity is high, the amount of water evaporating from our skin is limited so we feel warm and stifled.

The discomfort associated with high humidity is somewhat analogous to the wind chill effect, where high winds make people feel colder. Various indices, comparable to the wind chill index, have been developed to quantify the humidity effect; these include the apparent temperature, heat stress index, "humiture", and "humidex". Some of these can be adjusted to take into account the effects on solar radiation, wind speed, and barometric pressure on human comfort.

The U.S. National Weather Service currently employs the "heat index." As relative humidity increases, so does human discomfort. For example, at an air temperature of 90oF (32oC) and 50% relative humidity, the air "feels" as if it were 96oF (36oC). The reason is that the moister the air, the larger the resistance to moisture loss (and therefore to heat loss via evaporation) from the human body to the air, because the air is closer to saturation. The humidity effect on comfort operates at low temperatures as well: people are more comfortable in cold air when humidity is high than low.

At very high temperatures, air is rarely if ever close to saturation because the saturation vapor pressure is very large. Thus there are blank entries in the Table for high temperature and high relative humidity combinations. In the United States, the highest dew point temperatures to persist for at least 12 hours are in the upper 70'soF, which, combined with a temperature of 90oF, corresponds with relative humidities about 70%. Only where both air and nearby water surfaces become very warm (such as in the Persian Gulf or the Red Sea, or immediately following a rain shower that saturates the soil on a hot summer day) are higher temperatures and relative humidities seen.

Following is a very good indicator of the effects of humidity variations on humans.


A pleasant indoor climate is essential for a sense of well-being in the home. Room humidity can have a major impact on the quality of the living environment. A relative humidity (RH) of 40-60% is generally considered to be optimal for a comfortable and healthy home. Too much moisture can lead to mold and overheating. Too little causes dry eyes, chapped lips and an environment in which bacteria and viruses can thrive.

Humidity and Plants

Plants also respond to changes in humidity. Transpiration of water vapor through leaf stomata depends on the gradient of moisture between the leaf interior (which is saturated) and the overlying air, as well as the availability of moisture in the soil. The lower the atmospheric humidity, the greater the transpiration rate. The transpiration rate is determined by a balance between the amount of energy available to convert water from the liquid to vapor phase and the moisture gradient.

Transpiration rates also depend on the resistance to water movement between the leaf and the air. By analogy with the flow of electricity through a circuit with elements of different electrical resistance, the flow of water is modeled by considering the resistance of the leaf stomata, the leaf cuticle, and the air in the boundary layer adjacent to the leaf. Extension of this leaf model to crop fields or to natural plant ecosystems can be problematic, and more sophisticated micrometeorological methods are used.

Sunday, March 8, 2015

Tips on Better Effort Estimation in Agile Development

Work, Complexity & Efforts

Clients, bosses, customers and stakeholders care about how long a project will take. They don't care about how hard we have to think to deliver the project, except to the extent that the need to think hard implies schedule or cost risk.

While doing Agile Estimation, we assume, in general, the right person for the job will do the work. The effort is influenced by complexity, risk, and uncertainty.

Complexity is a factor to the extent it influences effort. Complexity on its own is irrelevant.

IEEE [3] defines software complexity as 
“the degree to which a system or component has a design or implementation that is difficult to understand and verify”.
It is often more of a psychological problem than an algorithmic one.

Characteristics of complexity

DO NOT UNDERTAKE TASK BREAKDOWN UNLESS YOU ARE 100% CLEAR ON REQUIREMENTS.

Rate the characteristics on a scale of 1-10 [1 indicating minimal complexity and 10 maximum]. If any characteristics scores 5 or more than 5, further breakdown of activities, risk analysis must be done.

Third Party Stakeholding
------------------------

1). What are the stakes involved?
2). How much interaction do you perceive?
3). Will they be involved in Design, Implementation or Testing?

Tools
-----

1). Is there a precedence of a similar task?
2). What is the level of confidence in the software tool involved?
3). Is there a Help available on demand?

Integration
-----------

1). What is the extent of dependency?
2). Are the integration points known in advance?
3). How much stubbing can be done?

Reviews
-------

1). Do we have subject area experts in the Team?
2). Will a prospective reviewer need some time to prepare for reviews?
3). What is the availability of the prospective reviewer?
4). What is the content of the work to be reviewed?
5). Will a face-to-face review help in quality/time gain?

Scalability
-----------

1). How much is the anticipated Nonlinear increase of usage?
2). Can the Tools chosen can handle the scaling required?

Testing
-------

1). Can the tests be automated?
2). How much can be covered via Unit Testing?
3). What help can be obtained from others?

Security
--------

1). How many of the known Security Checkpoints apply?
2). What is the expected rate of new findings?

Performance
-----------

1). Is there an existing benchmark?
2). What deviation is expected?

Sunday, February 8, 2015

Foie Gras -- Strong Liver Anybody?

Humphry Slocombe, a California ice-cream parlour, introduced foie gras ice-creams and sandwiches in 2008. The shop initially offered it only as an occasional delicacy, but when it became clear in 2012 that the state was about to ban foie gras, the demand for the products spiked. "We started serving it everyday till the last day possible" said Jake Godby, the chef and founder of Humphry Slocombe.

What is foie gras?

"Foie" in French means "liver" and "gras" in French means "fat". So, "foie gras" means the fattened liver of a force-fed goose or duck.

Who cares about it?

Foie gras consists mostly of fat, and its richness makes it a good match for sweet foods, which is why it’s often served with dessert wine. Another advantage of pairing foie with other high-fat ingredients like eggs and cream is that a little will go a long way. Foie gras is expensive - restaurants and distributors quoted me wholesale prices between $35 and $55 a pound, depending on quality - and most of these dishes are best served in small portions. Humphry Slocombe can make a gallon of foie gras ice cream with a single 1- to 2-pound lobe of foie. In turn, it makes about 100 $5 sandwiches out of that gallon.

Americans and French are heavy consumers of foie gras products. Many other countries also import foie gras and such dishes command a high price and following.

How is it prepared?

Poultry farm workers ram pipes down the male ducks' or geese's throats two or three times daily and pump as much as 4 pounds of grains and fats into animals' stomachs, causing their livers to swell up to 10 times their normal size. Many birds have difficulty standing because of their engorged livers, and they may tear out their own feathers and cannibalize each other out of stress. The birds are kept in tiny cages or packed into sheds. On some farms, a single worker may be expected to force-feed 500 birds three times each day. Because workers rush, animals are often treated roughly and left injured and suffering.

Is it so cruel?

Foie gras was banned in California in July 2012, on the ground that it was cruel to force-feed a duck to fatten its liver. Force-feeding has also been outlawed in Austria, the Czech Republic, Denmark, Finland, Germany, Israel, Italy, Luxembourg, the Netherlands, Norway, Poland, South Africa, Sweden, Switzerland, and the U.K. India has banned the import of foie gras, meaning that it cannot legally be sold anywhere in the country.

A PETA investigation at Hudson Valley Foie Gras in New York (then called “Commonwealth Enterprises”) found that so many ducks died when their organs ruptured from overfeeding that workers who killed fewer than 50 birds per month were given a bonus. Many ducks develop foot infections, kidney necrosis, spleen damage, bruised and broken bills, and tumor-like lumps in their throats. One duck had a maggot-infested neck wound so severe that water spilled out of it when he drank.

Another PETA investigation at Hudson Valley in 2013 documented that prior to the force-feeding period, young ducks were crammed by the thousands into huge warehouse-like sheds in conditions that are virtually identical to those for “broiler” chickens and turkeys on factory farms. Ducks who were being force-fed were confined up to a dozen at a time to a pen measuring just 4 feet by 6 feet. PETA’s investigator saw workers drag ducks by their necks along the wire floor and pin the ducks between their legs before ramming the metal force-feeding tubes down their throats.



By Hudson Valley’s own calculations, approximately 15,000 ducks on the farm die every year before they can be slaughtered. Common causes of death on foie gras farms include ruptured organs, throat injuries, liver failure, and heat stress—all direct results of force-feeding. Some ducks die of aspiration pneumonia, which occurs when the grain is forced down into the ducks’ lungs or when birds choke on their own vomit. Ducks at Hudson Valley are killed on site, and PETA’s investigator documented at least one bird still moving after his throat had been cut.

What you may choose to do?

Unfortunately, a recent ruling in California has overturned the previous ban. And life in California will continue to be a part of the pains suffered by the foie gras animals. If you have any intention of eating foie gras, I request you to please reconsider.