I didn't expect this to be so thorough, particularly around Windows compatibility (eg Windows will allow you to seek out of bounds but error on write, Linux errors on the seek) and unicode support. But even really simple things like I didn't realise you could seek backwards, or arbitrarily forwards in xxd, or have overlapping writes.