Skip to content

Instantly share code, notes, and snippets.

@jkominek
jkominek / resistor_color_labels.py
Last active August 29, 2015 14:06
Generate some HTML you can print and cut apart to make labels for drawers of resistors
#!/usr/bin/python
# resistor colors
colors = [ 'black', '#964b00', 'red', '#ffa500', 'yellow',
'#9acd32', '#6495ed', '#ee82ee', 'gray', 'white' ]
# borders around some of the lighter colors
border = [ 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 ]
out = open("labels.html","wb")
@jkominek
jkominek / tsp.rkt
Created November 24, 2014 23:55
Greedy and MinSpanTree based traveling salesman approximations
#lang racket
(require graph plot)
(define (distance a b)
(sqrt (for/sum ([a a] [b b])
(expt (- a b) 2))))
(define (every-edge l)
(if (null? l)
@jkominek
jkominek / $.rkt
Last active August 29, 2015 14:14
simple syntax-parse macros to rearrange evaluation
#lang racket
(require (for-syntax syntax/parse)
syntax/parse)
; why would you want infix syntax, when you can
; change your syntax to suit the task at hand?
(define-syntax ($ stx)
(syntax-parse stx
@jkominek
jkominek / llvm.rkt
Created February 25, 2015 07:31
turn a block of LLVM IR into a callable procedure
#lang racket
(require ffi/unsafe)
(define llvm (ffi-lib "/usr/lib/x86_64-linux-gnu/libLLVM-3.7.so.1"))
(define get-global-context
(get-ffi-obj 'LLVMGetGlobalContext llvm
(_fun -> _pointer)))
@jkominek
jkominek / holepattern.rkt
Created March 30, 2015 17:46
gcode hole patterns in racket
#lang racket
(define (distance a b)
(sqrt (for/sum ([a a] [b b])
(expt (- a b) 2))))
(define (greedy-tsp data #:start [start #f])
(if (null? data)
'()
(if start
#lang racket/base
(require racket/cmdline)
(define-syntax-rule
(while<> line body ...)
(let ([process-port
(lambda ()
(for ([line (in-port read-line)])
body ...))])
@jkominek
jkominek / locked-boxes.rkt
Created May 28, 2015 18:28
inspectors & parameters to limit the dynamic extent values can be used within
#lang racket
; idea: use inspectors & parameters to protect values so they
; can't be used outside of approved dynamic extents.
; probably not fully baked? (continuations, etc)
; (define-values (b lock) (locked-box important-v key))
; (parameterize ([lock key])
; ; in here b can be used
; (less-trusted-code b))
@jkominek
jkominek / KellysFavorite.java
Created May 28, 2015 23:59
Kelly's Favorite
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
public class KellysFavorite implements Player {
private ArrayList<Double> cache = new ArrayList<Double>();
@jkominek
jkominek / seidel-lp.rkt
Created September 27, 2011 06:42
Seidel's Linear Programming Algorithm
#lang racket
; A non-random Racket implementation of the algorithm given in:
; Small-Dimension Linear Programming and Convex Hulls Made Easy by R. Seidel
; There are a number of other documents floating around describing it,
; including another Seidel paper. I think all of them have at least typos,
; if not conceptual errors. The pseudo code at the end of the above paper
; is, I think, the least buggy. All the λ stuff is a bit odd; they seem
; to be mixing some numerical tolerance stuff with the variable bounds?
@jkominek
jkominek / gesture-canvas.rkt
Created October 4, 2011 22:34
An implementation of the Dollar Recognizer as a canvas% mixin for Racket
#lang scheme/gui
; $1 gesture recognizer
; Based on
; WOBBROCK J. O., WILSON A. D., LI Y.: Gestures without libraries, toolkits or training: a $1 recognizer for user interface prototypes. In UIST ’07: Proceedings of the 20th annual ACM symposium on User interface software and technology (New York, NY, USA, 2007), ACM, pp. 159–168.
; There's another paper that improves on recognition time:
; Reaver, Stahovich, Herold: How to make a Quick$: Using Hierarchical Clustering to Improve the Efficiency of the Dollar Recognizer. Eurographics Symposium on Sketch-Based Interfaces and Modeling (2011), pp. 103-108.
; Currently when it's run, it pops open a little window that will do the recognition. The mixin could certainly use more features.