What every programmer should know about solid-state drives