All information provided on this blog is solely the viewpoint and opinion of Ryan O'Neill. It does not represent any opinions expressed by any other parties unless identified otherwise. All code is provided AS IS and without warranty. Use at your own risk.