30 minutes

It hasn’t been that long since we moved to this town, this new country. You are from here, know things I do not, move about this uncharted space with its unfamiliar and unwritten rule-set, and I follow you, mimic you, create my map. I speak the language—people comment on my accent, where are you from, Denmark—but I don’t speak the rest of it. When we arrived, the sun screamed at me, louder than I knew possible. Then fall, winter, six months and now there’s work, phone numbers, checks, routine. A Sunday is almost just a Sunday again.

There’s an invisible list we need to be on. You talk to the list person, and make it so. The list person says, thirty minutes maybe more maybe less. Smiles. You tell me that’s how long we wait. Confused, infinitesimally annoyed but I swallow it and smile, this is where I live now, and that is how people do. This is what I will do, we will wait, thirty minutes, starting now.

How are other people spending their minutes. There are a few benches, made for children, but with adults on them. Big ones, too. Others linger outdoors. The sun doesn’t scream, sings. It must be minus five,wait, twenty-eight degrees—this is where I live now. Some people even sit in their cars, with their engines running, heater blowing, windows fogging up, how wasteful, is that even allowed. They’re unbothered, looking bored, a little annoyed maybe even. It’s hard to read faces, moods.

Most people counting down their minutes are holding mugs, probably coffee. I want one too, look for a coffee person, not seeing one. I ask you. You look around, not for a person, and point to a counter deeper into the restaurant. There’s a stack of mugs and a big hot-drink-dispenser, the kind you would see at a amateur sports event, but super-sized. So many things are large here, cars, stores, and now coffee dispensers. I look for a person to go with it all, but people are helping themselves without paying. I have questions, but decide to try and blend in, boldly walk up and mimic the person in front of me, grab mug, place mug, pull pull pull, grab full mug, walk away. Boom!

The coffee is weak and awful, nobody seems bothered by it. I ask you. You agree but shrug. Didn’t expect it to be good. Now I know. This is where I live now.

Twenty-three minutes. The street is quiet, Sundays are that way, you say, people in church. This restaurant, with its cloud of families and couples and friends counting down their minutes, a beehive in a dead tree. Across the way, a deserted parking lot and closed stores: yarn, massages, tax advice. Why here. People drive everywhere anyway, you say, it doesn’t really matter. From further afield, just sounds. The hum of a freeway, not far, never far. Horns from trains that never sleep. The sounds of people and things moving about, needing to be where they are not.

“Alice, party of two!” A young couple looks up from their phones, briefly at each other. As they go in a family (large, counting 9, three generations at least) emerges. Half carry Styrofoam boxes, taking care to hold them horizontal. Leftovers, I offer. Yes. Sixteen minutes.

Perusing the restaurant’s menu seems popular, useful too, the restaurant is in a hurry, the servers smiling but impatient, jogging between tables and kitchen. So you better know what you want when they come. Through the fogged up glass I watch, learn, prepare. A family is ordering, many children. Dad and boys wearing shorts and slippers, why, it’s winter, freezing. The youngest, six or seven, rattles off his order, confidently. I can’t hear. Server and boy engage in rapid-fire clarifying dialogue. Scary. Where are those menus.

You read my mind, or saw me looking at the machine gun boy-server dialog, bit of both, and there you are with menus. Sticky and smudged. So many options and sub-options and alternatives. Specials. Only after 11am. For kids. From the griddle, what is a griddle. What are home fries. I ask many questions, your patience is calming. Breakfast means many different things here, all unfamiliar. Bacon, sausage, eggs, over easy, medium, sunny side up, pancakes, full stack, half stack, wheat, sourdough, sides. What are you having. Pancakes. What is the most ‘murican breakfast imaginable.

“Jim, party of four!” A family (smaller) stirs, shuffles in the direction of the yelling. More people emerge, more Styrofoam boxes. Perhaps they were not so hungry after all. They pile into a big car parked where it shouldn’t be, next door.

I’ll be right back. Twelve minutes.

Trying to peel the layers of history off this corner, 2100, streets with numbers not names. It was once a gas station or a garage, then a coffee shop, shuttered now, a faded, broken sign, baked goods, milk shakes, drive thru. How hard is it to get out of your car for a cup of coffee. Beyond, ‘chinese cuisine’ once, now roof tiles peeling off, not a soul. Just one more place to park more cars, negative space.

