Skip to content

Instantly share code, notes, and snippets.

View thruflo's full-sized avatar

James Arthur thruflo

View GitHub Profile
thruflo /
Created December 9, 2011 15:07
Example `LocationMixin` class that can be used to provide geolocation to any `SQLModel` class.
max_radius_of_earth = 6500 * 1000 # metres
max_sqrt_distance = math.sqrt(max_radius_of_earth * 0.95)
min_sqrt_distance = math.sqrt(100)
class LocationMixin(object):
"""Provides ``self.latitude`` and ``self.longitude`` attributes and a
``self.update_location()`` method which updates ``self.location``,
which is stored as a geography type in latlng projection.
You can keep self.location uptodate automatically by binding to
#!/usr/bin/env python
# Copyright (C) 2004-2008 by
# Aric Hagberg <>
# Dan Schult <>
# Pieter Swart <>
# All rights reserved.
# BSD license.
# NetworkX:
__author__ = """Aric Hagberg ("""
thruflo / cluster-setup.sql
Created October 4, 2021 07:13 — forked from marcocitus/cluster-setup.sql
Basic geo-partitioning for Citus
-- set up a global cluster
select citus_set_coordinator_host('us-coordinator-hostname', 5432);
select citus_add_node('us-worker1-hostname', 5432);
select citus_add_node('us-worker2-hostname', 5432);
select citus_add_node('eu-coordinator-hostname', 5432);
select citus_add_node('eu-worker1-hostname', 5432);
select citus_add_node('eu-worker2-hostname', 5432);
-- make sure we can run distributed queries on EU coordinator
select start_metadata_sync_to_node('eu-coordinator-hostname', 5432);
thruflo /
Created November 28, 2011 22:59
Example using PostGIS Geography Type with GeoAlchemy.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import code
import logging
from datetime import datetime
from sqlalchemy import create_engine, event
from sqlalchemy import Column, Float, Integer, MetaData, UnicodeText

OVM Website Implementation Notes

Main Website

Plan is:

  • build out the current site
  • re-theme in line with design from Alice
# Key Bullets for Immediate OVM web
* about content
* top level IA
* events: hosted meetup/eventbrite listed on site
* contact / group channels
* think piece content: what & where syndicated
* wiki: we need to identify the "articles" / "spec" / "definitions"
thruflo /
Created May 24, 2013 09:33
Embed code for FabHub linkback.
def index_view(request):
"""Render a link to log the user in using Bouncer."""
# Generate the login URL, with the right client id and callback URL. You
# could also add a `state` parameter for CSRF protection.
settings = request.registry.settings
params = {
'client_id': settings.get('client_id'),
'redirect_uri': request.route_url('callback'),
'response_type': 'code'
2012-08-06T17:17:05+00:00 app[web.1]: Traceback (most recent call last):
2012-08-06T17:17:05+00:00 app[web.1]: File "/app/.heroku/venv/lib/python2.7/site-packages/gunicorn/workers/", line 39, in handle
2012-08-06T17:17:05+00:00 app[web.1]: self.handle_request(req, client, addr)
2012-08-06T17:17:05+00:00 app[web.1]: File "/app/.heroku/venv/lib/python2.7/site-packages/gunicorn/workers/", line 86, in handle_request
2012-08-06T17:17:05+00:00 app[web.1]: super(GeventWorker, self).handle_request(*args)
2012-08-06T17:17:05+00:00 app[web.1]: File "/app/.heroku/venv/lib/python2.7/site-packages/gunicorn/workers/", line 69, in handle_request
2012-08-06T17:17:05+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
dyno=web.1 queue=0 wait=0ms service=33ms status=500 bytes=135
2012-08-06T17:17:05+00:00 app[web.1]: File "/app/.heroku/src/pyramid/pyramid/", line 191, in __call__
2012-08-06T17:17:05+00:00 app[web.1]: request._process_response_callbacks
<!-- needs args: name, spec, method"body" -->
<%namespace name="${ name }" file="${ spec }" />
\${unique_name.${ method }()}