Skip to content

Instantly share code, notes, and snippets.

View erichiggins's full-sized avatar

Eric Higgins erichiggins

View GitHub Profile
@erichiggins
erichiggins / basic_scale_class.py
Created June 28, 2022 07:49
Boilerplate scale class for the Open Trickler. Fill out the sections labeled with TODOs.
class BasicScale:
"""Class for controlling a basic scale scale."""
# TODO(you): Update the default values, such as baudrate, to match your scale.
def __init__(self, memcache, port='/dev/ttyUSB0', baudrate=19200, timeout=0.1, _version=1, **kwargs):
"""Controller."""
self._memcache = memcache
self._serial = serial.Serial(port=port, baudrate=baudrate, timeout=timeout, **kwargs)
# Set default values, which should be overwritten quickly.
self.raw = b''
@erichiggins
erichiggins / ndb_json.py
Last active May 23, 2021 00:27
JSON serializer/deserializer adapted for use with Google App Engine's NDB Datastore API. This script can handle Model, Expando, PolyModel, Query, QueryIterator, Key, datetime, struct_time, and complex types.
#!/usr/bin/env python
"""
JSON encoder/decoder adapted for use with Google App Engine NDB.
Usage:
import ndb_json
# Serialize an ndb.Query into an array of JSON objects.
query = models.MyModel.query()
@erichiggins
erichiggins / datastore_fetch_all.py
Last active November 25, 2020 17:31
Efficiently page over a Query to fetch all entities from the Google App Engine Datastore.
#!/usr/bin/python
"""
Functions are provided for both the DB and NDB Datastore APIs.
References:
* https://cloud.google.com/appengine/docs/python/datastore/queries
* https://cloud.google.com/appengine/docs/python/ndb/queries
"""
def db_fetch_all(query, limit=100, cursor=None):
@erichiggins
erichiggins / bootstrap.py
Last active January 2, 2017 00:36
Adding Google App Engine SDK to Python virtualenv
#!/usr/bin/env python
"""
Setup a virtualenv with the Google App Engine SDK.
References:
http://virtualenv.readthedocs.org/en/latest/virtualenv.html#creating-your-own-bootstrap-scripts
http://mindtrove.info/virtualenv-bootstrapping/
"""
import hashlib
import os
@erichiggins
erichiggins / jsbin.bahijuve.css
Created March 16, 2014 18:19
Quick trajectory chart using D3.js. http://jsbin.com/bahijuve/
.line {
fill: none;
stroke: lightblue;
stroke-width: 1.5px;
stroke-linecap: butt;
shape-rendering: geometricPrecision ;
}
.axis--x text {
}
@erichiggins
erichiggins / search_models.py
Created April 29, 2014 19:26
GAE Search-augmented NDB Models: Keep a searchable index up-to-date with the latest information in your datastore Models.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Search-augmented NDB Models for Google App Engine.
Usage:
import search_models
# Define an index for the document type.
@erichiggins
erichiggins / zipimportify.py
Last active December 10, 2016 10:02
Converts a directory of Python packages installed by pip into importable zip files for use on Google App Engine.
#!/usr/bin/env python
"""
Convert a directory of pip-installed libraries into zip-imports for use on GAE.
Usage:
pip install -U <library_name>
pip freeze > requirements_dev.txt
pip install -U --egg --target <path_to_zips> -r requirements_dev.txt
python zipimportify.py <path_to_zips>

Keybase proof

I hereby claim:

  • I am erichiggins on github.
  • I am erichiggins (https://keybase.io/erichiggins) on keybase.
  • I have a public key ASDQ1plERE4G6ef8c_KV640t0DUHHeD6FJFO1DbYX9X8xwo

To claim this, I am signing this object:

@erichiggins
erichiggins / appstats_serializer.py
Last active December 25, 2015 10:18
Protobuf to Python dictionary serializer for Google App Engine AppStats module.I wanted to be able to send my AppStats profile data off to a logging service (like Loggly) so that I could monitor it over time. This module serializes the data so that it can be converted to JSON and sent off to a log service by a cron job.
#!/usr/bin/env python
"""
AppStats serializer module which converts App Engine profile data from Protocol Buffers into JSON.
Usage:
import appstats_serializer
# List all AppStats summaries:
appstats_dicts = appstats_serializer.appstats_to_dict(summaries_only=True)
@erichiggins
erichiggins / optroutes.mixin.js
Last active December 14, 2015 19:59
Backbone.Router mixin to bind optional route mappings. This would be useful for user-only or admin-only routes that would 404 otherwise.
/**
* Usage:
* var MyRouter = Backbone.Router.extend(_.extend({}, OptionalRouteMixin, {
* userRoutes: {
* '/profile': 'profile'
* },
* initialize: function(options) {
* this._bindOptRoutes(this.userRoutes);
* }
* }));