skateable.skateable.

Skateboarding Dryness Engine (SDE) ©

How skateable. predicts whether a spot is dry enough to skate

Backed by science

Real physics. Not guesswork.

skateable.'s scoring engine keeps track of the water sitting on a spot, hour by hour: rain in, evaporation out, dew and frost along the way. Evaporation comes from the same Penman-Monteith equation hydrologists use, and the model is checked against sensors that measure whether real road surfaces are wet or dry.

How a score is made

Every score, whether it is now, an hour ago or tomorrow morning, goes through the same steps, and the score ring, forecast chart, widgets, watch, CarPlay, Android Auto and Apple TV all run this one engine.

SKATEBOARDING DRYNESS ENGINE v2
────────────────────────────────────────────────

1. Water balance                    // every hour, oldest first
   W = W - E - soak                    // E = evaporation, soak = into the pores
   W = min(C, W + rain)                // C = film the surface can hold
   P = P + overflow - drain            // P = standing water in low spots
   W = W + dew                         // instead of E, surface below dew point
   below 0 C: water turns to ice, and ice must melt before it dries
        |
        v
2. Evaporation                      // FAO-56 hourly Penman-Monteith
   E = ET0(T, RH, wind, Rn)
   Rn = sun at this hour, place and date, after cloud, shade and albedo
        |
        v
3. Wetness ceiling
   ceiling = 100 when dry, falling as W / C rises, lowest when frozen
        |
        v
4. Conditions                       // how dry the air keeps a dry surface
   Dcond = humidity, cold, wind, sun, condensation, frost
          + nudge from recent dry/wet reports
        |
        v
5. Score
   S = min(Dcond, ceiling) - session window penalty
   Ddisplay = 100 - (100 - S)(2 - G) + P
   G = grip of the surface, P = your tolerance setting

Four generations of scoring

The skateability score has been rebuilt several times. Every version produces a 0 to 100 score for how dry and skateable a spot is. The original v1.0 is described further down.

Capability v1.1 SDE v1.2 SDE v2
Park attributes (surface, sun, drainage) Yes Yes Yes
Community dry/wet reports Yes Yes Yes
Drying speed depends on the weather (VPD, sun, wind) No Yes Yes
Session window, forecast confidence and amount No Yes Yes
Score forecast timeline with per-hour explanation No Yes Yes
Grip per surface, wind chill, frost, environment attributes No Yes Yes
Tracks the water on the surface, hour by hour No No Yes
FAO-56 hourly Penman-Monteith evaporation No No Yes
Dew wets the surface; ice melts before it dries No No Yes
Rain measured by gauges near starred spots No No Yes
Checked against road-surface sensors No No Yes
One engine on phone, widgets, watch, cars and TV No No Yes

Skateboarding Dryness Engine (SDE) v2

SDE v1.2 estimated drying with a curve that started when it last rained, its speed set by the weather at the moment of scoring. It never followed the water itself: rain at dusk that sat through a cold, damp night could read as nearly dry by morning if the morning looked good. SDE v2 keeps a running total of the water on the surface instead, from 48 hours before now through the forecast.

Water balance

Each hour, rain adds water and evaporation takes it away. The engine tracks it in three places:

Surface film, each hour W = min(C, max(0, W - E - soak) + rain)
where C = film the surface can hold, E = evaporation, soak = water drawn into the pores

The hour's evaporation comes off first and its rain lands after, so an hour that was rained on always ends wet. On an hour when the surface is below the dew point, nothing evaporates and dew is added instead.

Because the water carries from hour to hour, drying follows the weather as it actually happens: rain at dusk dries slowly through a still, damp night and faster on a breezy one, a light drizzle that never fills the surface clears sooner, and a shaded spot with poor drainage stays wet long after a sunny smooth deck. The "EST. DRY IN" time is simply when the forecast hours clear both the film and the standing water.

Evaporation

Evaporation uses the hourly Penman-Monteith reference equation from the UN FAO's Irrigation and Drainage Paper 56, the global standard for estimating evaporation from weather data. The engine uses its form for open water, because rain on a deck is a thin film with nothing like a leaf holding it back, and scales the wind's part for a flat slab: air moves more smoothly over concrete than over grass, so it carries vapour away more slowly. Two forces drive it:

Vapour pressure deficit VPD = es(T) x (1 - RH / 100)
where es(T) = 0.611 x exp(17.27 x T / (T + 237.3))

Dew, frost and ice

On clear, still nights a surface cools below the air. When it drops below the dew point, water condenses onto it, so a spot can turn damp without any rain. Below freezing, surface water turns to ice. Ice does not evaporate: it has to melt first, then the meltwater dries like rain. A frozen wet surface scores very low until it thaws.

Materials

Different surfaces take in sunlight and hold water differently. These are the values the engine uses:

