Programing puzzles can be a great way to practice your skills and kill time between projects. What sources do you use for programing puzzles?
Try Project Euler.
Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
Ruby: http://rubyquiz.com/ Python: http://www.pythonchallenge.com/
as mentioned before here, project euler is hard to beat
edit: by before i meant in other questions, but now see someone was quicker on the type!
'Hard' programming interview questions
http://everything2.com/title/hard%2520interview%2520questions
I found that the Python Challenge was a good way to learn Python. The puzzles start out very easy but ramp up in difficulty fairly quickly. They're set up in a good sequence to guide you to explore the Python libraries.
University of waterloo's programming contest puzzles are quite good. Definitely recommended for college students.
You can also search their archive for Past Waterloo Contests. Also check out previous ACM ICPC problem set archive.
Project Eureka has some interesting programming puzzles, however it is not limited to programming, there are other interesting categories as well (like ligic/probability puzzles).
Programming Praxis has some pretty sweet programming exercises, with official solutions in Scheme. Visitors also posts solutions, notably in Haskell.
CodeChef, especially for Indians (because of the competitions).
The Google Code Jam is missing!
Interesting challenges - Start with "Qualification Round" (bottom to top), after, it gets pretty tricky!
An originality of Google code Jam: you don't need to test your program remotely. Google provides you with sets of data (short / long) that you apply to your program, thus any language is accepted.
The validity of your program depends on its output (sent to Google).