Joe Pantuso

What's Changed Since the First Test

August 21, 2026

tl;dr Version 1.2 is on the App Store today. The app can now tell you a crash is in the canyon before you drive into it. Check in the app settings screen that you have the latest.

The initial release of How’s the Canyon could see a crash and had no way to say so.

That got fixed, and it got fixed because of a specific morning. Two updates have gone out since launch day, 1.1 on the 13th and 1.2 today, and most of what is in them traces back to one crash in the canyon on August 14th that the system watched and then sat on.

Worth updating. Here’s what you get.

The morning that changed the app

At 6:25 on the morning of August 14th, the Highway Patrol dispatched a unit to an injury crash on US-191 at milepost 57, just south of Swan Creek. The first trooper’s arrival is stamped at 7:44.

That’s 78 minutes. Be careful with that number though: the MHP data gives one arrival time, and it doesn’t say whether a fire or EMS unit got there first. MHP can be busy and far away, it’s the first responders we rely upon who save the day. So this is the highway patrol’s arrival, not the moment help reached anybody. It is still the whole argument for this app in one line.

Here’s what the app did with it.

It saw the crash almost immediately. The incident was on the How’s the Canyon servers by 6:23, before MHP had stamped their own dispatch time, and it was on the Conditions screen of every phone within a few minutes of that, correctly, in plain English, at the right place: “Crash, injuries unknown, US-191 near Swan Creek.”

Then it told everybody the canyon was fine. The big colored word at the top of the screen stayed green until 8:02. Ninety-five minutes after the app’s own incident list said there was a crash in it.

The reason is dumb and it was mine. That headline was computed from exactly one thing: how long the last person took to get through the canyon, the original thesis behind making this app. The last completed drive before the crash was an overnight run at 9 p.m. that took a normal 17 minutes. So the app was reporting, accurately, on road conditions that no longer existed.

Three drivers with the app entered the canyon between 7:02 and 7:06. All three got a green light and silence. All three sat in stopped traffic for the next forty minutes.

MDT’s 511 feed carried nothing about it. Twenty-two snapshots across the window, zero US-191 crash rows. The only US-191 item on the state’s traveler feed all morning was the paving project scheduled for the following week.

The happy findings

The phones found the crash.

My first thought when creating the app was just record everything and then look for patterns we can use to alert, and eventually, predict. And this was a strong bingo much sooner than I expected.

Every drive through the corridor records how long it takes to get between fixed points along the road. Normally those points are about a minute apart. That morning, on all three drives independently, one gap went from about 60 seconds to between 493 and 562 seconds. The next few ran three to five minutes each. Then, at one specific gap, everything snapped back to 72 seconds.

That snap-back point is 0.65 miles from the coordinate the Highway Patrol published.

Three phones in three pockets, with no coordination and no driver doing anything, located an obstruction to within half a mile of ground truth using nothing but how long it took to get between two fenceposts. They also measured the queue: the back of it was 3.6 miles north of the crash, and one of those cars covered 3.5 miles in 24 minutes. 8.8 miles an hour.

So the data layer had it and the decision layer on top of it wasn’t ready. Now it is.

What’s in the app now

The app's Conditions screen showing a red Blocked / severe headline reading 'Crash near Swan Creek. The canyon is taking about 45 minutes instead of the usual 26.'

An open incident sets the floor. When the Highway Patrol has something open on the corridor, the top of the screen says so, in a sentence, and it holds until MHP clears it rather than until the next fast driver comes through. Replayed against August 14th, the app goes red at 7:30 instead of 8:02.

All three of those drivers would have been told before they committed to the canyon. Next time they will be, from app version 1.2 forward.

At right, a recreation of that crash. The sentence under the color is composed by the server from the incident and the measured drive time.

The headline is now a median over a 45-minute window.

The Conditions screen with a green Moving normally headline over a list of segments, each showing its latest drive time and how long ago it was measured

What the drive usually takes. Any stretch with enough real drives behind it shows what it normally takes next to what it just took, and says whether that’s normal, slower, or much slower. A time that has gone stale turns gray and shows its age instead of sitting there looking current. In the shot at right, “MT64 ↔ Yellowstone, 43 min” is gray because the last real drive was four hours ago, and that could be important information. ‘Normal’ will change over time as the general conditions change; if a route is encrusted with snow those times will go down and the servers will see it and adjust.

The segment list scrolled down to the Madison side roads: Four Corners to Norris, Norris to Ennis, Ennis to Quake Lake, Raynolds Pass, Island Park to West Yellowstone, most of them reading no drives

Six more roads, off until you switch them on. MT-84, US-287 down the Madison and around Hebgen Lake, MT-87 over Raynolds Pass, US-20 through Island Park, and Jack Creek Road. They’re under Roads shown, as a list or on a map. The Madison side. It has dead zones too so they get treated just like the canyon, data is recorded and shared out the moment your phone reconnects.

Highway Patrol incidents read like sentences instead of dispatch codes, they say where they are the way a person would (“US-191 near Swan Creek”, not “US191 MM57”), and you only see the ones on roads you’ve turned on.

Also: weather alerts now cover the Gallatin Valley approach with a lot more detail. There’s an About the data page that says where every number on the screen comes from. The report sheet has a Traffic button, the wet/ice/snow button moved up to where your thumb already is, and the rocks button covers debris.

And two things that are in there and asleep. Pavement temperature from MDT’s road sensors, and snow coming to the corridor in words instead of decimal places. Both are suppressed until the road is actually cold, so you won’t see either one in August. They’re built and they’re waiting on weather. I wrote about why the pavement number matters more than the air number in What’s the road condition, really?

What you already got without doing anything

The incident floor, the 45-minute window, the faster Highway Patrol polling, and the pavement sensors all live on the server, and those reached your phone as data shaped for the app you have whenever you last opened it, whatever version you’re on. I ship as much as possible server-side on purpose, precisely so a fix or improvement doesn’t wait on the App Store.

What needs the update is the half that’s drawn on the screen: the sentence under the color, the usual-time comparison, and the gray stale rows.

New and shiny, help me help you

Update the app. Half the people using it are on 1.1 and it’s a small step from there, but 1.1 is still the version that cannot show you the sentence that says a crash is in the canyon.

And then try driving with it running on screen. Every number on that screen came from somebody who did. The Madison side is empty because nobody has driven it with the app on yet, and the reason I could tell you where that crash was on August 14th is that three people happened to have the app open on the same morning. The more of us there are, the better this gets for all of us. Thanks for your support!