Skip to content

Instantly share code, notes, and snippets.

Avatar

James Arthur thruflo

View GitHub Profile
@thruflo
thruflo / LocationMixin.py
Created Dec 9, 2011
Example `LocationMixin` class that can be used to provide geolocation to any `SQLModel` class.
View LocationMixin.py
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
View gist:243717
#!/usr/bin/env python
# Copyright (C) 2004-2008 by
# Aric Hagberg <hagberg@lanl.gov>
# Dan Schult <dschult@colgate.edu>
# Pieter Swart <swart@lanl.gov>
# All rights reserved.
# BSD license.
# NetworkX:http://networkx.lanl.gov/.
__author__ = """Aric Hagberg (hagberg@lanl.gov)"""
@thruflo
thruflo / cluster-setup.sql
Created Oct 4, 2021 — forked from marcocitus/cluster-setup.sql
Basic geo-partitioning for Citus
View cluster-setup.sql
-- 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
thruflo / test_geography.py
Created Nov 28, 2011
Example using PostGIS Geography Type with GeoAlchemy.
View test_geography.py
#!/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
View OVM Impl Note.md

OVM Website Implementation Notes

Main Website

Plan is:

  • build out the current wpengine.com site
  • re-theme in line with design from Alice
View gist:5910016
# 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
thruflo / fabhub_link.md
Created May 24, 2013
Embed code for FabHub linkback.
View fabhub_link.md
View pyramid_demo_excerpt.py
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'
View gist:3278155
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/async.py", 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/ggevent.py", 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/async.py", 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/router.py", line 191, in __call__
2012-08-06T17:17:05+00:00 app[web.1]: request._process_response_callbacks
View partial.cut
<!-- needs args: name, spec, method"body" -->
<%namespace name="${ name }" file="${ spec }" />
\${unique_name.${ method }()}