This is where I live now.

It’s cold.

I find my way back to warmth, you. Eight minutes.

From inside the restaurant, someone calls your name. You grab my arm. We go in. Early, unprepared, but ready.

OpenStreetMap US 2020 Board Election — My Answers to Community Questions

I am running for the OpenStreetMap US Board this year. I previously occupied a seat on this board from 2011 to 2016, then stepped down to focus on the OpenStreetMap Foundation board to which I had been elected. I served on the OSMF board for three years, but decided to step down in late 2018. Since then, I have stayed involved with OpenStreetMap US as a local organizer of OpenStreetMap Salt Lake City, and as the chair of the State of the Map Program Committee.

Last year, I changed jobs, from a very OSM-centric role at Telenav to a really interesting but not OSM-centric new role at TomTom. This change led me to reconsider how I want to be involved with OSM in the future. My candidacy for the OSM US board should give you an idea of what the outcome is.

The community had the opportunity to ask questions of the candidates until January 30. A handful of questions were submitted—some by me, aimed specifically at current board members seeking re-election—and with the elections starting today it’s high time I provided some answers! (I left out my own questions, since I am not running for re-election.)

Do you think OSM-US should pursue becoming a Local Chapter officially recognized by the OpenStreetMap Foundation (OSMF)?

Short answer: yes.

Longer answer: I think OSM US has always been operated at the forefront of innovation in OSM—organizing increasingly ambitious annual conferences, encouraging nourishing and constructive community dialog with modern platforms, moderation, and a code of conduct. The most recent example OSM US set was hiring an Executive Director. We can and should disseminate these innovations to peer Local Chapters, and learn from them as well. When on the OSMF board, I worked on creating a platform for Local Chapters to have these interactions, and actively pursued signing on more Local Chapters (Germany, Italy, Belgium, Ireland). We also need to keep working on building a formal and closer relationship with the OSMF. Becoming a Local Chapter is not a silver bullet, but will help with these things, and apart from that, as one of the more prominent local communities we should be setting an example.

Do you support the proposed amendment to the OpenStreetMap-US Bylaws?

There should be limits to the amount of consecutive terms a board member can serve, and a term should be longer than one year. Two years is a good length, it gives the board member time to really follow through on their stated objectives. Board members should be able to stand for re-election once. After that, a cooling-off period of one term would be in order. As far as I can tell, this mostly aligns with the amendment put forward by the current Board.

If elected, would you be willing to serve as Treasurer?

It’s not my favorite role but I’d consider it. If I remember correctly, a lot of the day-to-day work to do with organization finances is done by an external accountant already. I am in favor of outsourcing as much non-strategic work as possible.

In the last year, how active have you been in the OSM community? What efforts have you made to support and/or grow OpenStreetMap in the US?

As mentioned in the intro, I’ve been chair of the Program Committee for SOTM US, and part of the overall conference organization team. I have continued to run OSM Salt Lake City, hosting two meetings a month on average. While at Telenav, I ran the OpenStreetMap camera lending program for the OSM US community. I did a keynote on OpenStreetMap on GIS day. I tirelessly promote MapRoulette and encourage mappers to create and solve tasks—about half of MapRoulette website traffic originates in the US. I am active on Slack.

The OSM US website could use some refreshing, show our mission and goals and list our sponsors. Even incorporate a vector tile slippy map. Who wants to step up with a plan?

While not in my list of priorities, I think a web site refresh would be nice. What *is* in my list of priorities is forming special interest groups, and one for communications, social media or even just the web site makes a lot of sense to me. While the board could provide valuable input, I’d prefer to empower the SIG with the budget and freedom to come up with a plan to present to the board, and execute it. They could decide to use the budget in whatever way they see fit, for example to hire someone to design / develop the site.

What is your “elevator pitch” (short, quick description) when someone asks: “What is Open Street Map? Why would I use it while Google/Bing/Apple Maps exists?”

OpenStreetMap is the free map of the world created by a global community of over a million people like you and me. You can use it for anything you want, the map is easy to edit, and OpenStreetMap is the only map that puts you in control. OpenStreetMap is used by some of the largest tech companies in the world, such as Apple, Microsoft, Facebook, Snapchat and Mapbox.

My Position Statement for the 2020 OpenStreetMap US Chapter Board Elections

