View keybase.md

Keybase proof

I hereby claim:

  • I am 0 on github.
  • I am 0_0 (https://keybase.io/0_0) on keybase.
  • I have a public key ASDLXFbFtcCeD6vYtHwlR1M19TQhwTOOq93dfIqz9F6d3go

To claim this, I am signing this object:

View bluetooth_serial.md

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

Prerequisites

The following packages are required:

  • bluez: bluetoothd
  • bluez-utils: bluetoothctl, rfcomm
View msp430-elf.md

msp430-elf

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.

Setup

export PREFIX=/usr/local/msp430
View signed_sqrt.py
#!/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))
quote
let it = $cond
$ex
View README.md

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:

\x31\xc0\x31\xc9\x99\x50\x68\x2f\x76\x69\x6d\x68\x2f\x62\x69\x6e\x68\x2f\x75\x73\x72\x89\xe3\xb0\x0b\xcd\x80
View README.md

arcfour.ss

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

Usage

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.