30 May 2026 · 560 words
Never trade the sun for shade: summer mode in FOMO Sun
FOMO Sun was born in February, on a grey Plateau morning. It answers one question: where is there more sun than here? In winter that is the whole job. Then May arrived, Basel hit 28°C, and a friend asked the summer version: where can I go that is cooler, but still nice?
That sounds like a small change. It isn’t. Asked carelessly, “cooler” finds you a valley full of cloud.
The rule
Before writing any code I wrote one sentence down: never advise bad weather just to cool off. Sun stays the main thing; comfort is a layer on top.
It turned out the engine broke that rule already. The “cooler” check from the spring had no sun test at all. An overcast valley 6°C colder than a hot city qualified as a cool escape. On a heatwave day the opposite happened too: a 26°C city treated a 32°C town as an improvement, because “warmer” was always good.
What 1.19 changed
A sweet spot you choose. Four presets: Cool (18 to 24°C), Mild (22 to 28°C), Warm (24 to 30°C, the default) and Hot (28 to 34°C). The app remembers your choice.
Cooler only when it helps. A place counts as a cool-down when home is above your sweet spot, the place is at least 5°C cooler without dropping into cold, and it keeps at least 90 % of home’s sun. The last condition is the fix. No sun, no recommendation.
Warmer only when it helps. A warmer place counts only when home is below your sweet spot. In a heatwave, nobody needs to be sent somewhere hotter.
A section of its own. On hot days a “Cooler and still sunny” list appears under the main pick. Think Weissenstein above Solothurn at 1,395 m, or Creux du Van at 1,463 m: often 8 to 10°C cooler than the city at their feet, under the same sun.
Wind, as a detail. Cool-down cards say “light breeze” or “breezy” when it’s true. It never changes the ranking; it just tells you what it will feel like up there.
The boring part that made it safe
Two weeks earlier, 1.18 had been a pure safety release. An audit found the riskiest maths in the ranking (fog adjustments, the penalty for a foggy home, sun lost while travelling, the day’s top temperature) living inline in one big file with no tests at all. I moved it into its own module and wrote 30 tests around it, without changing a single result.
That is what made 1.19 possible in a weekend. The new temperature gates could be tested as a matrix (heatwave, cold snap, custom sweet spot, the sun floor) before anything shipped. 218 tests by the end of May, up from zero in March.
What I learned
Write the rule before the code. “Never trade the sun for shade” caught a bug that had been live for weeks.
Comfort is personal. 24°C is perfect for one person and chilly for another. A preset is better than a guess.
Refactor before you add. The summer feature was easy because the release before it changed nothing visible.