Not running feels nice

One of my favorite things about running is being outside. I'm not running today, but when I found myself up before dawn today, I sat outside drinking coffee for 10 minutes before taking my oldest to her pre-school chamber orchestra practice. Not a bad way to start to the week. Not at all.

Programmer migration patterns

I found a fun post by Avery Pennarun about programmer migration patterns using RSS. Have you heard of RSS? It's a quite intriguing concept: you create a terse XML log of your toots or twetes or longer form writings on the web, publish the log on the web, and other people can set up software that periodically checks the XML log and sends a notification when you've written something. You should give it a try!

In fact, I found Pennarun's post about 3 weeks ago, but have been too occupied with work, family, and running to blog about it until now. I've thought about what languages programmers use and why, and enjoyed reading another non-scientific take.

Myself, I've followed two of the paths that Pennarun graphed in the blog post.

  • C -> Perl -> Python 2 -> Python 3

  • sh -> awk -> Perl -> Python 2 -> Python 3

I've done different kinds of programming and dabbled in some esoteric languages, but lately I'm doing system programming, and almost all of it in Python 3. As Pennarun points out, when you need Python programs to run faster, you rewrite their modules in C. I've learned to do this and have also learned how to distribute and deploy C extension modules. I haven't felt the need to migrate to Go, the other next stop for Python 2 programmers in Pennarun's graph. Not yet.

Python 3 use is growing at work and people are definitely coming from Javascript. Mostly because JS options are limited when using Apache Spark, especially with the major Spark hosting services, not because of language features or syntax. I do, however, see signs that some of my coworkers are beginning to appreciate mainstream Python features like path objects, slicing, unpacking, and f-strings. For what it's worth, no one has yet asked me how to use type hinting or how to implement type checking, perhaps because the language switchers tend to have begun their careers with Javascript instead of C++ or Java.

I feel gratified when I see open source Python packages like mercantile, shapely, and rasterio spreading more quickly to other teams at work. This pleases me, greatly. Investing modestly in Python, even when it wasn't considered cool or the next big thing, was a good idea. It's paying off.

Training week nineteen recap

I just came home from the third of my back-to-back-to-back days of long runs: 13+ miles on Friday, 30 on Saturday, and 17+ today. All with significant hills. I feel tired, but not exhausted, and very satisfied. I'm looking looking forward to large servings of cheesy baked pasta and some bubbly pink wine this evening.

The numbers:

  • 15 hours 27 minutes

  • 75.8 miles

  • 12,067 feet D+

All new highs, again. I might wind up on the local Strava club's virtual podiums for distance, total time, and climbing this week. At the end of week 16, I wrote that I was going to try to run over 200 miles in weeks 17-19. I managed 215.

Saturday's run was my longest ever. I spent 7.5 hours running the fourth, first, second, and third Quad Rock climbs. In theory, If I can do the fifth (up Mill Canyon), the sixth (up Spring Creek), and the valley flats in 6.5 hours, I'll be a finisher. I'm pretty sure I'm now physically capable of running 50 miles with 11,000 feet D+. I've trained well. I've figured out what gear I need. I'm running with people who've finished and they tell me that I'm on track. I felt confident that I had at least another two hours of power hiking effort left in me when I got back to the trailhead yesterday. Still, I'm sure I'm going to have to overcome some kind of extra adversity on race day: weather, or gear, or a test of my will to keep going through the unknown late race state of mind and body. I ran 60+ miles Friday, Saturday, and Sunday, but it's going to be something else to do 50 in a single day.

Next week dedicated to recovery and family. I'm going to try to enjoy the feeling of muscles growing and spending more time with my kids while Ruth is away Monday through Wednesday.

More views of the Quad Rock course from the east side of Horsetooth Reservoir, which is filling quickly.

Training week eighteen recap

Running is taking over my life. It's a good thing that next week is the last week of heavy training. In addition to the time I spend on the trail, there is the time spent getting to and from trailheads, time spent planning runs, the time spent actively recovering. Stretching, icing, foam rolling, yoga, massage, and eating take all the time I estimated they would, and maybe a little more.

Here are the numbers for week 18 of my 24 week program.

  • 14 hours 40 minutes running and hiking

  • 73.9 miles

  • 9852 feet D+

I reached new highs for all three this week. I ran just short of 45 miles this weekend and Saturday's run was my longest ever: 28.8 miles. I had a hard interval workout on Tuesday and a mid-week long run on the Quad Rock course on Wednesday was what set me up to exceed last week's mileage.

Saturday's long run felt like a chore. It had snowed the night before and threatened to snow during the day so I had a lot of extra gear, and extra food, and 3 litres of water in my camelbak. I ate and drank everything.

