I still haven't figured out though how to stop wave reflection at the edges though...
This works remarkably well; you can see this approach in action in http://www.falstad.com/ripple/ for instance. Source code is included on the page.
http://psych.colorado.edu/~oreilly/emewave.html
The movies at the bottom of the page are great, and if you want to see how it's done, his papers give a thorough and rigorous explanation that is easy to translate into code.
(I'm working on hacking together sims myself but for a larger project--I'm part of a computation group at some state uni modeling HED plasmas.)