View functions don't consume GAS
Yes it does, when you call it inside another function, but not when you "normally" call it.
ABI encodePacked to concatenate strings