Challenge yourself.
As many others have stated there are online-places such as Project Euler which will probably help you learn some programming, however in that special case you need to know a lot of other things than programming to get yourself around.
My suggestion is to try solve trivial problems, things that you think will help you on a day-by-day basis. Even if the solution already exists and it's re-inventing the wheel you will get a deeper knowledge in how these things might work.
Examples
- Program ToDo-List which automaticly sends you an sms / email or any other type of notification when it might think you are lazy and sync it with your calendar.
- Create a List of groseries and approximatly how often you need to refill them. Also, when the list is done and the software is working, create a module for it which allowes you to get recepies for the ingedients that you have home.
There are a lot of fun projects you can dig in to, easy problems, hard problems and boring problems. Don't beat yourself up if you can't solve everything.
And also, there are a lot of good books which might come in handy when freshening up your skills.
- Framework Design Guidelines - Get an idea how to create a huge API uses by thousands of people
- Reversing The secrets of Reverse Engingeering - If you want to dig even deeper ingo how programs operate and learn how to hack your own software to make it more secure, this is a defentive book.
- Code Complete - If you are thinking of changing your carrier to Software Development, you must read this great book which will give you insight in how to become a better programmer, @ office, @ home and everywhere else.
There are loads of other good books, but each of these books got hidden tasks which will help you learn new exiting things about programing.
Knowing one language is just the begining