← Back to blog

30 May 2026 · 560 words

Never trade the sun for shade: summer mode in FOMO Sun

producttechnical

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.