Show HN: SF Microclimates
54 points
2 months ago
| 13 comments
| github.com
| HN
https://microclimates.solofounders.com/
meatmanek
2 months ago
[-]
My favorite weather map for SF is PurpleAir: https://map.purpleair.com/environment-estimated-temerature-f...

There are thousands of sensors around the city. You can get a sense of shade-vs-sun temperatures by the spread of numbers you see (on cloudy days, the reported temperatures will be much closer together, while on sunny days, sensors in the sun will report elevated temperatures.)

You do need to make sure to disable indoor sensors, and keep in mind that some sensors are faulty. (I've seen some that have been reporting a constant temperature for years.)

reply
why_at
2 months ago
[-]
This one is neat, I might actually use it.

I don't understand why it includes indoor sensors at all let alone by default. Why would I want to know the temperature inside some random building?

reply
weisser
2 months ago
[-]
> I don't understand why it includes indoor sensors at all let alone by default.

Add location_type=0 to only get outdoor sensors

reply
fragmede
2 months ago
[-]
or just click the buttons that accomplish the same thing. The point is someone at PurpleAir is asleep at the wheel if such an obvious default configuration isn't being set. If they can't get such a basic thing right, why do we trust anything else from them? "Anything else" specifically including "running their software on a raspberry pi inside my home network".
reply
roughly
2 months ago
[-]
Because PurpleAir is not a weather service, they’re a sensor company.
reply
BigBalli
2 months ago
[-]
The project is using PurpleAir data.

Footer should say "Data from PurpleAir API" instead of "Data from SF Microclimates API"...

reply
650REDHAIR
2 months ago
[-]
I use that and Mr. Chilly.

Mr. Chilly is one of those niche apps that sparks joy and reminds me of the early app days.

reply
weisser
2 months ago
[-]
This was directly inspired by Mr Chilly which was designed by my friend Anna Bleker.

It's an excellent iOS app: https://mr-chilly.com/

My goal was to do something similar as a Claude Code skill

reply
jonpurdy
2 months ago
[-]
I use Mr Chilly to demonstrate to non-SF folks how many microclimates SF (and the Bay Area has).

Only suggestion: separate Inner and Outer Sunset since there can be a massive difference between near Ocean Beach and near Irving/9th Ave in autumn (ie. SF's hottest season).

Edit: nevermind, just saw both inner_sunset and outer_sunset in /neighborhoods. I'd assumed it was merged based on the human readable list on the landing page. Thanks for the fun API!

reply
weisser
2 months ago
[-]
thanks I will update the homepage to reflect this.
reply
why_at
2 months ago
[-]
It seems weird to me that there's no human readable version on the webpage?

Usually what I want the weather for is to choose what to wear, not to put in a bash script or an LLM or something.

reply
weisser
2 months ago
[-]
I made this primarily to use inside Claude Code in terminal but maybe I'll make a little demo on the website if you put in an SF zip code.
reply
weisser
2 months ago
[-]
reply
aurareturn
2 months ago
[-]
Here you go: https://v0-weather-app-one-coral.vercel.app/

Made it in about 5 minutes with v0.

reply
trehans
2 months ago
[-]
Can I suggest changing background color of the tiles between blue and red to indicate how warm each spot is? Would make it easier at a glance.
reply
graupel
2 months ago
[-]
As a Meteorologist, I love this! There is one little thing to be aware of with using Purple Air for temperatures, though, as their primary purpose is AQI not temp, all temp data comes with this disclaimer. That said, everything is still at lease directionally accurate.

"Temperature, estimated using a formula temp = 1.0227 * raw_temp_f - 9.3755 developed by Lance Wallace to account for heat generated by the WiFi module and other electronics in a PurpleAir sensor. This will not be accurate for all situations. More information can be found in Lance Wallace's notes."

reply
forthwall
2 months ago
[-]
An interesting problem with self-reported temperature is that people just put their outdoor sensors inside for some reason or near an ambient heat source; also in neighborhoods with tall buildings, it's a bit colder higher up, so the balcony readers are a bit off from sidewalk temperature, it is interesting to see though that one block from another is super different in temp, is it because it's actually different or is there something heating/cooling the sensor off randomly
reply
kfarr
2 months ago
[-]
Yeah it’s not accurate at all. Not the OPs fault but the purpleair sensors are placed by users. Right now it says fidi is 9° warmer than haight. Plausible, but it could also be the only 1 sensor reporting from fidi is on a balcony near a drier vent.
reply
quesera
2 months ago
[-]
More than plausible, for 8am on a January morning!

I used to ride a motorcycle every day from the Haight (home) to the Financial District (work), and the temperature grade changes were palpable.

Your point is also completely correct, of course. :)

reply
aurareturn
2 months ago
[-]
I made a quick website from this API that shows all of the neighborhoods, searchable, sortable.

https://v0-weather-app-one-coral.vercel.app/

Surprisingly, Lands End is the highest temp right now.

reply
jluxenberg
2 months ago
[-]
Inspired by this, I made a map: https://climate-map--jaredluxenberg1.replit.app/

Kinda neat!

reply
brdd
2 months ago
[-]
I use PurpleAir data for a lot of my home automations— I have a smart window vent and configure it to blow in/out depending on which side has the worse air.

(Thank you to those who maintain public sensors!)

I do notice that in my neighborhood (Noe Valley) a lot of the sensors are very incorrect or often offline. I've resorted to taking the median and throwing outliers away, but even this often doesn't work. This is the challenge of relying on crowdsourced data I suppose...

reply
ramraj07
2 months ago
[-]
If your MEDIAN is biased, and there are 10+ inputs, the data is fundamentally garbage and biased.
reply
brdd
1 month ago
[-]
it's meant to throw out crazy low or crazy high numbers. i monitor 5 nearby stations and usually only 1-2 of them are bad (which is tolerable but not ideal).
reply
lubujackson
2 months ago
[-]
Love the idea, but tried "japantown" which is mentioned in the README but doesn't exist in the app? https://microclimates.solofounders.com/sf-weather/japantown
reply
weisser
2 months ago
[-]
thanks for catching this. just fixed.

note that I also have a system where if the temperature seems outlier compared to direct neighbors it averages the 3 nearest neighbors. this usually occurs in neighborhoods with a single sensor that can skew the results heavily at certain times of the day, etc.

reply
NathanFlurry
2 months ago
[-]
Love it

Hacked together an SF parks ranking system based on current weather

https://sfparks.nathanflurry.com/

reply
____tom____
2 months ago
[-]
How does this compare to https://www.wunderground.com ?

Is that the source of the data?

reply
weisser
2 months ago
[-]
Purple Air is the primary source but it's open source and you could try other providers https://github.com/solo-founders/sf-microclimates
reply
lukevp
2 months ago
[-]
This happens in Portland as well! Can this be adapted/updated to work here?
reply
weisser
2 months ago
[-]
Fork the Github! Would love to see it elsewhere :)
reply
x3n0ph3n3
2 months ago
[-]
Multiple neighborhoods have no data, including Lakeside and Stonestown.
reply
weisser
2 months ago
[-]
Good flag. I've just added add fallback to the nearest location with a sensor to the repo.
reply
spicycorncheese
2 months ago
[-]
Is it possible to get individual sensor data via this API?
reply
weisser
2 months ago
[-]
no I made this primarily for a Claude Code / Clawdbot skill so I am not making it super sophisticated.

You should use Purple Air if you want to make it more focused https://www2.purpleair.com/

reply
baby
2 months ago
[-]
Can you do celsius
reply
weisser
2 months ago
[-]
submit a PR
reply