My long run on the 24th of March taught me a lesson about fueling and hydrating and Saturday I took these needs more seriously. I had two bowls of chickpea soup, half a baguette with plenty of butter, and another large bowl of steamed squash, potato, and turnips leftover from Friday night's couscous. I had a double IPA and a large baked potato for dessert while I watched a movie with my family (Harry Potter and the Deathly Hallows – Part 2). For second dessert I had a raised doughnut with maple icing.

Today I went out for only 16 miles, but a steep 16, at Bobcat Ridge and felt great. My legs felt fresh, my mood was positive, and I got new PRs on almost all the Strava segments along the route. Carbohydrates are amazing. Going lighter gear-wise also helped make the run much more fun than the previous one.

Horsetooth Open Space's Loggers Trail, 2019-03-30

Training week seventeen recap

This past week was spring break for Ruth and my kids. I had work, but took Thursday off to ski, and was able to sleep in a bit in the mornings instead of making lunches and getting kids off to school. And I ran and ran.

  • 12 hours and 59 minutes running and hiking

  • 66.2 miles

  • 8038 feet D+

I had a solid interval workout on Tuesday and some faster paced running on Wednesday at Pineridge, which had finally dried out and become open for use. Saturday I joined a small group of Quad Rock 50 aspirants in running the 25 mile course. I was ahead of my May 2018 race pace until the last two descents of the Mill Canyon and Timber trails, which were quite packed with snow and ice. I took it easy going down, not willing to risk crashing. I had to cope with some back and ankle pain left over from skiing, and managed that well, too. Good company helped. After the run, I felt like I had enough energy to turn around and go back out, which is a good sign. Other good signs: on south-facing slopes there are green shoots coming out of the soil and it's warm enough to run in shorts and short sleeves as long as you don't stop moving.

Today I went out for another 16 miles on single track east of Horsetooth Reservoir. The muscles in my lower back were less aggrieved, but the tendons on the front of my left foot were more tender than the day before. I concentrated on running lightly, thinking happy thoughts, and being friendly to the many other folks on the trails. This worked well. 41 miles is a weekend record for me. I felt quite satisfied as I first soaked my feet and ankles in a bucket of ice water and then enjoyed a cold beer and a hot bath.

Sign of Spring: Jonquilles emerging in my yard

Spring weather

I'm sitting in my kitchen typing at my computer and watching the rain and just heard thunder outside for the first time this year. This is good! I've been training in the dark and cold of Winter for 4 months and am ready for it to move on.

Fiona discussion groups

The Fiona project now has brand-new, old-fashioned users and developers discussion groups on The former is for support, the latter is for project planning. Please subscribe to one or both of these if you'd like to receive announcements, help your fellow Fiona users, or contribute to the further development of the package. Thanks!

Linux on the desktop, stabilized

I've turned off Bluetooth on my Thinkpad and replaced my Bluetooth keyboard and mouse with wireless USB units: a cheap Logitech K360 compact keyboard and M325 mouse. After 3 days there is no sign of the memory leaks that I wrote about on Sunday. The clue that Bluetooth, or these particular devices, might be implicated was the presence of a gsd-wacom process at the top of top's memory-sorted table. I've no Wacom device, but I associate them with Bluetooth. Removing Bluetooth devices from my workplace hasn't fixed the bug in Gnome or the device driver, but the bug is now dormant. I'm moving on.

Linux on the desktop

We've been saying "$CURRENT_YEAR is the year of Linux on the desktop" for about 20 years now and we're still not there yet. I've been using Ubuntu 18.04 and Gnome on a Lenovo ThinkPad X1 Carbon since last October and the stability of Gnome is disappointing. After a restart, I have a handful of days of usability before my computer is out of memory. Keeping top open finally revealed the problem: the memory footprints of gsd-power, gsd-color, and gsd-wacom – gnome-settings-daemon services – grow over time until my computer's RAM is almost entirely allocated and swapping takes over. I haven't been able to find a graceful way to restart these services. Sending them SIGHUP worked once, memory and usability were regained temporarily, but then the next time it caused a complete restart of my Gnome session. I'm becoming fed up with this. Next week I'll test a hypothesis that my Apple bluetooth keyboard and mouse are implicated. Then, I'll see if some alternative desktop environments aren't more reliable.

Training week sixteen recap

I've finished another recovery week. I spent twice as much time in yoga and massage sessions and on an elliptical trainer as I did on the trail.

  • 1:56

  • 11.9 miles

  • 233 feet D+

We had a blizzard on Wednesday and plenty of snow still around on Thursday. I'm fortunate that I didn't have big training plans. The snow is largely gone now, except where it drifted, but trails are quite muddy. Bobcat Ridge, Pineridge, Maxwell, and Reservoir Ridge are all closed today.

I'm going to attempt to run over 200 miles in the next three weeks. I should probably be napping or rolling on my foam cylinder instead of writing, but I suspect I won't have much energy for extracurricular writing during the remainder of March and am trying to cram in a little blogging today.