Fiona 1.8.5

Fiona, the Python library for reading and write geospatial vector data that is used by GeoPandas, has a new 1.8.5 release with significant bug fixes and performance improvements. See the change log for details and pip install -U fiona to upgrade.

Another reason to upgrade is that the wheels on PyPI now include GDAL 2.4.0, a version with many core and format driver improvements, including support for GeoJSON feature sequences and WebP compression in GeoTIFFs.

Training week 15 and Salida trail marathon recap

The last week was challenging. I reached a new personal mileage record, ran 9 consecutive days (ending Wednesday), finished the Run Through Time trail marathon on Salida's Arkansas Hills Tail System on Saturday, and then went out for another long run on Sunday.

  • 68.4 miles

  • 12 hours 45 minutes

  • 6430 feet D+

The weird thing is that I'm feeling good and not at all worn out or burned out. I guess my training regime must be working. Next week is a recovery week. I'm going to do much less running and more cycling, yoga, and hiking with my kids on the weekend.

Friday I drove 200 miles from Fort Collins to the town of Salida in the center of Colorado to participate in the Chaffee County Running Club's Run Through Time trail marathon.

My race bib.

In the 1990s I used to come to this part of Colorado regularly for hiking and skiing in the Sawatch Range, but it's been a while since I've visited Salida. The race day weather was fine. Cool and sunny with just a bit of a breeze. I wore my windbreaker, hat, and gloves at the start and for about half a mile of the course, then stashed them in my pack for the remainder.

At the starting line with Mt. Shavano and Mt. Princeton in the background

My performance expectations were low. The race was coming at the end of what were, for me, three big weeks of training. I didn't feel tired, but I didn't feel very fresh. After the start I drifted towards the back of the pack while trying to find a suitable pace. After a few miles I settled in and started to feel comfortable on the winding, rolling singletrack at the bottom of the course. At mile 7, the course turned onto a steep graded road for six miles. I hiked most of this and passed a number of runners. I've been working on hiking quickly and efficiently and was satisfied with how I did during the race.

At the top, the course switched onto completely snow-covered trails for about six miles. The snow was deeply drifted in places and the footing was poor. I took this slowly, got passed three times, and conceded a bunch of time. As the snow clear, the descent turned very steep and rocky for five miles. I managed this well, but my legs were feeling heavy in the last two miles and I conceded more time. I finished in 5 hours and 33 minutes, two hours after the first finisher. I'm pleased with this. That's 15 minutes faster than my 2017 Blue Sky marathon time, on a comparably challenging course, without any tapering or rest before the race. I'm also pleased that I was able to recover and go for another long run on the Coyote Ridge and Blue Sky trails on the way home from Salida. 37 miles in all for the weekend. I'm feeling more confident about finishing the Quad Rock 50 in May.

Tenderfoot Mountain, Salida landmark, and the first climb of the day


The CSU weather station, a few blocks from my house, reported a low temperature of -21.8 °C (-7.3 °F) at 6:20 this morning. It was 11 °C inside my house. The furnace had not started because its humidifier's exhaust tube had a small ice plug. Ruth unblocked it using a hair dryer. We're lucky that this kind of cold only comes around once a year. I'm going to wait until the air temperature gets close to -10 °C before I go running today.

Training week fourteen recap

The numbers:

  • 10 hours and 8 minutes

  • 55.2 miles

  • 4531 feet D+

A lot of snow had fallen by the time I got to Lory State Park on Saturday morning and it continued to snow steadily if not with intensity. I cut my planned run short because the going was so slow and I wasn't prepared for 7 or 8 hours out in the snow without skis or company. I went south in the valley, up Sawmill and Towers, down snowy and icy Mill Canyon, and back. 3 hours to go just under 12 miles. I could have skied some stretches of Mill Canyon Trail and did slide and fall once on my butt and elbow on the ice near the bottom.

Loggers Trail, Horsetooth Mountain Park

I didn't feel like running in deep snow today and did an easy 13.5 mile loop on the paved and mostly cleared rec trails of SW Fort Collins. I fell 5 miles short of my goal for the week, but did have solid runs during the week and made the most of poor weekend weather. I'm looking forward to nicer weather next Saturday at my first race of 2019: Chaffee County Running Club's Run Through Time in Salida, CO.

First run of March

It's March, at last, and the Vernal Equinox is only 20 days away. I ran 5 miles in shorts at an easy pace this afternoon. Tomorrow, if there's not too much snow, I'm going to try to run the 25 mile Quad Rock course with some other local trail runners. I may bring my cross country ski gear as part of a backup plan. I would be disappointed to miss my mileage target for the week (60), but it wouldn't be the end of the world. A chance to practice resiliency, even.

In February, I ran 192 miles, just under 7 miles a day on average. In 2.5 months of training for my first half marathon I ran 215 miles. I've come a long way!

On not using Slack for open source

I completely agree with Matthew Rocklin about the suitability of Slack for open source projects:

Real-time chat systems make everyone feel productive (it’s fun to have a face-paced technical conversation with colleagues), but do relatively little for long-term community consensus building, particularly when the users and developers of a project span a variety of institutions and a long range of time.

I created two discussion groups for Rasterio on because I don't want real-time support chat to suck up all the community's oxygen and because the community's collective wisdom is more powerful when it is searchable. I also don't do live support for my projects on any Slack other than Mapbox's.

Rasterio 1.0.20

We have some good changes since the last time I blogged about the project:

Rasterio can now read and write signed 8-bit integer ("int8") datasets. I don't see these at work, but some people do, and one of them, Kirill Kouzoubov, sent the pull request to make it happen.

Tapping into the same latent GDAL library feature that makes int8 support possible, we've added an out_dtype parameter to the read() method of dataset objects. Data can now be cast to different types on the fly, making code like"float32") obsolete. Now, you would do"float32") instead and enjoy reduced memory allocation.

