Text this: A New Penalty Function Algorithm For Convex Quadratic Programming