it might make more sense for timeSinceUpdate to be called unprocessedTime. It keeps track of how much time has not been updated. When you run an update, you must remove the amount of time you are updating from the unprocessedTime.
Also, frame rate is different from update rate. Update should be called at 60 times per second currently, but the way you code is written, render() is called as fast as possible. IMO, this is a good thing: if you want there to be a cap on the fps use vSync.