Skip to content

Instantly share code, notes, and snippets.

I may be slow to respond.

David Aurelio davidaurelio

I may be slow to respond.
  • Munich, Germany
Block or report user

Report or block davidaurelio

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View voidbot.js
Copyright 2014 David Aurelio <>
Full source at
(function() {
'use strict';
var GIVE_UP = 0;
var NORTH = 1, EAST = 2, SOUTH = 3, WEST = 4;
davidaurelio /
Created Dec 13, 2014
Versioned slug model
from django.contrib import admin
from .models import MainThing, MainThingSlug
class SlugInline(admin.StackedInline):
model = MainThingSlug
fields = ('slug',)
can_delete = False
davidaurelio / container.js
Created Mar 4, 2015
React: custom validator for type of children
View container.js
const {forEach} = React.Children;
class Child extends React.Component { /**/ }
class Container extends React.Component { /**/ }
Container.propTypes = {
children: function(props, propName, componentName) {
forEach(props[propName], (element) => {
const {type} = element;
if (type !== Child) {
#!/usr/bin/env python
Fixes file names for downloads from delivers downloaded files with file names in e-mail header format. The
fix_filename function from this module can decode such file names.
When this module is executed as main program, all file names passed as program
arguments are renamed properly:
davidaurelio / hastouch.html
Created Sep 6, 2011
Checking for touch support
View hastouch.html
<!doctype html>
<title>has touch?</title>
<h1>Has this device touch? </h1>
var isTouch = (function(){
var event = document.createEvent("TouchEvent"); // Should throw an error if not supported
return !!event.initTouchEvent; // Check for existance of initialization method
return false;
View Usage
var a = new Angle().radians(Math.PI * 3 / 4),
b = new Angle().degrees(135);
var c = new Angle(a + b);
a.add(new Angle().degrees(30));
davidaurelio / point.js
Created Jul 18, 2012
A toString()’able point that allows addition
View point.js
function Point(x, y) {
if (arguments.length === 1 && typeof x === 'string') {
return x.slice(1, -1)
.map(function(tuple) {
return tuple.split(',', 2).map(parseFloat)
.reduce(function(point, coords) {
point.x += coords[0];
point.y += coords[1];
davidaurelio / point.js
Created Jul 18, 2012
A Point class that supports addition and subtraction of instances. Precision is 16bit fixed point per coordinate.
View point.js
A point constructor that creates objects supporting addition and subtraction.
The "trick" is to use 32bit integers and stuff two fixed 16bit fixed point
numbers into them that represent the coordinates of the point.
This approach has problems with overflow. E.g. when adding two points (0, 2)
and (0, -2), the addition will cause the y values to overflow into the 17th
bit, which is part of the x-value. When subtracting two points, e.g.
(.00390625, 0) - (0, -128)
davidaurelio / naive-super.js
Created Sep 7, 2012
Naive implementation of super in JS
View naive-super.js
Object.defineProperty(Object.prototype, 'super', {
get: function() { return Object.getPrototypeOf(this); }
function Foo() {}
Foo.prototype.reset = function() {
this.fooProp = 'reset';
davidaurelio / super-proxy.js
Created Sep 7, 2012
`super` using `Proxy.create`
View super-proxy.js
Object.defineProperty(Object.prototype, 'super', {
value: function(Constructor) {
var context = this;
var superProto = Object.getPrototypeOf(Constructor.prototype);
return Proxy.create({
get: function(_, name) {
return function() {
return superProto[name].apply(context, arguments);
You can’t perform that action at this time.