Skip to content

Instantly share code, notes, and snippets.

Carl Johnson carlmjohnson

View GitHub Profile
View Stereotastic Bookmarklet.js
javascript:
if (location.href.indexOf('stereotastic.com/') > -1 ) {
var re = /\/[A-Za-z0-9]{6}$/;
var m = re.exec(location.href);
if (m[0] != null) {
var wiggle_url = 'http://stereotastic.com/img/user'+m[0]+'.gif';
var tumblr_share_url =
"http://www.tumblr.com/share/photo?source="+encodeURIComponent(wiggle_url)
+ "&caption=" + encodeURIComponent('<p><a href="'+location.href+'">Stereotastic</a></p>')
+ "&click_thru=" + encodeURIComponent(location.href)
@carlmjohnson
carlmjohnson / mustache_engine.py
Last active Sep 15, 2015
An adaptor to use Mustache as a templating engine in Django 1.8+
View mustache_engine.py
import io
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from django.template import TemplateDoesNotExist
from django.template.backends.base import BaseEngine
from django.template.backends.utils import csrf_input_lazy, csrf_token_lazy
from django.utils.html import conditional_escape
from pystache import parse, Renderer
View gist:6627945
>>> funcs = []
>>> for i in range(10):
... def f(): return i
... funcs.append(f)
...
>>> [func() for func in funcs]
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
View randword.py
import random
with open('/usr/share/dict/words') as f:
words = f.readlines()
print(random.choice(words).strip())
View keybase.md

Keybase proof

I hereby claim:

  • I am carlmjohnson on github.
  • I am carlmjohnson (https://keybase.io/carlmjohnson) on keybase.
  • I have a public key whose fingerprint is 30BE 0B1F 857C 534D 948C D204 EFF3 01E7 5C6D 0414

To claim this, I am signing this object:

View ham.go
package sudoku
const hammDist = [...]int{
0x000: 0,
0x002: 1,
0x004: 1,
0x006: 2,
0x008: 1,
0x00A: 2,
0x00C: 2,
View net-dsl.go
package main
import (
"fmt"
"log"
"net"
"net/http"
"time"
)
@carlmjohnson
carlmjohnson / paginator.py
Last active Mar 26, 2018
Python for making 1, 2 … 5, 6, 7 … 10, 11 pagination correctly.
View paginator.py
def pages(n, max, window=1, ellipsis=None):
s = set(range(window + 2))
s.update(range(n-window, n+window+1))
s.update(range(max-window, max+1))
seq = [i for i in sorted(s) if i > 0 and i <= max]
res = [1]
for i, nxt in zip(seq, seq[1:]):
diff = nxt - i
if diff == 2:
res.append(i+1)
@carlmjohnson
carlmjohnson / README.md
Created Jun 5, 2018
Go project README template
View README.md

$NAME GoDoc Go Report Card

$DESCRIPTION

Installation

First install Go.

If you just want to install the binary to your current directory and don't care about the source code, run

@carlmjohnson
carlmjohnson / markov.js
Created Nov 5, 2018
Simple Markov text generator
View markov.js
class Markov {
constructor(text) {
text = text.replace(/\./g, " . ");
text = text.replace(/\s\s+/g, " ");
this.map = {};
let w1 = "";
let w2 = "";
text.split(/\s/).forEach(w3 => {
if (!this.map[w1 + " " + w2]) this.map[w1 + " " + w2] = [];
this.map[w1 + " " + w2].push(w3);
You can’t perform that action at this time.