2017 (old posts, page 4)

Made It

I've been parenting solo for 9 of the last 10 days and am too worn out to write much of anything other than damn, I'm glad Ruth is back, and that I'm grateful for the roof over our heads, the help of friends, the patience of coworkers, and the money to afford pizza when I can't cook anything from scratch. I'm humbled to think of people who are raising families alone in poverty, or on the road, suffering from discrimination, illness, or other troubles. Unlike them, I get to do this in easy mode.

GeoJSON in Your Clipboard

One of the best properties of a text format, maybe the best property, is how easily it can cross application boundaries.

I'm in the midst of training myself to automatically use pbcopy and pbpaste on my Mac command line and have yet another example of how readily GeoJSON travels. After exporting GeoJSON from QGIS to your Mac's clipboard or paste buffer, you could also send it directly to http://geojson.io using either the Node.js geojsonio-cli or Python geojsonio – by Jacob Wasserman, with additional Pandas and Jupyter integration features, a must-have Python module for my line of work – packages:

pbpaste | geojsonio

From your Qt GUI to the operating system clipboard, to the command line, to the web, and back to another GUI in your browser. As I keep saying, GeoJSON was never about replacing shapefiles in traditional GIS workflows; the format was intended to afford new methods and new workflows not easy or not possible with shapefiles and databases.

Halloween Hangout

I'm locally famous for not engaging with Halloween, but am making an exception for my team.


My kids, who had not much of a Halloween last year in France, are super excited about running around in costumes and extracting candy from the neighbors tonight.

Trued Macosx Wheels

I've woken up from my Nightmare on C++ Street and have uploaded new Rasterio, Fiona, and Shapely macosx wheels to PyPI. Use the pip requirement specs below to get the latest and greatest compatible wheels.

  • rasterio==1.0a11
  • fiona==1.7.10.post1
  • shapely==1.6.2.post1

My Xcode command line tools were out of sync with my libraries, libc++abi.dylib in particular. In the Xcode preferences there's an option to select versions of the command line tools. On my home computer, I've got Xcode 7.2.1 and have selected version 7.2.1 of the command line tools.


On my work computer, where I've been building the wheels, I somehow ended up with Xcode 8.2.1 and version 9.0.0 of the command line tools. I've never even seen this preference before, but do remember accepting a command line tools upgrade from Apple's App Store a while back. Reverting to command line tools version 8.2.1 cleared up the segmentation faults reported and studied in https://github.com/sgillies/frs-wheel-builds/issues/20.

I hope this blog post finds the next person to trip over this Xcode and command line tools mis-configuration.

Now I'm going to go back into PyPI and remove the broken binary wheels for older versions, leaving only the source distributions.

Busy Week Upcoming

Ruth is in D.C. this week and I'm parenting solo and spinning up a new project at work. On top of this, I've got a cold. To recover and keep it all together I'm going to be eating all the Halloween candy and going to sleep earlier, which means less time online in the evenings this week. Apologies in advance for my delayed attention to emails, pull requests, &c.

End of Soccer Season

Today my kids played the last games of their 8-week season. I enjoyed watching them and their buddies play, but I'm also happy to get my Saturdays back.

I didn't coach this season. I did help by playing the role of team manager and custodian of the all-important snack schedule for my oldest's U12 team. I made a spreadsheet, emailed reminders on Thursdays, bought her coach a gift card and shook all the parents down for contributions. In my experience this is a job that's always been picked up by a player's mother, part of the semi-mandatory free labor we require from moms. As far as I know, I'm the first dad to ever do this.

My kids (girls, remember) were coached by women this year, a first for each of them. My oldest's coach was very experienced, my youngest's was in her first season. I hope they'll each return and that we'll see more women coaching youth soccer around here in the future.

Wobbly Fiona and Shapely Wheels

On 2017-06-05 I began to use GDAL 2.2.0 in the Fiona binary wheels I upload to the Cheeseshop. I also changed the MACOSX_DEPLOYMENT_TARGET environment variable from 10.6 to 10.9 in order to get GDAL 2.2.0 to compile. This seems to be the cause of Shapely and Fiona wheel compatibility issues. Have I mentioned that I'm not completely competent at C++ on OS X? I'm not.

My co-worker Matt Perry provided a script that exposed this issue clearly and I bisected in Fiona and Shapely version space until I found the root of the problem.

Until I get new wheels on PyPI, here are the three coping strategies.

  1. Avoid the wheels entirely:
pip install -I --no-binary fiona,shapely fiona==1.7.10 shapely==1.6.2

This is what I do in my Dockerfiles at work. This strategy requires the GDAL and GEOS libraries and headers to be pre-installed on your system, and also Numpy and Cython.

  1. Downgrade Fiona, using wheels:
pip install -I fiona==1.7.6
  1. Downgrade Shapely, using wheels:
pip install -I shapely==1.6b4

The issue affects Rasterio, too. Rasterio version 1.0a9 wheels should be safe with any version of Shapely.

I'll have an announcement about new wheels soon.

Update (2017-10-31): the nightmare is over.

Trying Strava

I've been using Runkeeper for the past two years, but am going to give Strava a try while I'm not training for anything in particular. The big difference between the two are Strava's segments and leader board.

I've made my first route during a lunchtime run yesterday: https://www.strava.com/routes/11012256.

There's a segment at the start that 161 Strava users have run 435 times (since when, I can't tell): https://www.strava.com/segments/961980.

I ran this route and segment with no thought to the leader board. Would I have run harder if I was aware of it going in? Maybe. Will I try to move up the board next time? I think so. I'm going to try to have a little fun with it, balanced by some critical reading about gamification.