I am running for a seat on the OSM US board and I hope you will consider voting for me!

OSM US is a large, influential and forward-thinking community. Now that we have Maggie Cawley as Executive Director, we are uniquely positioned and qualified to lead with ideas and actions to keep moving OSM forward in the U.S. and globally.  

Here is my list of priorities for OSM US, in order:

  1. Interest Groups. OSM US should formalize and actively recruit for Interest Groups. I envisage an active mutual advisory relation with the board. Potential interests: Government Relations, Imports, Infrastructure, Local Groups, Diversity & Inclusion. We should actively recruit people from outside the existing OSM community to join.
  2. Community Grants. Roll out a program to extend small grants ($2000 or less) to individuals and groups with actionable plans to grow OSM in the U.S.: outreach to schools, hosting events, writing / printing promotional or educational materials, to just give some examples. This would complement the existing travel grants program. An initial round would be time-bound and capped at $20k, after which we’d evaluate and iterate on the idea.
  3. Corporate Relations—I am 100% with Jubal on this topic.

My OSM user profile has more about my experience, qualifications and affiliations.

You can read all about the upcoming OSM US board elections here.

OpenStreetMap How-To: Clean Up After Tiger

I’ve been working on a new version of the TIGER Battlegrid, but haven’t had a lot of time to make progress lately, so in the mean time I’ve been thinking about quick ways to help mappers clean up after TIGER. I have a couple of ideas. One involves MapRoulette that will require a little bit of time to execute. The other one is for JOSM users; just follow the steps below!

First, open up the Download dialog in JOSM, and switch to the Overpass tab. This lets you selectively download data into JOSM based on an Overpass query. We will use this to only download residential ways that have not been edited since 2009, and have no name.

Plug in the following query:

  (if(timestamp() < "2010-01-01T00:00:00Z"))
out meta;

Note the (area:3600036074);. This is Overpass lingo for: ‘limit my query to the area defined by relation 36074’. This relation defines Erie County, NY. You probably want to retrieve data for a different county. You can find the relation ID for any administrative boundary by searching for the area by name on the OSM web site.

If you would rather draw a bounding box and download the stale road data for that area, you need to adapt the query as follows:

  (if(timestamp() < "2010-01-01T00:00:00Z"));
out meta;

Execute the download request and you will end up with an area that is likely littered with little road fragments.

All of these need a look, so don’t bite off more than you can chew.

We will use the genius Todo List JOSM plugin to organize the work ahead of us. If you don’t have it, install it first. Then, select all the ways using JOSM’s Find dialog. Use the syntax type:way to select all the ways but not the nodes.

With all the ways selected, go to the Todo List plugin and click ‘Add’ to add all the ways to your Todo list.

Now you’re ready to start cleaning up. Double-Click on the first item in the list to zoom to it. There’s a number of things to check for each way:

  • Is the way actually a residential class road? If it’s not in a built-up area and / or there are no residential structures on the road, it is probably unclassified. If it’s unpaved and doesn’t look like a road that is usable by a normal 2WD passenger car, it’s likely a track. In some areas, a lot of the ways are actually driveways, highway=service;service=driveway. Be sure to familiarize yourself with the definitions of the various road classes, and ask around if you are unsure.
  • If the road does in fact meet the criteria for residential, it needs a name. Activate the TIGER Roads 2019 layer or another available source to find the name, and add it.
  • If the way has tiger: tags, you can opt to remove them altogether, or at least change tiger:reviewed to yes.
  • If the way is poorly aligned to the best available aerial imagery, improve the alignment.
Working on a stale residential road. This is in fact a service=driveway.

It may be helpful to download additional OSM data around the way you are looking at, especially if you are moving nodes around to improve alignment. The way is likely connected to other ways that were not included in our limited Overpass query!

When you’re satisfied, upload the changes. Optionally use the hashtag #tigercleanup. Then, in the Todo List plugin, click on ‘Mark’ to mark the item as done. Todo List will remove the item from your list and automatically pan the map to highlight the next way!

Photography Full Circle

When I first started taking photos, the results would be unpredictable and, on top of that, immutable after releasing the shutter. The entire process after that capture moment being a black box: take the film out of the camera, bring it to the camera store, where they develop the film and make prints, exposing them based on some average of the negatives’ exposure. Nevertheless, I was excited to document and capture my world in that way. I started to experiment with the variables I could control: different types of color and B/W film, depth of field, exposure, and different cameras when I could get a hold of them.

