Skip to content

Instantly share code, notes, and snippets.


Martijn van Exel mvexel

View GitHub Profile
View gist:8852665
{ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {"prop0": "value0"}
{ "type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
mvexel / defaults.json
Created Feb 17, 2014
My JSBeautify settings
View defaults.json
"indent_size": 4,
"indent_char": " ",
"indent_level": 0,
"indent_with_tabs": false,
"preserve_newlines": true,
"max_preserve_newlines": 10,
"jslint_happy": true,
"brace_style": "collapse",
"keep_array_indentation": false,
mvexel / gist:9221083
Created Feb 26, 2014
geojson plugin build error
View gist:9221083
[echo] compiling sources for dist/traffic-geojson-plugin.jar ...
[javac] /Users/martijnv/src/traffic-sandbox/geojson-plugin/build.xml:33: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 17 source files to /Users/martijnv/src/traffic-sandbox/geojson-plugin/build
[javac] /Users/martijnv/src/traffic-sandbox/geojson-plugin/src/com/telenav/traffic/josm/plugins/geojson/ type javax.swing.JList does not take parameters
[javac] private final JList<GeoJsonFeature> list = new JList<GeoJsonFeature>();
[javac] ^
[javac] /Users/martijnv/src/traffic-sandbox/geojson-plugin/src/com/telenav/traffic/josm/plugins/geojson/ type javax.swing.JComboBox does not take parameters
[javac] private final JComboBox<TaskState> state = new JComboBox<TaskState>(TaskState.values());
[javac] ^
View deployment doc
# Deploying A MapRoulette Server
Deploying a MapRoulette instance is pretty straightforward. We have a Fabric script that takes care of almost everything for you.
If you just want to run MapRoulette locally for development or testing, this guide is not for you.
## What do you need? ##
You need a server to deploy MapRoulette on. This can be a local or remote machine, but it will need to meet these requirements:
View gist:11299564
[12:57:02] 127 $ osmconvert --out-statistics ~/Downloads/amsterdam.osm.pbf
timestamp min: 2007-03-25T18:36:55Z
timestamp max: 2014-04-08T23:02:08Z
lon min: 4.4650000
lon max: 5.3469997
lat min: 52.1630000
lat max: 52.6289997
nodes: 6907968
ways: 946951
relations: 8924
mvexel /
Last active Aug 29, 2015
what I do to a new Mac


  1. Move all icons out of the dock
  2. Add Google account to iMessage
  3. Disable natural scrolling
  4. Set key repeat to fastest, delay to shortest.


  • Software update (Apple -> Software Update...)
def get_current_state_from_server():
# I dislike PyYAML, that is why
import requests
from dateutil.parser import parse
current_state_file_url =\
state_file = requests.get(current_state_file_url).text
current_state = {}
for line in state_file.split('\n'):
elems = line.split(':')
View gist:36811917eb9f06916544
count | status
215 | alreadyfixed
225 | editing
658 | assigned
2006 | falsepositive
1247 | fixed
649 | validated
def get_changeset_path_for(utctime):
import os
parts = [""]
from math import floor
minutes = int(floor((utctime - config.OSM_DAY_ZERO).total_seconds() / 60))
rem = minutes
while rem > 0:
parts.append(str(rem % 1000).zfill(3))
rem = (rem - rem % 1000) / 1000
return os.path.join(*parts)

Challenge Administration API

This API is used by Challenge providers to update their challenges and their task queue. On, this API is accessible from localhost only, so you need an SSH tunnel into the MapRoulette server to access it. Contact the authors at to learn more.

Bulk List Task Statuses

GET /api/admin/challenge/<slug>/tasks

Gets the current status for all Tasks in the Challenge identified by slug