"interface{} is a code smell unless your function truly takes anything" seems wrong to me because I frequently find myself using interface anytime my function can take multiply typed maps or slices (as a substitute for a generic) and I don't think you can use an expression to indicate all slices of all types.
In that case, you start with a type assertion using reflection (is a slice of something) but you can't avoid taking an interface.
It's a minor nit; overall this article is very well written and rings true.