During a pandemic, bicycling is a great way to (1) spend some time, (2) get some exercise, (3) stay outside and be safe. In this notebook I track my cycling performance against various goals:
This notebook is mostly for my own benefit, but if you're a cyclist you're welcome to adapt it to your own data, and if you're a data scientist, you might find it an interesting example of exploratory data analysis. The companion notebook BikeCode.ipynb has the implementation details.
Here are my overall stats for each year since I started keeping track in mid-2014. I have done 6,000 miles per year since 2016, except for 2020 when an injury kept me sidelined for two months. The columns keep track of the total hours on the bike, distance traveled in miles, and total feet climbed. Then there are some columns that are dervided from these: mph is miles / hour; vam is vertical meters ascended per hour (or feet × 0.3048 / hours); fpmi is feet / miles; pct is the grade in percent (or feet × 100 / miles / 5280), and finally kms and meters are the metric equivalents of miles and feet.
%run BikeCode.ipynb
yearly
year | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
2023 | 541.68 | 6316 | 243100 | 11.66 | 137.0 | 38.0 | 0.73 | 10162.44 | 74097.0 | |
2022 | 532.93 | 6028 | 362323 | 11.31 | 207.0 | 60.0 | 1.14 | 9699.05 | 110436.0 | |
2021 | 490.53 | 6064 | 196634 | 12.36 | 122.0 | 32.0 | 0.61 | 9756.98 | 59934.0 | |
2020 | 438.88 | 5341 | 94777 | 12.17 | 66.0 | 18.0 | 0.34 | 8593.67 | 28888.0 | |
2019 | 476.32 | 6016 | 149797 | 12.63 | 96.0 | 25.0 | 0.47 | 9679.74 | 45658.0 | |
2018 | 475.93 | 6101 | 158642 | 12.82 | 102.0 | 26.0 | 0.49 | 9816.51 | 48354.0 | |
2017 | 567.33 | 7356 | 202096 | 12.97 | 109.0 | 27.0 | 0.52 | 11835.80 | 61599.0 | |
2016 | 486.38 | 6339 | 201453 | 13.03 | 126.0 | 32.0 | 0.60 | 10199.45 | 61403.0 | |
2015 | 419.95 | 5452 | 209859 | 12.98 | 152.0 | 38.0 | 0.73 | 8772.27 | 63965.0 | |
2014 | 191.03 | 2469 | 118481 | 12.92 | 189.0 | 48.0 | 0.91 | 3972.62 | 36113.0 |
And here's the same data on a per day basis, assuming I ride 6 days a week:
daily
year | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
2023 | 1.7 | 20.2 | 779.2 | 11.66 | 137.0 | 38.0 | 0.73 | 32.6 | 237.5 | |
2022 | 1.7 | 19.3 | 1161.3 | 11.31 | 207.0 | 60.0 | 1.14 | 31.1 | 354.0 | |
2021 | 1.6 | 19.4 | 630.2 | 12.36 | 122.0 | 32.0 | 0.61 | 31.3 | 192.1 | |
2020 | 1.4 | 17.1 | 303.8 | 12.17 | 66.0 | 18.0 | 0.34 | 27.5 | 92.6 | |
2019 | 1.5 | 19.3 | 480.1 | 12.63 | 96.0 | 25.0 | 0.47 | 31.0 | 146.3 | |
2018 | 1.5 | 19.6 | 508.5 | 12.82 | 102.0 | 26.0 | 0.49 | 31.5 | 155.0 | |
2017 | 1.8 | 23.6 | 647.7 | 12.97 | 109.0 | 27.0 | 0.52 | 37.9 | 197.4 | |
2016 | 1.6 | 20.3 | 645.7 | 13.03 | 126.0 | 32.0 | 0.60 | 32.7 | 196.8 | |
2015 | 1.3 | 17.5 | 672.6 | 12.98 | 152.0 | 38.0 | 0.73 | 28.1 | 205.0 | |
2014 | 0.6 | 7.9 | 379.7 | 12.92 | 189.0 | 48.0 | 0.91 | 12.7 | 115.7 |
In 2022 my friend A. J. Jacobs set a goal of walking to space: climbing a total elevation equal to the distance from the Earth's surface to the top of the atmoshere. A group of about 40 of us joined the quest. The boundary of "space" is vague, but the Kármán line is 100 kilometers; in 2022 I surpassed 100 kilometers of climbing (over 1,100 feet per day), but most years I'm closer to 60 kilometers (about 600 feet per day).
The OpenStreetMap world map is divided into explorer tiles of approximately 1 mile square. Sites like Veloviewer, Statshunter, RideEveryTile, and SquadRats challenge bicyclist/hikers to record which tiles they have passed through. The process is gamified to highlight the following statistics:
Since I live on a penninsula, it is not easy for me to form a large square, and I sometimes have to work hard to connect different parts of my map into my main cluster (such as connecting San Francisco and Marin). I have a separate page documenting my explorations, but here are a few key points along the way:
tiles
date | square | cluster | total | comment | |
---|---|---|---|---|---|
02/25/2024 | 14 | 1196 | 3279 | Expanding through Santa Cruz and to the South | |
01/01/2024 | 14 | 1056 | 3105 | Start of this year | |
12/08/2023 | 14 | 1042 | 3084 | Benicia ride connects East Bay and Napa clusters | |
11/05/2023 | 14 | 932 | 2914 | Alum Rock ride gets 14x14 max square | |
06/30/2023 | 13 | 689 | 2640 | Rides in east Bay fill in holes | |
04/14/2023 | 13 | 630 | 2595 | Black Sands Beach low-tide hike connects Marin to max cluster | |
03/04/2023 | 13 | 583 | 2574 | Almaden rides connects Gilroy to max cluster | |
10/22/2022 | 13 | 396 | 2495 | Alviso levees to get to 13x13 max square | |
10/16/2022 | 12 | 393 | 2492 | Milpitas ride connects East Bay to max cluster | |
09/08/2022 | 11 | 300 | 2487 | First started tracking tiles |
The website Wandrer.earth tracks the distinct roads a user has biked on. It provides a fun incentive to get out and explore new roads. The site is gamified in a way that there is a reward for first reaching 25% of the road-miles in each city, and further rewards for higher percentages. (You get no credit for repeating a road you've already been on.)
The wandrer.earth site does a good job of showing my current status, but it requires clicking around a bit, so I summarize it all in one place here. Each line gives the percent of roads/trails that I have traveled on for each place (specified by county and city name), as well as the total miles of road in the place, the miles I have done, and the amount I need to hit the next badge.
wandering(by='pct')
pct | county | name | total | done | to next badge | |
---|---|---|---|---|---|---|
100.0% | SMC | Los Trancos Woods | 5.3 | 5.3 | ||
100.0% | SMC | Menlo Oaks | 3.5 | 3.5 | ||
100.0% | SMC | Los Trancos OSP | 0.3 | 0.3 | ||
100.0% | SMC | Ladera | 8.1 | 8.1 | ||
100.0% | SMC | Kensington Square | 0.6 | 0.6 | ||
100.0% | SMC | North Fair Oaks | 26.7 | 27 | ||
100.0% | SMC | West Menlo Park | 11.2 | 11 | ||
100.0% | SMC | Sequoia Tract | 11.0 | 11 | ||
99.9% | SCC | Loyola | 18.3 | 18 | ||
99.9% | SMC | Palomar Park | 4.0 | 4.0 | ||
99.9% | SMC | Emerald Lake Hills | 24.6 | 25 | ||
99.8% | SMC | Atherton | 56.3 | 56 | ||
99.8% | SMC | Windy Hill Preserve | 4.1 | 4.1 | ||
99.7% | SMC | Menlo Park | 139.5 | 139 | ||
99.7% | SMC | East Palo Alto | 48.3 | 48 | ||
99.6% | SMC | Sky Londa | 11.8 | 12 | ||
99.6% | SCC | Los Altos | 138.2 | 138 | ||
99.5% | SMC | Portola Valley | 48.2 | 48 | ||
99.4% | SMC | Woodside | 75.2 | 75 | ||
99.3% | SMC | Redwood City | 240.5 | 239 | ||
99.3% | SCC | Mountain View | 208.1 | 207 | ||
99.2% | SCC | Los Altos Hills | 91.3 | 91 | ||
99.0% | SCC | Palo Alto | 297.2 | 294 | ||
99.0% | SMC | San Carlos | 99.0 | 98 | ||
90.9% | SMC | Burleigh Murray Park | 2.1 | 1.9 | 0.2 mi to 99% | |
90.4% | SMC | Foster City | 150.0 | 136 | 13 mi to 99% | |
86.8% | SCC | Foothills Preserve | 1.1 | 1.0 | 0.0 mi to 90% | |
77.9% | SMC | San Mateo Highlands | 18.0 | 14 | 2.2 mi to 90% | |
74.5% | SMC | Skyline Ridge OSP | 0.8 | 0.6 | 0.1 mi to 90% | |
74.1% | SCC | San Francisco Bay Trail | 260.8 | 193 | 41 mi to 90% | |
73.2% | CCC | Rosie Riveter Park | 5.5 | 4.0 | 0.9 mi to 90% | |
71.5% | SMC | Burlingame Hills | 6.0 | 4.3 | 1.1 mi to 90% | |
66.7% | SMC | Coal Creek Preserve | 3.9 | 2.6 | 0.9 mi to 90% | |
63.5% | --- | San Mateo County | 2814.0 | 1,787 | 746 mi to 90% | |
59.5% | SMC | Russian Ridge Preserve | 12.2 | 7.3 | 3.7 mi to 90% | |
59.3% | SMC | Montara | 27.8 | 16 | 8.5 mi to 90% | |
56.2% | SMC | Burlingame | 88.4 | 50 | 30 mi to 90% | |
54.7% | SMC | Belmont | 98.1 | 54 | 35 mi to 90% | |
53.3% | SCC | Sunnyvale | 357.0 | 190 | 131 mi to 90% | |
52.3% | SMC | Hillsborough | 85.3 | 45 | 32 mi to 90% | |
51.8% | SMC | San Mateo | 256.0 | 133 | 98 mi to 90% | |
51.5% | SMC | Half Moon Bay State Beach | 4.4 | 2.3 | 1.7 mi to 90% | |
51.2% | SMC | Long Ridge Preserve | 11.0 | 5.6 | 4.3 mi to 90% | |
51.2% | SCC | Castle Rock State Park | 11.2 | 5.7 | 4.3 mi to 90% | |
51.0% | ALA | Newark | 147.0 | 75 | 57 mi to 90% | |
50.2% | SMC | Brisbane | 40.9 | 21 | 16 mi to 90% | |
47.7% | SCC | Edenvale | 30.0 | 14 | 0.7 mi to 50% | |
47.3% | NSW | Barangaroo | 1.7 | 0.8 | 0.0 mi to 50% | |
47.2% | SCC | Gardner | 23.4 | 11 | 0.7 mi to 50% | |
45.1% | SCC | Monte Sereno | 20.4 | 9.2 | 1.0 mi to 50% | |
43.9% | SFC | Presidio Terrace | 2.8 | 1.2 | 0.2 mi to 50% | |
43.6% | SMC | El Granada | 49.2 | 21 | 3.1 mi to 50% | |
43.6% | SMC | Moss Beach | 19.7 | 8.6 | 1.3 mi to 50% | |
43.3% | ALA | Hayward Acres | 3.5 | 1.5 | 0.2 mi to 50% | |
42.6% | SMC | Millbrae | 65.0 | 28 | 4.8 mi to 50% | |
40.8% | ALA | San Lorenzo | 55.5 | 23 | 5.1 mi to 50% | |
39.6% | SFC | Lincoln Park | 4.5 | 1.8 | 0.5 mi to 50% | |
39.5% | SCC | Communications Hill | 27.8 | 11 | 2.9 mi to 50% | |
39.0% | SMC | Purisima Creek Preserve | 16.5 | 6.4 | 1.8 mi to 50% | |
38.9% | SMC | Colma | 13.7 | 5.3 | 1.5 mi to 50% | |
38.7% | MAR | Mt Tamalpais State Park | 31.7 | 12 | 3.6 mi to 50% | |
38.2% | SMC | Broadmoor | 8.8 | 3.4 | 1.0 mi to 50% | |
37.4% | SFC | South Beach | 4.8 | 1.8 | 0.6 mi to 50% | |
37.1% | MAR | Muir Beach | 4.6 | 1.7 | 0.6 mi to 50% | |
36.8% | SFC | Lake Street | 3.9 | 1.4 | 0.5 mi to 50% | |
36.8% | SCC | Spartan Keyes | 64.3 | 24 | 8.5 mi to 50% | |
36.7% | SCC | Milpitas | 224.0 | 82 | 30 mi to 50% | |
36.1% | ALA | Ashland | 35.1 | 13 | 4.9 mi to 50% | |
36.0% | SCC | Willow Glen | 81.6 | 29 | 11 mi to 50% | |
34.8% | SCC | Santa Clara | 348.0 | 121 | 53 mi to 50% | |
34.7% | MAS | MIT | 9.6 | 3.3 | 1.5 mi to 50% | |
34.3% | NSW | Millers Point | 3.2 | 1.1 | 0.5 mi to 50% | |
33.7% | SCC | Parkview | 42.5 | 14 | 6.9 mi to 50% | |
33.6% | SMC | Half Moon Bay | 68.0 | 23 | 11 mi to 50% | |
33.6% | SCC | Los Gatos | 148.0 | 50 | 24 mi to 50% | |
33.6% | SCC | Cupertino | 172.0 | 58 | 28 mi to 50% | |
33.2% | SMC | Pacifica | 150.9 | 50 | 25 mi to 50% | |
33.0% | --- | Santa Clara County | 7569.0 | 2,498 | 1,287 mi to 50% | |
33.0% | SCC | Seven Trees | 40.9 | 13 | 7.0 mi to 50% | |
32.9% | ALA | Union City | 208.8 | 69 | 36 mi to 50% | |
32.9% | MAR | Stinson Beach | 11.2 | 3.7 | 1.9 mi to 50% | |
32.9% | ALA | Fremont | 780.2 | 257 | 133 mi to 50% | |
32.7% | SCC | Branham | 44.0 | 14 | 7.6 mi to 50% | |
32.7% | ALA | Hayward | 444.5 | 145 | 77 mi to 50% | |
31.9% | MAR | Marin Headlands GGNRA | 65.7 | 21 | 12 mi to 50% | |
31.5% | SCC | San Martin | 35.3 | 11 | 6.5 mi to 50% | |
31.0% | SMC | San Bruno | 114.0 | 35 | 22 mi to 50% | |
30.9% | SCC | Willow Glen South | 63.3 | 20 | 12 mi to 50% | |
30.7% | SCC | Forest of Nisene Marks SP | 44.0 | 14 | 8.5 mi to 50% | |
30.0% | SCC | Saratoga | 180.0 | 54 | 36 mi to 50% | |
29.6% | SMC | South San Francisco | 185.3 | 55 | 38 mi to 50% | |
29.4% | SFC | Golden Gate Park | 40.8 | 12 | 8.4 mi to 50% | |
29.3% | SCC | Campbell | 119.0 | 35 | 25 mi to 50% | |
29.3% | SFC | Seacliff | 4.1 | 1.2 | 0.8 mi to 50% | |
29.2% | NSW | Dawes Point | 1.8 | 0.5 | 0.4 mi to 50% | |
28.2% | ALA | Fairview | 34.4 | 9.7 | 7.5 mi to 50% | |
28.0% | SCC | San Jose | 2618.7 | 733 | 576 mi to 50% | |
27.8% | ALA | Cherryland | 20.9 | 5.8 | 4.6 mi to 50% | |
27.7% | ALA | San Leandro | 230.6 | 64 | 51 mi to 50% | |
27.4% | SMC | Daly City | 148.1 | 41 | 33 mi to 50% | |
26.8% | CAL | Mokelumne Hill | 14.7 | 3.9 | 3.4 mi to 50% | |
26.7% | SFC | Presidio National Park | 43.5 | 12 | 10 mi to 50% | |
26.1% | ALA | Castro Valley | 192.5 | 50 | 46 mi to 50% | |
25.6% | SMC | Bay Area Ridge Trail | 395.6 | 101 | 97 mi to 50% | |
23.6% | SON | Guerneville | 22.7 | 5.4 | 0.3 mi to 25% | |
21.6% | SFC | Presidio Heights | 6.5 | 1.4 | 0.2 mi to 25% | |
20.6% | SFC | Panhandle | 7.3 | 1.5 | 0.3 mi to 25% | |
18.2% | SFC | Balboa Terrace | 3.4 | 0.6 | 0.2 mi to 25% | |
18.2% | SFC | Polk Gulch | 4.0 | 0.7 | 0.3 mi to 25% | |
18.0% | SFC | Cole Valley | 1.7 | 0.3 | 0.1 mi to 25% | |
17.8% | SON | Healdsburg | 53.7 | 9.6 | 3.9 mi to 25% | |
17.0% | SON | Bodega Bay | 28.9 | 4.9 | 2.3 mi to 25% | |
16.6% | --- | Alameda County | 5818.0 | 965 | 490 mi to 25% | |
15.9% | SFC | Forest Hill | 6.1 | 1.0 | 0.6 mi to 25% | |
15.5% | SFC | Northern Waterfront | 5.6 | 0.9 | 0.5 mi to 25% | |
15.4% | SFC | Aquatic Park Fort Mason | 6.4 | 1.0 | 0.6 mi to 25% | |
15.2% | SFC | Little Hollywood | 3.7 | 0.6 | 0.4 mi to 25% | |
14.2% | SFC | Clarendon Heights | 6.0 | 0.9 | 0.6 mi to 25% | |
13.8% | SFC | Fisherman's Wharf | 6.2 | 0.9 | 0.7 mi to 25% | |
13.2% | SFC | Sutro Heights | 7.1 | 0.9 | 0.8 mi to 25% | |
13.0% | SFC | Ashbury Heights | 3.7 | 0.5 | 0.4 mi to 25% | |
12.9% | MAR | Corte Madera | 51.0 | 6.6 | 6.2 mi to 25% | |
12.9% | MAR | Sausalito | 32.7 | 4.2 | 4.0 mi to 25% | |
12.3% | SFC | Dogpatch | 5.1 | 0.6 | 0.6 mi to 25% | |
12.2% | ALA | Alameda | 206.7 | 25 | 26 mi to 25% | |
12.1% | SCC | Gilroy | 188.9 | 23 | 24 mi to 25% | |
11.9% | SFC | Cow Hollow | 12.0 | 1.4 | 1.6 mi to 25% | |
10.9% | --- | Marin County | 2333.0 | 255 | 328 mi to 25% | |
10.7% | SFC | Pacific Heights | 18.0 | 1.9 | 2.6 mi to 25% | |
10.7% | SFC | Golden Gate Heights | 17.8 | 1.9 | 2.5 mi to 25% | |
10.2% | SFC | Financial District | 9.4 | 1.0 | 1.4 mi to 25% | |
9.3% | --- | San Francisco County | 1217.0 | 113 | 192 mi to 25% | |
9.1% | MAR | Mill Valley | 92.2 | 8.4 | 15 mi to 25% | |
8.9% | --- | Napa County | 1609.0 | 143 | 259 mi to 25% | |
8.6% | SFC | Mission Bay | 13.8 | 1.2 | 2.3 mi to 25% | |
7.7% | ALA | Emeryville | 28.1 | 2.2 | 4.9 mi to 25% | |
7.6% | ALA | Berkeley | 260.3 | 20 | 45 mi to 25% | |
7.1% | --- | Santa Cruz County | 2718.0 | 194 | 486 mi to 25% | |
6.8% | ALA | Albany | 42.7 | 2.9 | 7.8 mi to 25% | |
6.2% | MAS | Cambridge | 180.8 | 11 | 34 mi to 25% | |
6.0% | SFC | Central Waterfront | 10.2 | 0.6 | 1.9 mi to 25% | |
5.1% | --- | Sonoma County | 4895.0 | 251 | 973 mi to 25% | |
3.8% | --- | Contra Costa County | 5945.0 | 226 | 1,260 mi to 25% | |
3.7% | MAR | San Rafael | 260.0 | 9.6 | 55 mi to 25% | |
1.8% | --- | California | 377037.0 | 6,719 | 822 mi to 2% | |
0.113% | --- | USA | 6406754.0 | 7,267 | 5,546 mi to 0.2% | |
0.017% | --- | Earth | 41974536.0 | 7,159 | 1,236 mi to 0.02% |
As part of my wandering, in April 2022 I was able to get to 25% of every city that rings the San Francisco Bay and is below San Francisco or Oakland (see map with or without roads traveled; as soon as you get 25% of a city, it lights up with a color).
I live at the border of Santa Clara County (SCC) and San Mateo County (SMC), so I ride in both. Wandrer.earth says that Jason Molenda is a whopping 1,700 miles ahead of me in SCC and Megan Gardner is 1,000 miles ahead of me in SMC. Barry Mann is the leader in total miles in the two counties, and Megan leads in average percent. Kudos to all of them! However, I do occupy a small section of the Pareto front for the two counties together: no single rider on wandrer.earth has done more than me in both counties. Here are the leaders (as of December 2023), where the dotted line indicates the Pareto front.
pareto_front(leaders)
Name | Initials | SMC % | SCC % | SMC miles | SCC miles | Total miles | Avg % | |
---|---|---|---|---|---|---|---|---|
Megan Gardner | MG | 99.01 | 13.60 | 2786 | 1029 | 3815 | 56.305 | |
Barry Mann | BM | 77.41 | 30.38 | 2178 | 2299 | 4477 | 53.895 | |
Peter Norvig | PN | 63.50 | 33.00 | 1787 | 2498 | 4285 | 48.250 | |
Brian Feinberg | BF | 32.50 | 43.90 | 915 | 3323 | 4238 | 38.200 | |
Jason Molenda | JM | 7.56 | 56.25 | 213 | 4258 | 4471 | 31.905 |
The physicist/bicyclist Sir Arthur Eddington, a contemporary of Einstein defined the Eddington Number as the largest integer E such that you have cycled at least E miles on at least E days.
My Eddington number progress over the years, in both kilometers and miles:
Ed_progress(rides)
year | Ed_km | Ed_mi | |
---|---|---|---|
2024 | 102 | 68 | |
2023 | 101 | 67 | |
2022 | 96 | 66 | |
2021 | 93 | 65 | |
2020 | 87 | 62 | |
2019 | 80 | 56 | |
2018 | 77 | 54 | |
2017 | 73 | 51 | |
2016 | 67 | 47 | |
2015 | 61 | 42 | |
2014 | 46 | 35 |
My current Eddington Number is 102 in kilometers and 68 in miles (I've ridden at least 68 miles on at least 68 days, but not 69 miles on 69 days). My number is above the median for Strava, but not nearly as good as Eddington himself: his number was 84 (in miles) when he died at age 62, and his roads, weather, bicycles, and navigation aids were not nearly as nice as mine, so bravo zulu to him.
How many more rides will I need to reach higher Eddington numbers? I call that the Eddington Gap:
Ed_gaps(rides)
kms | kms gap | miles | miles gap | |
---|---|---|---|---|
103 | 3 | 69 | 12 | |
104 | 10 | 70 | 24 | |
105 | 16 | 71 | 34 | |
106 | 20 | 72 | 37 | |
107 | 28 | 73 | 41 | |
108 | 32 | 74 | 43 | |
109 | 38 | 75 | 51 | |
110 | 46 | 76 | 53 | |
111 | 54 | 77 | 56 |
I need 3 rides of 103 kms or 12 rides of 69 miles to increase my Eddington numbers.
Here are some properties of Eddington numbers:
Note: the definition of Eddington Number seems precise, but what exactly does *day* mean? The New Oxford dictionary has three senses:
I originally assumed sense 2, but I wanted to accept sense 1 for what bikepackers call a sub-24-hour overnight (S24O): a ride to a camping site in the afternoon, pitching a tent for the night, and returning back home the next morning. And then COVID struck, the camping sites closed, so why not allow an S24O where I sleep in my own home? I realize Eddington had a lot more hardships than we have (World War I, the 1918 pandemic, and World War II, for example), but I hope he would approve of this modest accomodation on my part.
The Eddington number reminds me of the h-index metric for scientific publications. I invented another metric:
Your hill-index* is the maximum integer h where you can regularly climb an h percent grade at h miles per hour.*
I'll plot grade versus speed for segments (not rides) with two best-fit curves: a blue quadratic and an orange cubic. I'll also superimpose a red dotted line where grade = speed.
show('pct', 'mph', segments[segments.pct > 2],
'Miles per hour versus segment grade in percent')
plt.plot((2, 6, 7), (2, 6, 7), 'ro:');
Both best-fit curves are above the red circle at 6% and below the red circle for 7%, so my hill-index is 6. We also see that I can cruise at 14 mph on a 2% grade, but only about 7 mph at 6% grade, and around 5.5 mph on 8% grades.
The plot above tell me how fast I should expect to climb a particular hill, but what about average time on longer rides? Here's a plot of my speed versus steepness (measured in feet climbed per mile rather than in percent).
show('fpmi', 'mph', rides, 'Speed (miles per hour) versus Ride Grade (feet per mile)')
So, I average a little under 14 mph when the overall route is fairly flat, with a lot of variability, depending more on my level of effort (and maybe the wind) than on the grade of the road. But when the grade is steeper than 50 ft/mile, my speed falls off quickly: down to 12mph at 80 ft/mile; 11 mph at 100 ft/mile; and around 10 mph at 120 ft/mile. Note that 120 ft/mile is only 2.3% grade, but if you figure a typical route is 1/3 up, 1/3 down, and 1/3 flat, then that's 7% average grade on the up part.
I can use this to predict the time of a ride. For example, if I'm in La Honda and want to get to Pescadero, which way is faster: the coast route (15.7 miles, 361 ft climb), or the creek route (13.5 miles, 853 ft climb)? We can estimate:
f'Coast: {estimate(15.7, 361)} min, Creek: {estimate(13.5, 853)} min.'
'Coast: 70 min, Creek: 64 min.'
This predicts the shorter but steeper creek route would be about 6 minutes faster (whereas Google Maps predicts the creek route would be 80 minutes, 2 more than the coast route—I guess Google lacks confidence in my climbing ability). This is all good to know, but other factors (like the scenery and whether I want to stop at the San Gregorio store) are probably more important in making the choice.
Climbing speed is measured by VAM, which stands for velocità ascensionale media (for native Campagnolo speakers) or vertical ascent in meters per hour (for SRAM) or 平均上昇率 (for Shimano), or Vm/h (for physicists). The theory is that for fairly steep climbs, most of your power is going into lifting against gravity, so your VAM should be about constant no matter what the grade. (For flatish segments power is spent on wind and rolling resistance, and for the very steepest of climbs, in my experience, power goes largely to cursing sotto voce, as they say in Italian.)
Here's a plot of my VAM versus grade over short segments:
show('pct', 'vam', segments, 'VAM (vertical meters per hour) versus segment grade in percent')
Champion cyclists can do over 1800 meters/hour over a 10 km climb, and can sustain 1400 meters/hour for 7 hours. My VAM numbers range mostly from 400 to 800 meters/hour, and I can sustain the higher numbers for only a couple of minutes:
top(segments, 'vam')
title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
Camaritas climb | 0.01 | 0.10 | 48 | 10.00 | 1463.0 | 480.0 | 9.09 | 0.16 | 15.0 | |
Paloma Climb | 0.02 | 0.14 | 82 | 7.00 | 1250.0 | 586.0 | 11.09 | 0.23 | 25.0 | |
Klamath Dr. | 0.02 | 0.12 | 77 | 6.00 | 1173.0 | 642.0 | 12.15 | 0.19 | 23.0 | |
Entrance Way Hill Repeats | 0.02 | 0.10 | 76 | 5.00 | 1158.0 | 760.0 | 14.39 | 0.16 | 23.0 | |
Davenport Kicker | 0.02 | 0.24 | 74 | 12.00 | 1128.0 | 308.0 | 5.84 | 0.39 | 23.0 | |
Valparaiso steep | 0.04 | 0.18 | 145 | 4.50 | 1105.0 | 806.0 | 15.26 | 0.29 | 44.0 | |
Invernes to Firecrest Climb | 0.04 | 0.28 | 143 | 7.00 | 1090.0 | 511.0 | 9.67 | 0.45 | 44.0 | |
Kings Mountain final sprint | 0.04 | 0.31 | 135 | 7.75 | 1029.0 | 435.0 | 8.25 | 0.50 | 41.0 | |
Limantour Spit | 0.09 | 0.47 | 303 | 5.22 | 1026.0 | 645.0 | 12.21 | 0.76 | 92.0 | |
Tunitas flattens | 0.05 | 0.42 | 166 | 8.40 | 1012.0 | 395.0 | 7.49 | 0.68 | 51.0 | |
Tunitas flattens | 0.05 | 0.42 | 166 | 8.40 | 1012.0 | 395.0 | 7.49 | 0.68 | 51.0 | |
Cemetery Sprint | 0.01 | 0.08 | 33 | 8.00 | 1006.0 | 412.0 | 7.81 | 0.13 | 10.0 | |
Skyline Bump at OLH | 0.02 | 0.21 | 63 | 10.50 | 960.0 | 300.0 | 5.68 | 0.34 | 19.0 | |
Laning Bump | 0.03 | 0.24 | 94 | 8.00 | 955.0 | 392.0 | 7.42 | 0.39 | 29.0 | |
Faught Turn | 0.02 | 0.22 | 60 | 11.00 | 914.0 | 273.0 | 5.17 | 0.35 | 18.0 | |
Westridge 3min | 0.08 | 0.37 | 240 | 4.62 | 914.0 | 649.0 | 12.29 | 0.60 | 73.0 | |
Valparaiso steep | 0.05 | 0.18 | 145 | 3.60 | 884.0 | 806.0 | 15.26 | 0.29 | 44.0 | |
Sharon Park steep part | 0.03 | 0.21 | 86 | 7.00 | 874.0 | 410.0 | 7.76 | 0.34 | 26.0 | |
Old La Honda Mile 1 | 0.13 | 0.99 | 370 | 7.62 | 868.0 | 374.0 | 7.08 | 1.59 | 113.0 | |
Joaquin | 0.09 | 0.33 | 254 | 3.67 | 860.0 | 770.0 | 14.58 | 0.53 | 77.0 |
On segments that are at least a kilometer long my VAM tops out at about 800 meters/hour:
top(segments[segments.kms >= 1], 'vam', n=30)
title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
Old La Honda Mile 1 | 0.13 | 0.99 | 370 | 7.62 | 868.0 | 374.0 | 7.08 | 1.59 | 113.0 | |
Westridge | 0.14 | 0.68 | 385 | 4.86 | 838.0 | 566.0 | 10.72 | 1.09 | 117.0 | |
Old La Honda (Bridge to Stop) | 0.48 | 3.33 | 1255 | 6.94 | 797.0 | 377.0 | 7.14 | 5.36 | 383.0 | |
Old La Honda (Bridge to Stop) | 0.51 | 3.33 | 1255 | 6.53 | 750.0 | 377.0 | 7.14 | 5.36 | 383.0 | |
Westridge | 0.16 | 0.68 | 385 | 4.25 | 733.0 | 566.0 | 10.72 | 1.09 | 117.0 | |
Tunitas steep | 0.25 | 1.20 | 599 | 4.80 | 730.0 | 499.0 | 9.45 | 1.93 | 183.0 | |
Old La Honda Mile 1 | 0.16 | 0.99 | 370 | 6.19 | 705.0 | 374.0 | 7.08 | 1.59 | 113.0 | |
Woodside Climb | 0.13 | 1.71 | 295 | 13.15 | 692.0 | 173.0 | 3.27 | 2.75 | 90.0 | |
Huddart | 0.17 | 0.92 | 385 | 5.41 | 690.0 | 418.0 | 7.93 | 1.48 | 117.0 | |
Top of Groton Rd heading west | 0.13 | 0.92 | 291 | 7.08 | 682.0 | 316.0 | 5.99 | 1.48 | 89.0 | |
Watts (Sonoma) | 0.14 | 1.20 | 313 | 8.57 | 681.0 | 261.0 | 4.94 | 1.93 | 95.0 | |
Tunitas steep | 0.27 | 1.20 | 599 | 4.44 | 676.0 | 499.0 | 9.45 | 1.93 | 183.0 | |
Canon to No Cycling | 0.09 | 0.75 | 198 | 8.33 | 671.0 | 264.0 | 5.00 | 1.21 | 60.0 | |
Canon to No Cycling | 0.09 | 0.75 | 198 | 8.33 | 671.0 | 264.0 | 5.00 | 1.21 | 60.0 | |
Coe Second Switchback to flat | 0.22 | 1.00 | 483 | 4.55 | 669.0 | 483.0 | 9.15 | 1.61 | 147.0 | |
Lower Redwood Gulch | 0.22 | 1.03 | 474 | 4.68 | 657.0 | 460.0 | 8.72 | 1.66 | 144.0 | |
Lobitas Creek | 0.20 | 0.96 | 430 | 4.80 | 655.0 | 448.0 | 8.48 | 1.54 | 131.0 | |
West Alpine switchback | 0.15 | 0.78 | 322 | 5.20 | 654.0 | 413.0 | 7.82 | 1.26 | 98.0 | |
Kaboom Portola Rd | 0.05 | 0.67 | 102 | 13.40 | 622.0 | 152.0 | 2.88 | 1.08 | 31.0 | |
Huddart | 0.19 | 0.92 | 385 | 4.84 | 618.0 | 418.0 | 7.93 | 1.48 | 117.0 | |
Kings Greer to Skyline | 0.78 | 3.92 | 1536 | 5.03 | 600.0 | 392.0 | 7.42 | 6.31 | 468.0 | |
Woodside Climb | 0.15 | 1.71 | 295 | 11.40 | 599.0 | 173.0 | 3.27 | 2.75 | 90.0 | |
Stage Rd | 0.19 | 1.01 | 373 | 5.32 | 598.0 | 369.0 | 6.99 | 1.63 | 114.0 | |
Try not to fall back | 0.21 | 0.71 | 410 | 3.38 | 595.0 | 577.0 | 10.94 | 1.14 | 125.0 | |
Sand Gill Sharon-top | 0.07 | 0.85 | 136 | 12.14 | 592.0 | 160.0 | 3.03 | 1.37 | 41.0 | |
Sand Gill Sharon-top | 0.07 | 0.85 | 136 | 12.14 | 592.0 | 160.0 | 3.03 | 1.37 | 41.0 | |
Mt Eden climb | 0.14 | 1.02 | 272 | 7.29 | 592.0 | 267.0 | 5.05 | 1.64 | 83.0 | |
Tunitas lower climb | 0.22 | 1.30 | 421 | 5.91 | 583.0 | 324.0 | 6.13 | 2.09 | 128.0 | |
Kings Greer to Skyline | 0.81 | 3.92 | 1536 | 4.84 | 578.0 | 392.0 | 7.42 | 6.31 | 468.0 | |
Haskins | 0.30 | 1.51 | 566 | 5.03 | 575.0 | 375.0 | 7.10 | 2.43 | 173.0 |
I can also look at VAM numbers for complete rides. I would expect the ride VAM to be half the segment VAM (or less) since most of my rides are circuits where I return to the start, and thus no more than half the ride is climbing. Sure enough, the best I can do is about 400 meters/hour:
top(rides, 'vam')
date | year | title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Sun, 11/29/2015 | 2015 | Mt. Hamilton | 3.68 | 37.00 | 4902 | 10.05 | 406.0 | 132.0 | 2.51 | 59.53 | 1494.0 | |
Fri, 4/2/2021 | 2021 | Everesting 5: climb 2×(OLH + WOLH) | 3.27 | 31.48 | 4344 | 9.63 | 405.0 | 138.0 | 2.61 | 50.65 | 1324.0 | |
Mon, 3/29/2021 | 2021 | Everesting 1: Mt Diablo | 2.60 | 22.22 | 3406 | 8.55 | 399.0 | 153.0 | 2.90 | 35.75 | 1038.0 | |
Tue, 3/30/2021 | 2021 | Everesting 2: Kings + WOLH + OLH | 3.34 | 35.99 | 4377 | 10.78 | 399.0 | 122.0 | 2.30 | 57.91 | 1334.0 | |
Sun, 12/1/2013 | 2013 | Mt. Hamilton | 3.78 | 37.56 | 4921 | 9.94 | 397.0 | 131.0 | 2.48 | 60.43 | 1500.0 | |
Sat, 11/25/2017 | 2017 | Mt. Hamilton | 3.69 | 36.65 | 4806 | 9.93 | 397.0 | 131.0 | 2.48 | 58.97 | 1465.0 | |
Fri, 10/30/2015 | 2015 | OLH / West Alpine | 3.48 | 39.51 | 4505 | 11.35 | 395.0 | 114.0 | 2.16 | 63.57 | 1373.0 | |
Sat, 4/26/2014 | 2014 | OLH / Tunitas Creek | 5.26 | 58.69 | 6742 | 11.16 | 391.0 | 115.0 | 2.18 | 94.43 | 2055.0 | |
Sat, 4/18/2015 | 2015 | Tunitas + Lobitos Creeks | 5.24 | 61.27 | 6611 | 11.69 | 385.0 | 108.0 | 2.04 | 98.58 | 2015.0 | |
Wed, 10/14/2015 | 2015 | Half Moon Bay | 6.13 | 72.97 | 7644 | 11.90 | 380.0 | 105.0 | 1.98 | 117.41 | 2330.0 | |
Sat, 7/25/2015 | 2015 | Palo Alto, California | 4.04 | 43.62 | 4819 | 10.80 | 364.0 | 110.0 | 2.09 | 70.18 | 1469.0 | |
Sun, 6/4/2017 | 2017 | Sequoia Challenge | 6.29 | 66.52 | 7520 | 10.58 | 364.0 | 113.0 | 2.14 | 107.03 | 2292.0 | |
Sat, 10/11/2014 | 2014 | OLH / Tunitas | 5.09 | 58.29 | 6044 | 11.45 | 362.0 | 104.0 | 1.96 | 93.79 | 1842.0 | |
Sat, 8/13/2016 | 2016 | Petaluma / Point Reyes | 4.50 | 54.75 | 5286 | 12.17 | 358.0 | 97.0 | 1.83 | 88.09 | 1611.0 | |
Fri, 8/28/2015 | 2015 | Pescadaro via OLH | 5.31 | 66.01 | 6137 | 12.43 | 352.0 | 93.0 | 1.76 | 106.21 | 1871.0 | |
Sun, 4/4/2021 | 2021 | Everesting 7: Mill Creek / Morrison Canyon | 3.08 | 29.38 | 3517 | 9.54 | 348.0 | 120.0 | 2.27 | 47.27 | 1072.0 | |
Sat, 2/10/2024 | 2024 | Seacliff, etc. | 4.72 | 63.41 | 5365 | 13.43 | 346.0 | 85.0 | 1.60 | 102.03 | 1635.0 | |
Wed, 6/18/2014 | 2014 | Sierra to the Sea Day 4 | 4.96 | 57.64 | 5561 | 11.62 | 342.0 | 96.0 | 1.83 | 92.74 | 1695.0 | |
Sun, 6/3/2018 | 2018 | The Sequoia | 5.97 | 64.92 | 6677 | 10.87 | 341.0 | 103.0 | 1.95 | 104.46 | 2035.0 | |
Sat, 5/9/2015 | 2015 | OLH | 2.50 | 32.33 | 2788 | 12.93 | 340.0 | 86.0 | 1.63 | 52.02 | 850.0 |
Some more ways to look at the data, both rides and segments.
rides.describe() # Summary statistics for the rides
year | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
count | 538.000000 | 538.000000 | 538.000000 | 538.000000 | 538.000000 | 538.000000 | 538.000000 | 538.000000 | 538.000000 | 538.000000 |
mean | 2016.946097 | 3.348160 | 42.774461 | 1817.260223 | 12.980186 | 157.825279 | 41.563197 | 0.786952 | 68.823996 | 553.905204 |
std | 2.504163 | 1.444032 | 17.291496 | 1493.188373 | 1.314401 | 90.089192 | 27.274669 | 0.516451 | 27.822002 | 455.121271 |
min | 2012.000000 | 1.540000 | 20.960000 | 68.000000 | 8.550000 | 10.000000 | 3.000000 | 0.050000 | 33.720000 | 21.000000 |
25% | 2015.000000 | 2.210000 | 29.037500 | 731.250000 | 12.162500 | 81.000000 | 20.000000 | 0.370000 | 46.722500 | 223.000000 |
50% | 2017.000000 | 2.860000 | 36.710000 | 1368.000000 | 13.130000 | 152.500000 | 36.000000 | 0.690000 | 59.070000 | 417.000000 |
75% | 2018.000000 | 4.350000 | 56.275000 | 2322.250000 | 13.777500 | 218.750000 | 56.000000 | 1.070000 | 90.542500 | 707.750000 |
max | 2024.000000 | 8.140000 | 102.410000 | 7644.000000 | 16.750000 | 406.000000 | 153.000000 | 2.900000 | 164.780000 | 2330.000000 |
segments.describe() # Summary statistics for the segments
hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|
count | 141.000000 | 141.000000 | 141.000000 | 141.000000 | 141.000000 | 141.000000 | 141.000000 | 141.000000 | 141.000000 |
mean | 0.141702 | 0.932979 | 268.978723 | 7.444539 | 641.893617 | 353.503546 | 6.694894 | 1.501064 | 81.978723 |
std | 0.173711 | 0.989832 | 295.060659 | 3.557336 | 211.923595 | 186.816320 | 3.537974 | 1.592267 | 89.957408 |
min | 0.010000 | 0.080000 | 21.000000 | 2.120000 | 111.000000 | 18.000000 | 0.350000 | 0.130000 | 6.000000 |
25% | 0.050000 | 0.330000 | 104.000000 | 4.830000 | 503.000000 | 219.000000 | 4.140000 | 0.530000 | 32.000000 |
50% | 0.090000 | 0.600000 | 166.000000 | 6.190000 | 630.000000 | 333.000000 | 6.300000 | 0.970000 | 51.000000 |
75% | 0.150000 | 1.190000 | 303.000000 | 9.800000 | 724.000000 | 462.000000 | 8.760000 | 1.910000 | 92.000000 |
max | 1.390000 | 7.380000 | 1887.000000 | 19.790000 | 1463.000000 | 839.000000 | 15.890000 | 11.870000 | 575.000000 |
top(rides, 'mph') # Fastest rides (of more than 20 miles, that I sampled into database)
date | year | title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Sun, 5/22/2016 | 2016 | Canada | 2.19 | 36.68 | 1332 | 16.75 | 185.0 | 36.0 | 0.69 | 59.02 | 406.0 | |
Wed, 9/13/2017 | 2017 | Healdburg / Jimtown | 2.13 | 34.45 | 912 | 16.17 | 131.0 | 26.0 | 0.50 | 55.43 | 278.0 | |
Sat, 1/25/2014 | 2014 | Woodside | 1.56 | 25.08 | 1243 | 16.08 | 243.0 | 50.0 | 0.94 | 40.35 | 379.0 | |
Sat, 4/11/2015 | 2015 | Woodside | 1.54 | 24.73 | 1035 | 16.06 | 205.0 | 42.0 | 0.79 | 39.79 | 315.0 | |
Sun, 7/11/2021 | 2021 | San Jose | 4.10 | 65.10 | 1086 | 15.88 | 81.0 | 17.0 | 0.32 | 104.75 | 331.0 | |
Sun, 1/18/2015 | 2015 | Woodside | 1.64 | 26.02 | 1257 | 15.87 | 234.0 | 48.0 | 0.91 | 41.87 | 383.0 | |
Fri, 6/24/2016 | 2016 | Foothill Expway | 1.59 | 25.11 | 623 | 15.79 | 119.0 | 25.0 | 0.47 | 40.40 | 190.0 | |
Sun, 1/26/2014 | 2014 | Canada Rd | 2.10 | 33.12 | 1446 | 15.77 | 210.0 | 44.0 | 0.83 | 53.29 | 441.0 | |
Fri, 1/6/2012 | 2012 | Omarama to Wanaka New Zealand | 4.48 | 70.35 | 3262 | 15.70 | 222.0 | 46.0 | 0.88 | 113.19 | 994.0 | |
Sun, 4/12/2015 | 2015 | Palo Alto Cycling | 2.03 | 31.76 | 1210 | 15.65 | 182.0 | 38.0 | 0.72 | 51.10 | 369.0 | |
Sun, 10/15/2017 | 2017 | Los Gatos | 2.86 | 44.71 | 1437 | 15.63 | 153.0 | 32.0 | 0.61 | 71.94 | 438.0 | |
Sun, 8/5/2018 | 2018 | Bike Ride Northwest Day 1 | 3.58 | 55.77 | 1824 | 15.58 | 155.0 | 33.0 | 0.62 | 89.73 | 556.0 | |
Sun, 2/28/2016 | 2016 | Woodside Loop | 1.73 | 26.93 | 843 | 15.57 | 149.0 | 31.0 | 0.59 | 43.33 | 257.0 | |
Sun, 6/26/2016 | 2016 | Los Gatos | 3.28 | 50.78 | 1181 | 15.48 | 110.0 | 23.0 | 0.44 | 81.71 | 360.0 | |
Mon, 1/19/2015 | 2015 | Canada Rd, etc. | 2.95 | 45.64 | 1836 | 15.47 | 190.0 | 40.0 | 0.76 | 73.43 | 560.0 | |
Sun, 1/19/2014 | 2014 | Palo Alto, CA | 1.62 | 25.01 | 1201 | 15.44 | 226.0 | 48.0 | 0.91 | 40.24 | 366.0 | |
Sun, 12/6/2015 | 2015 | Canada Rd | 2.25 | 34.67 | 1237 | 15.41 | 168.0 | 36.0 | 0.68 | 55.78 | 377.0 | |
Tue, 6/18/2013 | 2013 | work etc (headwinds) | 2.06 | 31.48 | 809 | 15.28 | 120.0 | 26.0 | 0.49 | 50.65 | 247.0 | |
Fri, 9/23/2016 | 2016 | Los Gatos | 2.89 | 43.93 | 1339 | 15.20 | 141.0 | 30.0 | 0.58 | 70.68 | 408.0 | |
Sat, 7/9/2016 | 2016 | Santa Cruz | 3.84 | 58.23 | 4042 | 15.16 | 321.0 | 69.0 | 1.31 | 93.69 | 1232.0 |
top(segments, 'mph') # Fastest segments (there are no descent segments in the database)
title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
PCH Pescadero to Bean Hollow | 0.14 | 2.77 | 51 | 19.79 | 111.0 | 18.0 | 0.35 | 4.46 | 16.0 | |
Highway 1 Cascanoa to Cascade | 0.09 | 1.61 | 89 | 17.89 | 301.0 | 55.0 | 1.05 | 2.59 | 27.0 | |
Vickrey Fruitvale | 0.06 | 0.99 | 68 | 16.50 | 345.0 | 69.0 | 1.30 | 1.59 | 21.0 | |
Highway 9 Mantalvo | 0.03 | 0.45 | 35 | 15.00 | 356.0 | 78.0 | 1.47 | 0.72 | 11.0 | |
Highway 9 Mantalvo | 0.03 | 0.45 | 35 | 15.00 | 356.0 | 78.0 | 1.47 | 0.72 | 11.0 | |
The Boneyard | 0.10 | 1.48 | 135 | 14.80 | 411.0 | 91.0 | 1.73 | 2.38 | 41.0 | |
Vickrey Fruitvale | 0.07 | 0.99 | 68 | 14.14 | 296.0 | 69.0 | 1.30 | 1.59 | 21.0 | |
Sand Hill Alpine to 280 | 0.12 | 1.67 | 180 | 13.92 | 457.0 | 108.0 | 2.04 | 2.69 | 55.0 | |
Canada to College | 0.10 | 1.37 | 119 | 13.70 | 363.0 | 87.0 | 1.65 | 2.20 | 36.0 | |
Foothill Homestead | 0.09 | 1.22 | 126 | 13.56 | 427.0 | 103.0 | 1.96 | 1.96 | 38.0 | |
The Boneyard | 0.11 | 1.48 | 135 | 13.45 | 374.0 | 91.0 | 1.73 | 2.38 | 41.0 | |
Kaboom Portola Rd | 0.05 | 0.67 | 102 | 13.40 | 622.0 | 152.0 | 2.88 | 1.08 | 31.0 | |
Woodside Climb | 0.13 | 1.71 | 295 | 13.15 | 692.0 | 173.0 | 3.27 | 2.75 | 90.0 | |
Sand Hill Alpine to 280 | 0.13 | 1.67 | 180 | 12.85 | 422.0 | 108.0 | 2.04 | 2.69 | 55.0 | |
Alpine Westridge | 0.06 | 0.76 | 99 | 12.67 | 503.0 | 130.0 | 2.47 | 1.22 | 30.0 | |
Alpine Westridge | 0.06 | 0.76 | 99 | 12.67 | 503.0 | 130.0 | 2.47 | 1.22 | 30.0 | |
Stanford Ave | 0.05 | 0.63 | 85 | 12.60 | 518.0 | 135.0 | 2.56 | 1.01 | 26.0 | |
Canada to College | 0.11 | 1.37 | 119 | 12.45 | 330.0 | 87.0 | 1.65 | 2.20 | 36.0 | |
Sand Hill 280 to horse | 0.04 | 0.49 | 95 | 12.25 | 724.0 | 194.0 | 3.67 | 0.79 | 29.0 | |
Stevens Country Park | 0.10 | 1.22 | 112 | 12.20 | 341.0 | 92.0 | 1.74 | 1.96 | 34.0 |
top(segments, 'feet') # Biggest climbing segments
title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
West Alpine full | 1.39 | 7.38 | 1887 | 5.31 | 414.0 | 256.0 | 4.84 | 11.87 | 575.0 | |
Kings Greer to Skyline | 0.78 | 3.92 | 1536 | 5.03 | 600.0 | 392.0 | 7.42 | 6.31 | 468.0 | |
Kings Greer to Skyline | 0.81 | 3.92 | 1536 | 4.84 | 578.0 | 392.0 | 7.42 | 6.31 | 468.0 | |
Old La Honda (Bridge to Stop) | 0.48 | 3.33 | 1255 | 6.94 | 797.0 | 377.0 | 7.14 | 5.36 | 383.0 | |
Old La Honda (Bridge to Stop) | 0.51 | 3.33 | 1255 | 6.53 | 750.0 | 377.0 | 7.14 | 5.36 | 383.0 | |
Alma Mountain Charlie | 0.53 | 3.12 | 875 | 5.89 | 503.0 | 280.0 | 5.31 | 5.02 | 267.0 | |
Kings half way | 0.46 | 2.89 | 820 | 6.28 | 543.0 | 284.0 | 5.37 | 4.65 | 250.0 | |
Kings half way | 0.50 | 2.89 | 820 | 5.78 | 500.0 | 284.0 | 5.37 | 4.65 | 250.0 | |
Alpine Portola to top Joaquin | 0.57 | 3.52 | 801 | 6.18 | 428.0 | 228.0 | 4.31 | 5.66 | 244.0 | |
Alpine Portola to top Joaquin | 0.58 | 3.52 | 801 | 6.07 | 421.0 | 228.0 | 4.31 | 5.66 | 244.0 | |
Tunitas steep | 0.27 | 1.20 | 599 | 4.44 | 676.0 | 499.0 | 9.45 | 1.93 | 183.0 | |
Tunitas steep | 0.25 | 1.20 | 599 | 4.80 | 730.0 | 499.0 | 9.45 | 1.93 | 183.0 | |
Haskins | 0.30 | 1.51 | 566 | 5.03 | 575.0 | 375.0 | 7.10 | 2.43 | 173.0 | |
Haskins | 0.31 | 1.51 | 566 | 4.87 | 557.0 | 375.0 | 7.10 | 2.43 | 173.0 | |
Coe Second Switchback to flat | 0.22 | 1.00 | 483 | 4.55 | 669.0 | 483.0 | 9.15 | 1.61 | 147.0 | |
Lower Redwood Gulch | 0.22 | 1.03 | 474 | 4.68 | 657.0 | 460.0 | 8.72 | 1.66 | 144.0 | |
Alpine Willowbrook to Joaquin | 0.29 | 2.27 | 461 | 7.83 | 485.0 | 203.0 | 3.85 | 3.65 | 141.0 | |
Alpine Willowbrook to Joaquin | 0.28 | 2.27 | 461 | 8.11 | 502.0 | 203.0 | 3.85 | 3.65 | 141.0 | |
Lobitas Creek | 0.20 | 0.96 | 430 | 4.80 | 655.0 | 448.0 | 8.48 | 1.54 | 131.0 | |
Tunitas lower climb | 0.22 | 1.30 | 421 | 5.91 | 583.0 | 324.0 | 6.13 | 2.09 | 128.0 |
top(segments, 'pct') # Steepest climbs
title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|
Redwood Gulch hits | 0.06 | 0.18 | 151 | 3.00 | 767.0 | 839.0 | 15.89 | 0.29 | 46.0 | |
Valparaiso steep | 0.04 | 0.18 | 145 | 4.50 | 1105.0 | 806.0 | 15.26 | 0.29 | 44.0 | |
Valparaiso steep | 0.05 | 0.18 | 145 | 3.60 | 884.0 | 806.0 | 15.26 | 0.29 | 44.0 | |
Limantour steepest | 0.09 | 0.20 | 159 | 2.22 | 538.0 | 795.0 | 15.06 | 0.32 | 48.0 | |
Joaquin | 0.10 | 0.33 | 254 | 3.30 | 774.0 | 770.0 | 14.58 | 0.53 | 77.0 | |
Joaquin | 0.09 | 0.33 | 254 | 3.67 | 860.0 | 770.0 | 14.58 | 0.53 | 77.0 | |
Entrance Way Hill Repeats | 0.02 | 0.10 | 76 | 5.00 | 1158.0 | 760.0 | 14.39 | 0.16 | 23.0 | |
Stirrup Wall | 0.06 | 0.17 | 125 | 2.83 | 635.0 | 735.0 | 13.93 | 0.27 | 38.0 | |
Stirrup Wall | 0.08 | 0.17 | 125 | 2.12 | 476.0 | 735.0 | 13.93 | 0.27 | 38.0 | |
Westridge 3min | 0.08 | 0.37 | 240 | 4.62 | 914.0 | 649.0 | 12.29 | 0.60 | 73.0 | |
Westridge 3min | 0.09 | 0.37 | 240 | 4.11 | 813.0 | 649.0 | 12.29 | 0.60 | 73.0 | |
Limantour Spit | 0.09 | 0.47 | 303 | 5.22 | 1026.0 | 645.0 | 12.21 | 0.76 | 92.0 | |
Klamath Dr. | 0.02 | 0.12 | 77 | 6.00 | 1173.0 | 642.0 | 12.15 | 0.19 | 23.0 | |
green valley kicker | 0.08 | 0.29 | 178 | 3.62 | 678.0 | 614.0 | 11.62 | 0.47 | 54.0 | |
Redwood Gulch wall | 0.11 | 0.43 | 258 | 3.91 | 715.0 | 600.0 | 11.36 | 0.69 | 79.0 | |
Paloma Climb | 0.02 | 0.14 | 82 | 7.00 | 1250.0 | 586.0 | 11.09 | 0.23 | 25.0 | |
Try not to fall back | 0.21 | 0.71 | 410 | 3.38 | 595.0 | 577.0 | 10.94 | 1.14 | 125.0 | |
Westridge | 0.14 | 0.68 | 385 | 4.86 | 838.0 | 566.0 | 10.72 | 1.09 | 117.0 | |
Westridge | 0.16 | 0.68 | 385 | 4.25 | 733.0 | 566.0 | 10.72 | 1.09 | 117.0 | |
Stair Step | 0.09 | 0.32 | 175 | 3.56 | 593.0 | 547.0 | 10.36 | 0.51 | 53.0 |
top(rides, 'miles') # Longest rides
date | year | title | hours | miles | feet | mph | vam | fpmi | pct | kms | meters | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Fri, 1/9/2012 | 2012 | Otago Rail Trail Century | 7.87 | 102.41 | 2286 | 13.01 | 89.0 | 22.0 | 0.42 | 164.78 | 697.0 | |
Sat, 5/7/2022 | 2022 | Wine Country Century | 6.65 | 100.26 | 5253 | 15.08 | 241.0 | 52.0 | 0.99 | 161.32 | 1601.0 | |
Thu, 6/14/2012 | 2012 | Coyote Creek Century with Juliet | 8.14 | 100.07 | 1513 | 12.29 | 57.0 | 15.0 | 0.29 | 161.01 | 461.0 | |
Sat, 5/13/2017 | 2017 | Morgan Hill iCare Classic | 7.46 | 100.05 | 4596 | 13.41 | 188.0 | 46.0 | 0.87 | 160.98 | 1401.0 | |
Sat, 5/12/2018 | 2018 | ICare Classic, Morgan Hill | 6.80 | 91.29 | 4160 | 13.42 | 186.0 | 46.0 | 0.86 | 146.89 | 1268.0 | |
Sat, 5/6/2017 | 2017 | Wine Country Century | 7.26 | 89.49 | 5246 | 12.33 | 220.0 | 59.0 | 1.11 | 143.99 | 1599.0 | |
Fri, 8/10/2018 | 2018 | Bike Ride Northwest Day 6 | 6.24 | 84.70 | 4380 | 13.57 | 214.0 | 52.0 | 0.98 | 136.28 | 1335.0 | |
Fri, 2/28/2020 | 2020 | Sawyer Camp Trail | 6.41 | 84.43 | 3448 | 13.17 | 164.0 | 41.0 | 0.77 | 135.85 | 1051.0 | |
Wed, 6/7/2023 | 2023 | Los Altos | 7.05 | 81.54 | 2110 | 11.57 | 91.0 | 26.0 | 0.49 | 131.20 | 643.0 | |
Sun, 8/30/2020 | 2020 | Los Gatos | 6.36 | 80.92 | 2100 | 12.72 | 101.0 | 26.0 | 0.49 | 130.20 | 640.0 | |
Sat, 9/17/2022 | 2022 | San Gregorio / Tunitas | 6.56 | 80.53 | 6015 | 12.28 | 279.0 | 75.0 | 1.41 | 129.57 | 1833.0 | |
Sat, 10/1/2016 | 2016 | Half Moon Bay overnight campout | 7.51 | 80.07 | 6039 | 10.66 | 245.0 | 75.0 | 1.43 | 128.83 | 1841.0 | |
Mon, 10/5/2020 | 2020 | Half way around the bay on bay trail | 6.44 | 80.05 | 541 | 12.43 | 26.0 | 7.0 | 0.13 | 128.80 | 165.0 | |
Sun, 6/21/2020 | 2020 | Sawyer Camp Trail | 6.59 | 79.78 | 1738 | 12.11 | 80.0 | 22.0 | 0.41 | 128.37 | 530.0 | |
Thu, 1/5/2012 | 2012 | Tekapo Lake to Omarama New Zealand | 5.46 | 79.42 | 2145 | 14.55 | 120.0 | 27.0 | 0.51 | 127.79 | 654.0 | |
Tue, 8/7/2018 | 2018 | Bike Ride Northwest Day 3 | 6.18 | 78.96 | 5092 | 12.78 | 251.0 | 64.0 | 1.22 | 127.05 | 1552.0 | |
Sun, 6/15/2014 | 2014 | Sierra to the Sea Day 1 | 5.57 | 78.53 | 4777 | 14.10 | 261.0 | 61.0 | 1.15 | 126.35 | 1456.0 | |
Sun, 2/7/2021 | 2021 | Saratoga / Campbell | 5.89 | 78.38 | 2270 | 13.31 | 117.0 | 29.0 | 0.55 | 126.11 | 692.0 | |
Sat, 7/2/2022 | 2022 | Bear Gulch, West Side | 6.49 | 77.73 | 6991 | 11.98 | 328.0 | 90.0 | 1.70 | 125.07 | 2131.0 | |
Sun, 6/2/2019 | 2019 | The Sequoia | 6.68 | 77.51 | 6467 | 11.60 | 295.0 | 83.0 | 1.58 | 124.71 | 1971.0 |