I'm having a bit of trouble getting caustics to look right, I'm not sure what the problem is. My emmission code looks good an the results of the photon intersections appear to be accurate, as in they fall within cones aimed at the reflective and transparent objects. The algorithem for picking a point in a cone is pretty cool, its of my own design. If we need three pieces of information about the cone, the starting point or tip, the center of the base, and the radius at the base. To pick a direction that lies with in the cone's volume we first pick a point on the unit hemisphere oriented along the ray from the start to the end of the cone. We then scale that point by the radius of the cone and add that scaled point onto the end point, this creates a point on a hemisphere glued to the end of the cone. Our direction is then the unit vector from the start to this new point.
Here's a picture of the caustics as they stand: