Ignore it almost everywhere. It's not as problematic when limited to simple things like bool or int, but for more complex types, you don't want to tie down the type to the identifier, specially in public interfaces.
Additionally:
1. Descriptive names are a lot more useful than Hungarian.
2. If your function is so long that you can't see all the variable declarations, you have bigger problems than naming.
3. If you're working with an IDE, hovering over a name is usually enough find out its type, and it works much better.
EDIT:
Personally, I don't agree with that solution. Since
all user strings are supposed to be unsafe, make the user input function return unsafe_string and the write function take a safe_string. Then you just add
safe_string encode(unsafe_string)
and done! Now semantically incorrect code doesn't just look incorrect, it doesn't even compile.
I don't know if that's possible in the language mentioned there, but that's how I would do it in a language with strong typing and user types.