Don't assume offset when reading a file
Propigate errors in streams
Clean up websocket codec
Add gamepad demo