Some quick observations:
1. Try input#q:focus { outline: none } to get rid of the browser's focus glow on the search box, it's somewhat distracting.
2. It would be cool to have urls like http://howistheweather.in/10001 or http://howistheweather.in/San-Francisco. Or at least make the existing http://howistheweather.in/#10001 type urls work (by which I mean bookmarkable).
3. Hourly view would be a great addition.
4. Sliding share bar is distracting. Personally I can't think of a reason to share the weather (well, other than to gloat, I suppose), but either have it always visible or take it away.
- Focus on the input on load
- Detect location on load
- Get some auto-completion going (less than 3 clicks)
- Have the option for Celsius and Fahrenheit on the first page (You have a lot of space for it)
- Browser back functionality is not working after #links
- Keep the Sharing bar out the first time (no repeats)
- What does the 0228 #USFL0228 stand for in that link for Jacksonville NAS, FL ? (I am not familiar with US Zip Codes that well)
Some related sites you may want to check
http://www.thefuckingweather.com/
http://time.is/ ( This one does time well imho)
For quick and dirty, free geolocation APIs, not as restrictive as the popular ones, you can check out:
The bad: I don't want to rain on your parade, but I don't get the value proposition. Now I just type "chicago weather" in my chrome toolbar and google tells me everything I'm looking for.
More pointed advice, regarding execution:
1. There's only one thing to do on the front page. Make the input box already have focus so the user can just start typing.
2. Be smart about queries: I typed in "Chicago" http://howistheweather.in/#chicago which is a major US city, and I didn't get to a page that told me the weather. I got to a list of 10 matches: 8 in Chicago, 1 in Indiana, 1 in California. You should be returning whatever city Google returns to me.
3. I accidentally typed howstheweather.in instead of howistheweather.in, which does the same thing.
Does this really well. If you don't to use geolocation, just parse the IP.
It accidentally the whole temperature.
1. For some reason, the data is wrong. When I put in 92688, it comes up with Corona, CA - which is not correct.
2. When I focus on the input box, the border is not rounded, but the corners of the input box are rounded.
3. The 500 internal server error is ugly. To repeat, just put /asdf or anything else at the end of the domain name. Should probably be generating a 404.
4. You can also use html5 tags to try to get the location of the user - and fall back if no html5 support. Myriad of examples on web how to do this with both html5 and free services for <html5.