Capacity-approaching codes