Peel and devein shrimp, reserving heads.
In a bowl, combine shrimp heads and water. With the back of a spoon, mash heads to extract the juice. Strain and discard shrimp heads. Reserve the liquid.
Cut and discard stem and lower end of upo. Using a peeler or a paring knife, peel skin. Cut the gourd lengthwise.
If the interior is "too spongy" and has mature seeds, remove spongy flesh using a spoon and discard. Slice halves again lengthwise into halves and then slice into ½ inch thickness.
In a wide pan over medium heat, heat oil. Add onions and garlic and cook, stirring regularly, until softened.
Add tomatoes and continue to cook, mashing regularly with the back of a spoon, until softened.
Add fish sauce and cook for about 1 to 2 minutes.
Add shrimp and continue to cook just until color changes to pink.
Add upo and stir gently to combine.
Add the reserved liquid and bring to a boil.
Continue to cook, uncovered, for about 5 to 6 minutes or until upo is tender yet crisp and shrimp are cooked.
Season with salt and pepper to taste. Serve hot.