Material Albedo Holds water Grip
Asphalt 0.10 Medium 0.95
Modern concrete 0.35 Low 1.0
Aged concrete 0.25 High 0.92
Wood 0.25 Highest 0.8
Metal 0.40 Lowest 0.6

Albedo is how much sunlight a surface reflects. Asphalt (0.10) absorbs 90% of it and dries faster in sun; metal (0.40) reflects much more.

Grip only matters when the surface is wet. A dry surface in good conditions scores 100 whatever it is made of. When wet, low grip makes the wetness count for more: a damp metal ramp scores lower than damp concrete, because wet metal is genuinely dangerous.

From water to a score

Two things set the score, and the lower one wins:

Community reports

Weather models describe an area, not your spot. When skaters log a session as dry or wet, recent reports nudge the score towards what they saw. Each report fades with a 30-minute half-life, agreeing reports add up with diminishing returns, conflicting reports cancel out, and the total nudge is capped at 15 points so reports never override the physics.

Report nudge weight = e-λt, λ = ln(2) / 30 min
nudge = sign(net) x min(√|net| x 3, 15)

Measured rain

Forecast models sometimes miss a shower completely. For starred spots in England, skateable. also reads Environment Agency rain gauges near the spot every hour, and the phone remembers any rain it saw in a live reading. For each hour the engine takes the wetter of the forecast model and what was measured.

Rain gauge data: Environment Agency, Open Government Licence v3.0.

Display filter

Display score Ddisplay = 100 - (100 - S) x (2 - G) + P
When dry (S = 100): Ddisplay = 100 for every material

Checked against real roads

Skate spots have no sensors, but roads do. Finland's road weather stations report every few minutes whether the road surface is dry, moist or wet, alongside the weather. The engine's settings were tuned on hundreds of these stations and then tested on stations and days it had not seen. The tuning is repeated as more rain events are collected.

Road weather data: Fintraffic / digitraffic.fi, license CC 4.0 BY.

What changed in practice

The same 2 mm shower on two different spots, scored by SDE v2 with today's settings, with the weather after the rain held steady.

Spot Weather after the rain Dry after
Smooth concrete, direct sun, good drainage June midday, 22C, 55% humidity Within the hour
Smooth concrete, direct sun, good drainage October evening, 9C, 88%, overcast ~19 hours
Aged concrete, full shade, poor drainage June midday, 22C, 55% humidity ~22 hours
Aged concrete, full shade, poor drainage October evening, 9C, 88%, overcast Still wet 2 days later

A sunny summer deck really does clear fast, and a shady, badly drained corner really does stay wet for a day or more. The score now shows both.

Score forecast timeline

Because the engine scores every hour, it produces a full score trajectory: the past 48 hours and the forecast ahead. The water carries through the whole timeline, so the chart, the score ring and the "EST. DRY IN" time always agree.

Tap the score ring on the Dashboard to see the forecast. The chart shows how the score has changed and how it is predicted to change, with colour-coded fills (green for dry, amber for drying, red for wet) and optional weather overlays for temperature, wind, rain, and humidity.

A mini preview of the forecast curve also appears inside the score ring itself, giving you an at-a-glance sense of the trend without opening the full forecast view.

Session window

If rain is forecast within 2 hours, the score drops to reflect the shrinking window for a session. The closer the rain, the larger the penalty (up to -15 points). The dashboard hint shows when rain arrives.

Session window penalty penalty = 15 x (1 - train / 120 min) x confidence

Forecast confidence, not just timing

A 45% chance of rain and a 95% chance of rain should not read the same. The engine scales both the penalty and the message by the forecast probability:

Amount threshold

Probability alone isn't enough. A 90% chance of 0.1 mm drizzle is not a session-ending event. A forecast hour has to carry at least 0.3 mm of rain before it counts as the next rain; drizzle hours are skipped and the engine looks further ahead.

Latitude-aware sun

The engine works out the sun's height for each spot and each hour from its latitude, longitude and the date, rather than assuming a fixed day. In a UK summer that means drying sun from about 4:30am to 9:30pm; in winter the sun is lower and the days are short, so the same shower takes far longer to clear. In Scandinavia the difference is larger still.

Solar declination decl = -23.45 x cos(2π x (doy + 10) / 365)

Wind chill awareness

When wind makes it feel significantly colder than the air temperature (3C+ difference), the dashboard hint shows the feels-like temperature using the North American Wind Chill Index formula. The surface might be dry, but you will want an extra layer.

Wind Chill Index WCI = 13.12 + 0.6215T - 11.37V^0.16 + 0.3965TV^0.16
where T = air temp (C), V = wind speed (km/h)

Ice, frost, and snow detection

