Keybase proof

I hereby claim:

  • I am 0 on github.
  • I am 0_0 ( on keybase.
  • I have a public key ASDLXFbFtcCeD6vYtHwlR1M19TQhwTOOq93dfIqz9F6d3go

To claim this, I am signing this object:


The following are instructions for connecting a Bluetooth device for serial communication on Arch Linux using BlueZ 5.31.


The following packages are required:

  • bluez: bluetoothd
  • bluez-utils: bluetoothctl, rfcomm


The following are instructions for building a GCC cross-compiler for the MSP430. They are based in part on Peter Bigot's post to mspgcc-users.


export PREFIX=/usr/local/msp430
#!/usr/bin/env python3
Calculate complex square roots with the correct sign for trajectories in the
complex plane.
Taking the square root of values along a continuous trajectory in the complex
plane is not as simple as calling a sqrt function, because the complex square
root is a multi-valued function whose Riemann surface is composed of two
sheets. If the trajectory crosses the branch cut (conventionally placed along
View aif.jl
# Anaphoric if.
macro aif(ex)
@assert (ex.head == :if) "@aif must be applied to an if expression."
cond = ex.args[1]
ex.args[1] = :(convert(Bool, it))
let it = $cond

x86 shellcode

Back in 2010, I needed some shellcode, so I wrote this. It spawns Vim rather than a shell, so I guess it's technically "vimcode".

It is, of course, null-free. There is a commented version in the test file, but here it is in its entirety:


For some reason, in January of 2009 I felt the need to implement RC4 in Scheme.


Known to work with Racket.

Specify the key and plaintext on the command-line as arguments, and it will output the ciphertext. For example,

View arrays_pointers.c
/* gcc -std=c99 -pedantic -Wall -Wextra -Werror -o arrays_pointers arrays_pointers.c
#include <stdio.h>
#include <string.h>
#define A_LEN 5
void foo(int a[], int *p);
View cols.txt
abc 1 2 3
def 4 5 6
ga 7 9 10
hij 1 5 99
View a_problem.txt
"Describe an algorithm that consumes five distinct comparable objects and
produces the median of these objects using a total of at most six comparisons."
Because creative thinking is hard, we use a simpler approach and try to compute
a suitable program recursively. Programs are represented by a tree of
comparisons at the internal nodes and resulting indices at the leaves.
The following code has been tested with Python 2.6.8, 2.7.3, and 3.3.0.