I recently joined TopCoder and have been solving a few problems on the site. Now, I want to publicly post my solutions onto my blog and have others go over it, suggest improvements, better design, etc. wherever applicable. Would this be ethical?
I honestly don't see the problem. As long as it is your code, are not being paid (I'm talking privacy agreements/intellectual property clauses with a client for this), and you are aiming to help others learn from it, I cannot see the harm.
This might be useful
We hereby give you permission to download and print materials from this Web site for the sole purposes of viewing, reading, and retaining for reference the materials for non-commercial use. Any other copying, distribution, retransmission, or modification of information or materials on this Web site, whether in electronic or other form, without our express prior written permission is strictly prohibited. You further agree that you will not disassemble, decompile, reverse engineer or otherwise modify the material on this Web site. Any unauthorized or prohibited use may subject the offender to civil liability and criminal prosecution under applicable laws.
http://www.topcoder.com/tc?module=Static&d1=about&d2=terms
I'd say, it really depends on what you're doing - in an active contest this would'nt be a nice thing to do - especially when there is an explicit "rule":
Contestants must not cheat; all ideas for any code and/or challenge submitted must be the contestant's alone.
Solutions are already public. You can see other people's solutions in the practice rooms. I don't see why you shouldn't post yours on your blog too.
I would highly recommend reading the solutions of some highly rated contestants, if you would like to learn how to write short and clear solutions. Those guys usually have a good mental model of what they are doing.