Peel and finely grate the ginger. Coarsely chop the coriander, keeping the stems and leaves separate. Finely grate the zest of half the lime, then juice the lime.
Step 2 — Start curry
Heat 2 tbs oil in a large deep frypan over high heat. Cook the ginger and curry powder, stirring, for 1-2 mins until fragrant. Add the coconut milk, tomatoes, coriander stems, lime zest and 150ml water and bring to a simmer. Reduce heat to low (it's important the curry doesn't boil or the coconut milk may separate). Cook, covered, for 10 mins to develop the flavour.
Step 3 — Cook rice
Meanwhile, rinse the rice until the water runs clear. Put in a medium saucepan with 450ml water, cover and bring to a simmer over medium heat. Reduce the heat to low and cook for 12 mins or until tender and the water is absorbed. Turn off the heat and stand, covered, for at least 5 mins.
Step 4 — Finish prep
While the curry and rice are cooking, trim the beans, then halve on an angle. Thinly slice the chilli, discarding the seeds if less heat is desired. (You can leave the chilli out if you prefer.)
Step 5 — Finish curry
Add the fish and beans to the curry and cook, covered, for 10 mins or until the fish and beans are just cooked. Stir the fish sauce, 1½ tbs lime juice (if the lime doesn't yield enough juice, make up the amount with white vinegar), 2 tsp sugar, 2 tsp white vinegar and 1 tsp soy sauce into the curry. Remove the pan from the heat.
Step 6 — Get ready to serve
Fluff the rice with a fork. Flake the fish into chunks using 2 forks. Scatter over the chilli and remaining coriander. Serve the rice and curry at the table.