Skip to content

Instantly share code, notes, and snippets.

@carld
carld / 3000lines.sh
Created March 19, 2017 04:38
Find files that have greater than 3000 lines
wc -l data/* | awk '{if ($1 > 3000) print $1, $2}'
@carld
carld / sjs.scm
Created February 27, 2017 10:30
Converting s-expressions (Lisp/Scheme) into Javascript (JSON)
(define (js-format l)
(cond
((null? l) "")
((not (list? (car l))) (string-append (format #f "'~a'" (car l))
(if (not (null? (cdr l)))
(string-append "," (js-format (cdr l)))
"")))
(else (string-append "\n[" (js-format (car l))
(if (not (null? (cdr l)))
(string-append "]," (js-format (cdr l)))
@carld
carld / eliza.js
Last active February 27, 2017 10:44
PAIP, Chapter 5.3, in Javascript
var variablep = function(x) {
// String is a primitive, so x instanceof String does not do what you think
return (typeof x === "string") && (x[0] == "?");
}
var equal = function(x,y) {
if (x === y) return true;
if (x == y) return true;
if (typeof x === 'string' && typeof y === 'string'
&& x.toLowerCase() == y.toLowerCase()) return true;
if (typeof x === 'array' && typeof y === 'array' && x.length == y.length) {
@carld
carld / accounting.sql
Created February 18, 2017 08:59 — forked from NYKevin/accounting.sql
Basic double-entry bookkeeping system, for PostgreSQL.
CREATE TABLE accounts(
id serial PRIMARY KEY,
name VARCHAR(256) NOT NULL
);
CREATE TABLE entries(
id serial PRIMARY KEY,
description VARCHAR(1024) NOT NULL,
amount NUMERIC(20, 2) NOT NULL CHECK (amount > 0.0),
-- Every entry is a credit to one account...
@carld
carld / bmr.scm
Last active December 22, 2016 08:53
Domain Specific Language for Calculating Basal Metabolic Rate
; Scheme based Domain Specific Language for computing Basal Metabolic Rate
; using the Harris-Benedict formula.
; https://en.wikipedia.org/wiki/Harris–Benedict_equation
"Goal: implement syntax transformers for a program like the following:"
'(basal-metabolic-rate
(metric
(male
(weight 90 kg)
(height 190 cm)
@carld
carld / time_converter.awk
Created November 22, 2016 20:28
example use of awk to format a date
function convert_time(t) {
split(t,a,"/");
if (a[3] > 50) {
a[3] = sprintf("19%02d", a[3]);
} else {
a[3] = sprintf("20%02d", a[3]);
}
month = a[1];
day = a[2];
year = a[3];
@carld
carld / cart.scm
Created October 7, 2016 00:42
cartesian product of lists
(define (product . args)
(if (null? args)
(list '())
(apply append
(map (lambda (rest)
(map (lambda (first)
(cons first rest))
(car args)))
(apply product (cdr args))))))
@carld
carld / shuffle.scm
Created October 5, 2016 07:51
shuffle list
(define (shuffle deck)
(sort (lambda (x y) (even? (random 2))) deck))
@carld
carld / git-side-by-side
Created September 21, 2016 23:03
git diff side by side in colour
git difftool -y -x "colordiff -y -W $COLUMNS" origin/prod origin/master | less -R
@carld
carld / str.s
Created September 10, 2016 07:34
string equals in x86_64 nasm assembly
section .text
global start
start:
mov rsi, s1 ; esi = &s1
mov rdi, s2 ; edi = &s2
xor rdx, rdx ; edx = 0
loop:
mov al, [rsi + rdx]
mov bl, [rdi + rdx]
inc rdx