2017

So long, 2017

What a crazy, confounding, embarassing, frustrating year. To everybody working for peace, justice, and a better world: thank you from the bottom of my heart. To everybody punching down, preying on the weak, and stepping on others for a bigger piece of the pie: fuck you. Those of us on the right side of this struggle are coming back in 2018.

I've spent New Year's Eve doing yoga, shoveling snow, making pancakes, organizing photos, and planning my Spring 2018 running campaign. Next I'm going to eat soufflé, drink champagne, and watch Star Trek with my family. All of these are activities I want to continue doing in the New Year.

Thanks for reading my blog, people. I wish you all the best in 2018.

Tagging in Montpellier

https://c1.staticflickr.com/5/4587/39268610421_ed6124cc2c_b.jpg

Jonnystyle cherub in the Verdanson canal next to Avenue Saint-Charles.

https://c2.staticflickr.com/2/1269/4671632416_1e6578a09a_b.jpg

Another Jonnystyle classic overlooking Avenue d'Assas near Les Arceaux.

https://c1.staticflickr.com/5/4679/39321535141_cfc399bdf0_c.jpg

On Avenue de Castelnau. I walked past this one often but never got up the gumption to climb the wall for a better view.

https://c1.staticflickr.com/5/4643/24458082917_15d8cf7c32_b.jpg

This is the scariest alley in Boutonnet.

December 26, 2016: Sète

On the day after Christmas in 2016, I went with my family to see the Port de Sète. Here are photos of our kids at the helm of the tour boat.

https://c1.staticflickr.com/5/4737/25451684558_da11a5fcdd_b.jpg
https://c1.staticflickr.com/5/4686/27543338829_bd7cdf3773_b.jpg

I was surprised and disappointed by the high level of support for the National Front in Sète during the 2017 election: 28% in the first round and 44% in the second. Both of these numbers are higher than the average for the Hérault Department and twice as high as Montpellier's FN vote. 26% of Sète's voters abstained in the second round, and I'm guessing that most of them had voted for Jean-Luc Mélenchon, the anticapitalist candidate, in the first round.

White Christmas

We got snow a few days before Christmas, not a lot, but thanks to the cold it stuck around and we've picked up another inch or so since yesterday.

https://c1.staticflickr.com/5/4685/38585242394_33988cb2e9_b.jpg

Front Range mountains have received up to 18" of snow since Sunday, which is good news. Snow remains thin: Eldora Mountain has 20" on the ground at its summit, Cameron Pass 30. This week I need to take our skis in to a shop for tuning and acquire some boots for the fast-growing feet in our family so we can ski in January.

We spent Christmas morning at home unwrapping gifts, went for a walk around the neighborhood, and then spent the evening feasting with friends. The parents of our hosts were in town, and treated us to some gorgeous and sublime Persian rish dishes. I made a reverse-seared prime rib roast that was excellent and we drank a few bottles of wine which we brought back from France: a 2013 Castelmaure Cuvée No. 3 and the same cooperative's Grande Cuvée (its number 2 wine). We were in the neighborhood of Embres-et-Castelmaure quite often last year. There's a nice write-up aout its wines on the Taste Languedoc blog. Being able to share an excellent meal with family and friends is something that I appreciate more each year. Good health and good company are priceless and worth celebrating.

Rasterio, GDAL, GeoTIFF, and REST on the Mapbox blog

Last Friday, I finished a post for the Mapbox blog: https://blog.mapbox.com/build-for-the-cloud-with-rasterio-3254d5d60289. It was a pleasure to write about a new industry best practice, give some props, and toot my favorite open source project's horn a bit. I'm pleased that it's been well received.

https://c1.staticflickr.com/1/149/421186578_fbb062368e_o.jpg

Roy T. Fielding Has a Posse, by Paul Downey. https://www.flickr.com/photos/psd/421186578/