Early Railway Shots Series - Amsterdam CS, herfst 1988
A photo I took in 1988 at age 15, Amsterdam Central Station, Fall 1988.

Negatives made way to slides, which make the result in a sense even more immutable, because you generally don’t have a print step where the result gets interpreted for color balance and exposure. Moreover, slide film is less forgiving about over- and underexposure. I liked this, because it forced me to think even more about my shots, and I learned a lot.

Fuji Velvia Slide film, winter 1995

At the same time I got interested in developing my own film and making prints myself. I only ever got to do B/W film and prints, but for the first time I got to control the entire process. I experimented with film development time, over- and underexposing parts of the negative (analog HDR?), different papers, chemicals. Again I learnt a lot, about the range of results you could get out of a negative.

kruisberg II
Pro-X film, Winter 1997

This turned out to be useful knowledge when digital photography came around. Early digital cameras produced poor results and post-processing became almost a necessity: sharpening, correcting color balance, increasing contrast. Even the best techniques and software couldn’t make up for the limited dynamic range and resolution, but results were near-immediate so I could iterate quickly and learn to adapt to the limitations of early digital photography.

Digital cameras improved rapidly. Within a matter of years, you could get a digital SLR that produced similar or better results than a traditional SLR. Post-processing remained an important part of the digital photography workflow, to make up for the loss of the creativity previously available with film types and darkroom techniques.

Many photographers, myself included, had a hard time resisting the urge to over-process. This led to sometimes comical results.

Taken with a Nikon D70s. October 2006.

If you have an arsenal of lenses ranging from 14mm to 400mm, a camera with 40MP or more CCD that can capture as much or more dynamic range as a slide film, and Photoshop / Lightroom with their extensive post-processing tools and presets, the actual moment of taking the photo becomes less and less important. That moment where you decide that the light, the framing, the time is exactly right, to me is still at the core of photography. And I missed it. I started feeling more and more removed from what photography was to me!

Apparently I am not alone. There is a definite retro trend going on in digital photography. At first it was mainly the looks of the cameras coming out, with old school aperture / shutter controls, actual viewfinders, and a faux-leather aesthetic.

New camera
The Fujifilm X-E1 I bought in 2012

Soon though, we started seeing digital cameras that started to impose some of the limitations of the old rangefinder cameras like the Leica M and Contax G: A fixed, high quality 28 or 35mm equivalent lens and familiar controls, paired with a fantastic CCD. The Fujifilm X100 series is an excellent mid-range example of this new wave of digital cameras, and I purchased one a couple of years ago. I have to say I have never enjoyed digital photography more—and post-processed less. Almost all photos I post online now are straight from the camera. I don’t capture Raw files at all anymore. I do enjoy and use the film simulations built in to the camera (Velvia, Astia, Acros / X-Pro, all film types I used to use). Even though it alters the outcome, it is not post-processing—the decision to use a film simulation importantly is made before releasing the shutter.

Las Vegas
Fuji X100F, Velvia film simulation, December 2019

So I have come full circle in many ways, working with a simple camera, learning how to use and trust it, learning to predict the result of my decisions—I don’t review photos while I am shooting at all anymore. Having to take time to move around to find better framing for my subject. Using the results straight out of the camera, and discarding more as well.

Photography has never been this rewarding and fun!

If you’re interested in seeing some of my photography throughout the years, have a look at my Flickr stream.

Las Vegas & Hoover Dam

I took a quick trip to Las Vegas and Hoover Dam. Las Vegas is interesting to me, not so much because of the Strip and the gambling and the shows, but because of the urban geography and stark land use contrasts.

Sprawl of the Las Vegas metro area 1972-2010. Source: NASA. More videos are available.

A few photos I took southeast of downtown:

Las Vegas
Las Vegas
Las Vegas

And some around Hoover Dam:

Hoover Dam Power Infrastructure
Signage at the old Hoover Dam Visitor's Center
Hoover Dam

The full album is on Flickr

Technical Deep Dive: Creating the MapRoulette Tesla Parking Lot Challenge

In a previous post, I talked about a new MapRoulette challenge to help identify surface parking lots that need more detailed mapping of roads and aisles within the lot.