Kirill, again, showed us exactly how to nail the use case of unsigned requests for public datasets on AWS (like the Landsat 8 PDS) which don't require help from boto3.

Lastly, we've added a linear_units property to the CRS class so that users can get the units of a reference system. For example:

>>> from import CRS
>>> CRS.from_epsg(2231).linear_units
'US survey foot'

Share and enjoy.

Midseason equipment grades

Trail running isn't about the gear, but I find it useful and safer to have some gear, especially in winter when I'm miles from shelter, water, or transportation.

I've put 3 miles short of 200 on the Hoka ONE ONE Speedgoat 3 and am pleased with how they are holding up. The uppers are like new with the exception of matching worn spots above the top inner eyelets. Evidently I clip the top of each shoe with the sole of the other when I run. My telemark boots are even more beat up on the inside than my running shoes, which suggests to me that I could pick my feet up a little more on trail. Maybe?

The lugs on the bottom are showing some wear. I expect them to go long before the uppers do, which seems normal for the trails I'm running this winter. I was out on snow and ice last weekend and the shoes still have plenty of grip. I've been able to keep up with folks wearing lightweight crampons.

I overstride and I see this in my bottom of my shoes. My heel lugs are slightly more worn than my forefoot lugs. But not by much. I've been working to increase my cadence and am slowly improving.

I expect to use these shoes up before Quad Rock and will get another pair for the race. I like them a lot. A little more toe room would be nice. 8/10.

I'm happy with my Smartwool "PhD" cold weather wool and nylon socks. My feet are comfy and don't blister, and the toe fabric has no signs of holes yet. 9/10. I carry a second pair of socks in my pack on long runs, but haven't had to use them yet. I don't have blisters, but do have black and blue toenails that I've had to tape down. I found the toe taping instructions in the Trail Runners Companion to be very helpful. Intervention can snowball, of course, and use of tape then requires lubrication. Squirrel's Nut Butter, which I've been getting as swag for years, turns out to be good for this. 9/10, a little grainy when cold.

Compression shorts and tights are off my gear list now. Capilene boxer briefs from REI (10/10) and SNB are my recipe for comfort. I like warm legs, and my Patagonia Crosstrek fleece tights would be perfect if they were 1" longer. 9/10. I usually wear a 150 or 250 weight wool top (7/10) and carry a light nylon windbreaker from Patagonia that I love but almost never wear. 9/10. I also keep a basic capilene cap and gloves from REI (6/10) in reserve, in case I get caught out in changing weather. Mostly, I don't need them when I'm on the move in daylight.

The vest I plan to wear during the Quad Rock to hold water, spare socks, and such is too small for long, self-supported, training runs. I've been using my bigger, heavier Camelbak. I take 2+ litres of water, a nutella sandwich, gels, a mini first aid and toilet kit, jacket, gloves, hat, extra socks, and my phone when I go out for 4-5 hours. My minimal vest is Camelbak's Ultra Pro (from 2017). It's breathable, fits me well (I am big but not a bodybuilder, so YMMV), and is well made. It's completely fine. I read that some people like to attach straws to their soft flasks, but I've become adept at slipping them out of and back into their pouches. Camelbak should make a Colorado edition with a frightful demon face printed on the back to ward off mountain lions. 11/10 with demon, 8/10 without.

Speaking of gels, GU brand Campfire S'Mores and Gingerade are the least terrible flavors and I carry 3-4 on a long run in case my breakfast and sandwich aren't enough. 6/10. There will be VFuel at Quad Rock and I should start getting used to that unless I want to carry my own fuel for 50 miles.

I mentioned previously that I've been wearing a Garmin Forerunner 35 since Christmas. It's not fancy at all, but is reasonably comfortable, and the battery life is good. The GPS is reliable, only flaking out on me one time in 50 runs. The heart rate monitor is less reliable. It has gone out of whack during one workout and briefly during 3 long runs. I don't know whether this is good, fair, or poor compared to other similar devices. 6/10 or 8/10 depending whether I'm feeling sentimental about 80s watches or not. The Garmin Connect app is fine. Better than many other apps on my phone. 8/10.

Coppertone Ultra Guard 50 sunscreen (7/10), trucker hat (8/10), Thermos vacuum mug of third wave coffee (10/10) for the drive to the trailhead... that's it, my current list of equipment, rated.

Training week thirteen recap

The first week of the second half of my winter/spring running season is done.

  • 10 hours and 52 minutes

  • 57.5 miles

  • 6762 feet D+

My biggest weekly mileage yet! I get to write this almost every week now and find it quite fun to do so. This is not my biggest week measured by time spent on my feet because my long runs were shorter than two weeks ago and I had two longish workouts and a longish steady run. Friday morning my workout centered on 3 7-9 minute intervals of power hiking on the Towers Road in Horsetooth Open Space followed by 5 shorter intervals of hard running on a segment of the Towers Road known to Strava users as Ax Murderer. 15% grade for a quarter mile. The Towers Road has two equally steep ramps near the top. I'm a slow runner, but a relatively fast and strong hiker. On group outings, I tend to slip off the back on the flats and downhills and catch up on the steeper climbs. Hiking is a big part of my plan for finishing the Quad Rock and I'm trying to practice and improve at it. Running hard uphill in a workout is something I'm doing purely to build endurance and power, I won't be sprinting or bounding uphill during the race.

I'm trying to follow advice of more experienced runners like Sarah Lavender Smith, author of the Trail Runners Companion, which is to make the hard days harder and the easy days easier. The weather is helping by sucking on workout days and being beautiful on long run days.

Scene of my Friday morning workout

Home stretch of Sunday's long run