I had fun coming up with the thesis that the cloud-optimized GeoTIFF format developed by Even Rouault (at https://trac.osgeo.org/gdal/wiki/CloudOptimizedGeoTIFF) and evangelized on a new web site by Chris Holmes (http://www.cogeo.org/) is not just an image format, but an internet application media type and that GDAL's curl-based virtual file system is practically a web browser. I especially enjoyed pointing out that I think that systems using cloud-optimized GeoTIFFs can be much more in the classic REST style than most of the "REST APIs" we use today. In most geospatial REST APIs, the data format is of minor importance, relegated to a f=format parameter in a query string. In the architecture emerging around GDAL and cloud-optimized GeoTIFFs, the GeoTIFF representation of a raster plays a major role in directing the GDAL browser. It's not just one of many roughly equivalent flavors of imagery.

On Twitter today, I floated the idea of registering a media type for the cloud-optimized GeoTIFF format that would distinguish it from ordinary TIFFs. It could be interesting to collaborate on this with other folks in the business.

Finally, I don't know when Charlie Loyd discovered an old man yelling at the cloud in Landsat imagery near Darwin, Australia, or why he saved it until my blog post, but I'm grateful he did.

https://c1.staticflickr.com/5/4599/39151424991_7463ee8514_b.jpg

Fiona and shapefile encoding

It's a common problem in GIS to have a shapefile that was encoded using a character set other than the standard iso-8859-1 but lacks any record of what that character set was. Some shapefiles lie about their encodings. You could make an educated guess at the character set. Your decoding may fail. Worse, it may not fail, but contain garbage when printed out. The Japanese term for this is Mojibake. Ned Batchelder introduced me to the term in his Pragmatic Unicode presentation. It's easy to demonstrate in Python.

>>> print(u'dérangé'.encode('utf-8').decode('iso-8859-1'))
dérangé

Fiona's open() function has an encoding keyword argument that is intended to let developers override the missing or erronenous information for a shapefile. There's been a regression in Fiona recently and users began to report unexpected mojibake symptoms. They were using the encoding argument property but seeing garbage displayed. This regression has been fixed in Fiona 1.7.11. Upgrade as soon as you can.

For a time I was in disbelief that users were reporting a real problem. I chalked this up to dirty data, compilation of GDAL, DLL Hell, anything but a regression. In the end, I think what got me unstuck was facing this note I recently added to Fiona's issue template:

You think you've found something? We believe you.

Something I added to make the project more friendly to first-time contributors ended up being a note to myself.

Lakes of Ounianga

While working on a blog post at work last week I became fascinated with Ounianga Kébir and Ounianga Sérir, the Lakes of Ounianga. Elimé, the largest of the 10 lakes in Ounianga Sérir (below), is 4.2 square kilometers and is filled from an aquifer with water that fell on the Sahara region 5000-9000 years ago. Today the annually averaged precipitation in the region is less than 2 mm.

https://c1.staticflickr.com/5/4637/39080484171_9d1d72a1ef_b.jpg

Landsat RGB (true color), Ounianga Sérir, Chad. Landsat imagery is courtesy of NASA Goddard Space Flight Center and U.S. Geological Survey.

At this scale the surface of Northern Chad appears streaked, as though it has been washed with a brush. I suspect that it might stand out even more in images made with different Landsat band combinations.

I had never looked before and was pleasantly surprised to find that Mapbox has pretty good coverage in the area. The imagery is from DigitalGlobe.

Lake Yoan here is 30 kilometers west of Elimé.

Smacked cucumbers in garlic dressing

Fuschia Dunlop's recipe for smacked cucumbers in garlicky sauce, from "Every Grain of Rice", has changed the way my kids think about cucumbers. My youngest asked me to make this dish for her birthday dinner tonight, and I was more than happy to do it. It's delicious and fun and easy to make. I'm going to show you how.

The first step is to assemble the sauce. Or dressing. Call it what you like. I've been using one large garlic clove and 1/2 tsp of sugar per cucumber. To this I add a teaspoon of crushed chilies fried in oil, soy sauce, and a generous splash of vinegar or some other tangy liquid. My kids are sensitive to Sichuan pepper, so I crank the grinder just a tiny bit.

https://c1.staticflickr.com/5/4523/38160468635_57735ec1a4_b.jpg

Today I used some bottled Ponzu dressing, but I've also used rice or sherry vinegar (or both). This chili oil has peanuts, which I'm careful to omit because my kids do not love peanuts. Whatever: more peanuts for me!

https://c1.staticflickr.com/5/4636/39010640612_3d9f4a70b3_b.jpg

After putting the dressing aside, it is time to smack the cucumbers. Contused cucumis sativus may be a culinary cliché, but this technique is too good to dismiss. It turns ordinary, hard, crunchy cucumber (not a bad thing) into succulent, but not gross and slimy, mildly bitter melon. There's nothing to it: you lay unpeeled thin-skinned cucumbers flat on a cutting board and swat them with the flat of your chef's knife or cleaver just until they crack.

https://c1.staticflickr.com/5/4601/39010646942_78482a5bab_b.jpg

I scraped out the one seedy cucumber, quartered them both lengthwise, and then chopped them diagonally. There's no point in trying to slice them into matching 1/8" thick pieces, smacked cucumbers don't give a damn about rules.

https://c1.staticflickr.com/5/4644/39010652612_73af562090_b.jpg

Toss the chopped cucumber with salt and let it rest for 20 minutes. The goal is to get them to shed water so the sauce doesn't get diluted. These two cukes gave up about 1/3 cup (80 ml) of liquid tonight.

https://c1.staticflickr.com/5/4575/39010657672_e40b3e3fcc_b.jpg

When the time's up and you're ready to eat, drain the cucumbers, transfer to the bowl of dressing, toss well, and serve along with other Sichuan dishes or on top of buckwheat noodles.

https://c1.staticflickr.com/5/4569/39010661622_9bdd87042d_b.jpg