Your Weather App Is Lying to You (And Your Window Knows It)

Published: (June 18, 2026 at 12:37 AM EDT)
3 min read
Source: Dev.to

Source: Dev.to

Your Weather App Is Lying to You (And Your Window Knows It)

I caught my weather app in 35 lies over 19 days. Here’s what I found. I pointed a $30 IP camera out my window in Shenzhen and built an automated conflict detector: Camera sees: brightness (RGB mean) + sound level (audio RMS) App says: Open-Meteo forecast (precipitation probability, cloud cover) When they disagree: log it, wait 2 hours, see who was right Over 19 days, I caught 35 conflicts: Lie #1: “It’s going to rain” (it didn’t) App said 100% rain. Window was bright and quiet. → Window right. ✅ App said 97% rain. Window was bright and quiet. → Window right. ✅ This happened 17 times. Window was right 11/17 (65%). Lie #2: “It’s not raining” (it was) App said 0% rain. Window heard rain sounds (RMS spike). → Window right. ✅ App said 5% rain. Window heard rain on glass. → Window right. ✅ This happened 11 times. Window was right every single time (100%). Lie #3: “It’s overcast” (it was bright) App said 99% cloud cover. Window measured high brightness. → Thin clouds letting light through. ✅ This happened 10 times. Particularly common in subtropical cities like Shenzhen. Weather apps see from 400km above. Satellites see cloud tops, not cloud thickness. Radar sees rain cells, not whether rain is actually reaching your window. High thin clouds (cirrus) let most light through but read as “100% cloud cover” from above. Local rain cells can be too small for radar to resolve at your exact address. Your window is a 1m² weather station with 0km uncertainty. The most reliable signal wasn’t brightness — it was sound.

Signal Accuracy for Rain Detection

Brightness alone ~52% (coin flip)

Audio RMS alone 100% for HIDDEN_RAIN

Combined 75% overall

If something is hitting your window hard enough to hear, it’s probably rain. Brightness correlates with rain only slightly better than random. Your ears are a better rain detector than your eyes. For developers: Build a local verification layer. It’s not hard:

The entire conflict detector is ~50 lines of Python

def detect_conflict(brightness, rms, precip_prob, cloud_cover): if precip_prob > 30 and brightness > 100 and rms 40: return “HIDDEN_RAIN” # App says dry, window hears rain if cloud_cover > 90 and brightness > 100: return “THIN_CLOUD” # App says overcast, window says bright

For everyone else: Next time your app says “100% rain” but it’s bright outside, look out the window. The app might be wrong about your location. I’m curious about your experiences: How often does your weather app get it wrong for your specific location? Have you ever ignored the app and looked outside instead? Were you right? Would you trust a camera-based verification system more than a satellite? Is 75% accuracy good enough for daily decisions (umbrella, laundry, outdoor plans)? Open source tool: github.com/citriac/window-truth

Full technical writeup: My 2014 MacBook Predicts Weather Better Than Your App

0 views
Back to Blog

Related posts

Read more »

The Model Doesn't Remember. You Do

Introduction Before I dug into how an LLM works, I assumed each chat stored its memory or context in its own. The moment I realized it was just an array with al...