Freezing works on two levels. Water already on the surface turns to ice, which holds the score very low until it melts (see Dew, frost and ice above). A dry surface in freezing air gets a gentler penalty, using air temperature adjusted for wind chill:

The penalties for a dry surface are intentionally gentle. Cold air is frequently very dry, and a light overnight frost burns off quickly in morning sun. The hints warn you to watch for slick patches without crying wolf.

Environment attributes

Five optional per-spot attributes let the engine account for local conditions that weather data alone cannot capture:

Attribute Options Effect on scoring
Cover None / Partial / Full Full cover keeps all rain off. Partial cover keeps off 60%. A fully covered park stays dry through a downpour.
Wind exposure Sheltered / Normal / Exposed Scales the wind used for evaporation: sheltered 0.4x, exposed 1.5x.
Elevation Low-lying / Level / Elevated Elevated spots drain one tier better (poor becomes average). Low-lying spots hold more standing water.
Tree cover On / Off Trees keep dripping after rain stops, adding water for the hour after.
Nearby water On / Off Coastal or riverside spots have higher local humidity. The engine adds 8 percentage points to the humidity it uses.

All environment attributes are optional. Parks without them use sensible defaults (no cover, normal wind, level, no trees, no water).

SDE v1.2 Legacy

SDE v1.2 replaced the points model with weather-driven drying. It found the last hour with at least 0.3 mm of rain, then recovered the score along an exponential curve whose speed depended on VPD, surface porosity and day or night.

k = 0.02 (1 + 2 VPD)(1 - 0.3 porosity) fnight   // drying constant
D = Dbase (1 - e-kt)                       // t = minutes since rain
while raining: fixed low floors; poor drainage capped at 60%

Remaining limitations

Engine v1.1 Legacy

Version 1.1 introduced park attributes and community session data, making the score location-specific for the first time.

How it worked

The base model was the same additive approach as v1.0, but with four new modifier terms for surface type, sun exposure, drainage quality, and temperature. Community session reports also contributed: each recent dry session added +5 (up to +15), while each wet session subtracted 10 (up to -30).

Score = 100 - precipitation penalty (0 to 100) - humidity penalty (0 to 20) + wind bonus (0 to 15) + surface modifier (-10 to +8) + sun modifier (-5 to +12) + drainage modifier (-15 to +10) + temperature modifier (-15 to +10) + tolerance offset (user setting) + session adjustment (community)

Improvements over v1.0

Remaining limitations

Engine v1.0 Legacy

The original scoring engine shipped with skateable. 1.0 in March 2025. It used a simple weather-only model: fetch current conditions and 48 hours of precipitation history, then apply penalties and bonuses.

How it worked

The score started at 100 and was reduced by precipitation and humidity penalties. A wind bonus partially offset those penalties. The rain decay was a linear ramp: immediately after rain the penalty was 70 points, tapering to zero over 6 hours.

Score = 100 - precipitation penalty (0 to 100) - humidity penalty (0 to 20) + wind bonus (0 to 15)

Limitations

Scientific foundations

The SDE is grounded in peer-reviewed research spanning decades of evaporation science and surface hydrology.

Penman, H. L. (1948) view ›

Natural evaporation from open water, bare soil and grass

The foundational work proving that evaporation depends on both energy supply (radiation) and the vapour pressure deficit, not temperature alone. This is the basis for the SDE's evaporation step.

Monteith, J. L. (1965) view ›

Evaporation and environment

Extended Penman's equation into the Penman-Monteith form, which combines the energy supply and the drying power of the air in one estimate of evaporation. The SDE's evaporation step uses this form.

Allen, R. G. et al. (1998) view ›

FAO Irrigation and Drainage Paper No. 56: Crop evapotranspiration

The UN FAO's standard method for the Penman-Monteith equation, including the hourly reference evaporation and net longwave radiation equations the SDE's water balance uses, adapted for wet hard surfaces.

Herb, W. R. et al. (2008) view ›

Ground surface temperature simulation for different land covers

Modelled surface temperature and evaporation for paved surfaces including concrete and asphalt under varying weather. Background for how surface material and exposure change how fast a surface warms, cools and dries.

Osczevski, R. & Bluestein, M. (2005) view ›

The new wind chill equivalent temperature chart

Defines the North American Wind Chill Index used for the SDE's feels-like temperature hint.

Meeus, J. (1991) view ›

Astronomical Algorithms

Provides the solar declination and hour angle equations used by the SDE's latitude-aware solar model. Accurate sunrise and sunset times mean the engine correctly accounts for 17-hour summer days in northern Europe versus 8-hour winter days.

Oke, T. R. (1987) view ›

Boundary Layer Climates

The standard reference for urban microclimate physics, including how albedo, thermal mass, and surface geometry affect local temperature and moisture. Background for the SDE's albedo values and night-time surface cooling.