In this post, I want to dive a little deeper into how a Challenge like that is made.

Challenges in MapRoulette

MapRoulette is the micro-tasking platform for OpenStreetMap. On it, mappers can select any one of millions of Tasks and make a small but meaningful contribution to improving the quality of OSM. Tasks are grouped in Challenges that cover a specific topic, like updating business phone numbers, aligning roads, etcetera.

MapRoulette is designed to make creating Challenges as easy as possible. A graphical interface takes you through the creation process step by step. A key part of any Challenge are the Task locations. When you create a Challenge, you can upload these as a GeoJSON file.

This post will focus on how I filtered and queried existing OSM data to get the locations of parking lots that lack the road detail.

Before I start, I’ll mention that there are probably many other ways to get to the result I am after. The steps I describe here are based on my experience and the tools I know best. I would love to hear how you would accomplish a similar result using other tools, like QGIS.

Step 1. Get The Data

OpenStreetMap data is available from many places, including planet.osm.org, Metro Extracts, BBBike and Geofabrik. I want to limit the Challenge to California, because Tesla sells the most cars there, and to limit the number of Tasks. Geofabrik offers U.S. state level extracts, so I download the osm.pbf file from there. Thanks for providing this service, Geofabrik!

Step 2. Filter The Data

The downloaded file is large, and I only need parking lots. I find osmium to be the best tool to quickly filter OSM data files.

The question I want to answer is: “Where are surface parking lot areas in OSM data that are not covered by parking aisle ways?” To answer that question I need to filter those two feature types, parking lot areas and parking aisle ways, from the data:

osmium tags-filter \
  -o cali-parking.osm.pbf \
  --overwrite \
  california-latest.osm.pbf \
  w/service=parking_aisle a/amenity=parking

If you’re interested in learning about the osmium tag filter syntax used, have a look at the documentation.

Step 3. Load into PostGIS

The best way I know to perform a spatial analysis to answer the question “Which parking lots do not have parking aisles running through them yet?” is PostGIS. QGIS would probably be another good option. If you know how, let me know!

We use osmosis to load the filtered OSM data. After creating the empty database, this is as easy as

osmosis --rb cali-parking.osm.pbf --wp database=osm

Depending on your PostgreSQL setup, you may need to provide credentials.

Step 3. The Empty Lots Query

We now have the data where we want it and are ready for the spatial query:

create table lots as (
  select * from ways where 
    and st_isclosed(linestring));
alter table lots add column geom geometry;
update lots set geom = ST_MakePolygon(linestring);
create table aisles as (
  select * from ways where 
create index idx_aisles on aisles using gist(linestring);
create index idx_lots on lots using gist(geom);

create table emptylots as 
  select id, geom from lots where 
  id not in (
    select distinct l.id from 
    lots l join aisles a on 
    st_intersects(l.geom, a.linestring)) 
  and st_area(geom) > 0.000001;

Step 4. Get The GeoJSON

MapRoulette expects a GeoJSON file defining the Task geometries. We are going to rely on the vastly improved ST_AsGeoJSON function available in PostGIS 3.0.0 and later. If you’re stuck with PostGIS 2.x, you will need to do some creative querying that is beyond the scope of this guide. You can also use QGIS to load the emptylots table and then export it to GeoJSON.

\copy (SELECT json_build_object('type', 'FeatureCollection', 'features', json_agg(ST_AsGeoJSON(l.*)::json)) FROM (SELECT ST_ForcePolygonCW(geom) geom, id FROM emptylots) l) TO '/home/mvexel/osm/emptylots.geojson';

Even though we used the ST_ForcePolygonCW function to force the correct orientation for the polygons (the “right-hand-rule”), MapRoulette is not happy with the GeoJSON in this form, so we need to use the geojson-rewind tool to fix it.

To install geojson-rewind:

npm install -g geojson-rewind

Then simply run it on the GeoJSON file we extracted from PostGIS.

geojson-rewind ~/Desktop/emptylots.geojson > ~/Desktop/emptylots-fixed.geojson

Step 5. Create The MapRoulette Challenge

Now we have all the ingredients to create the MapRoulette Challenge. The MapRoulette documentation has a link to a step-by-step guide. The guide’s screenshots don’t reflect the latest MapRoulette design, but you should be able to follow along and create the Challenge using it.

Have fun and happy mapping!