How do you improve your ability to design your applications? Where do you get your design ideas from? (I am asking about code design - not about a specific language and not about visual appeal).
When I started programming, I found Design Patterns to be very helpful. These days I mainly poke around open source projects to see what other people did whenever I need to solve similar problems.
What do you do?