Everything is good and fine, but you cannot have good type inference with dynamic typing and optional static typing. You cannot infer anything about untyped variables, only constants and functions&#x2F;ops with return types.
You can in stricter languages, where the type of a variable is not allowed to change, but in a dynamic languages type inference is limited to explicitly typed variables. 
You can infer a bit with function signatures and esp. with return types of your internal ops, but everything ends with your normal variable.<p>I also miss the argument that optional static types enable a proper FFI syntax.