Writing portable code