My main use of Smalltalk is prototyping ideas and coding for fun, although I occasionally develop useful tools for in-house use by my customers. One might ask why I do not use famous Java for this?! My answer is, that, while e.g. the statically typed Java is a nice language, it fundamentally lacks the ease that a dynamically typed language like Smalltalk offers. After coding in Smalltalk for a day and going back to e.g. Java, one wonders why there must be so much syntactic "noise" to express ones ideas.
Another thing I particularly like about Smalltalk over most other languages is the infix notation.
A method like
Also, in Smalltalk you typically work in a so-called image-based environment. This means, that not only your code but also all the objects you presently worked with are saved and restored when you restart the environment. This saved me many hours of writing code just to store and restore object states in my prototyping.
Moreover, in Smalltalk your coding changes the live system on the fly thereby changing behaviour of your objects.
This allows you to play with your ideas better than in any other environment I know.