Muxed Earth
Distributed Computing so far
I gave a half-hour presentation on my research at the admitted students weekend earlier. I think I was able to convey some sense of the opportunities that Mudd offers for research, and presented a reasonable face of what it could look like.
The talk was an explanation of the concepts behind distributed hash tables, and an [...]
Experiments in Data Moshing
Some work I’ve been doing for my experimental animation class.
Experimenting with 802.11s
The purpose of this document is an explanation of what is defined in the IEEE 802.11s standard, and the states of current implementations based on this standard. 802.11s is the standardization of mesh networking. That is to say that it defines a protocol for mobile devices where they can communicate amongst themselves even when not directly connected, and can route data beyond their immediate environment.
on p2p in the browser
The final project I want to accomplish this semester in my distributed computing independent study, is to come up with a way to access p2p capabilities from within the browser. I was originally hoping to do this with JavaScript API that relied behind the scenes on the new flash p2p protocol, rtmfp. The [...]
Torrent Auditor
I have now migrated the python torrent client that I’ve been working on to a google code project.
It lives at torrentauditor and now has basic support for actually downloading torrent files.
I researched the bittorrent extension protocols this week, but was somewhat frustrated by what I found. Most of the interesting ones are implemented on [...]
Auditing Bit torrent
One of the strengths of bit torrent is that the primary data transfer protocol is entirely separate from the advertisement protocol. This also has created a strain both in discovering other users who have data, and keeping accurate reports of data that was transfered.
The first issue is one that has been developed for extensively, [...]
Talking to Kad
# Standalone Mainline Kad Client
#
import socket
import time
import sys
import getopt
import random
import benc
import binascii
import select
client = "AZ"+str(0×05)+"31";
UDPSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM);
targetID = "".join(chr(random.randrange(0, 256)) for i in xrange(20));
myID = "".join(chr(random.randrange(0, 256)) for i in xrange(20));
reqs = 0;
knownHosts={};
knownPorts={};
def sendData(data,host,port):
global UDPSocket,reqs;
reqs += 1;
#print ‘messaged %s:%d’%(host,port);
UDPSocket.sendto(data,0,(host,port));
def sendPing(myID,host, port):
data = {‘q’:'ping’,'a’:{‘id’:myID},’v':client,’y':’q',’t':0×05+0×05};
sendData(benc.bencode(data),host,port);
def GetPeersReq(myID,ih,host,port):
data = {‘q’:'get_peers’,'a’:{‘id’:myID,’info_hash’:ih},’v':client,’y':’q',’t':str(0×05)+str(0×05)};
sendData(benc.bencode(data),host,port);
def FindNodeReq(myID,target,host,port):
data = {‘q’:'find_node’,'a’:{‘id’:myID,’target’:target,’want’:['n4']},’v':client,’y':’q',’t':str(0×05)+str(0×05)};
sendData(benc.bencode(data),host,port);
def GetPeersReq(myID,ih,host,port):
data = {‘q’:'get_peers’,'a’:{‘id’:myID,’info_hash’:ih},’v':client,’y':’q',’t':str(0×05)+str(0×05)};
sendData(benc.bencode(data),host,port);
def AnnouncePeer(myID,key,token,lp,host,port):
data = {‘q’:'announce_peer’,'a’:{‘id’:myID,’info_hash’:key,’token’:token,’port’:lp},’v':client,’y':’q',’t':str(0×05)+str(0×05)};
sendData(benc.bencode(data),host,port);
def [...]
The One-Day Website
I spent today building http://setTimeout.net, a website that I was inspired to create yesterday evening.
I set myself the goal of finishing the project in one day, I’ve managed to get done enough in that time period, and I’m pretty happy with how it turned out. I came up with several ideas for how to [...]
Launchpad Update
I am almost done rewriting my launchpad code so that it can be run without a kernel module. Instead, I’ll be using libusb, which is a reasonably common and cross-platform library for interacting with USB devices.
I’m having a couple issues with callbacks and polling, but I’m making pretty steady progress, and should have a [...]

