Below are a few things I've worked on over the years.
A tool that generates a 3D-printable CAD model of a key blank from a single picture
of the face of a lock.
Hackable light display on the CSE staircase (more-permanent installation of XMasPi v2)
A fast Internet scanner.
A Linux Kernel Module that allows you to modify and inspect a TCP socket's state from userspace.
A lightweight, event-driven OpenFlow
Controller written in C.
Umich hack that allowed students to control
a strand of 100
addressable RGB LEDs
, strung up
in the BBB Staircase
Anticensorship research project that functions by placing proxies at large ISPs, in order to make them more difficult to block.
Security analysis of India's Electronic Voting Machines.
Final project for EECS 573
(Microarchitecture), an attempt at securing memory against
side-channel cache attacks or direct bus-sniffing attacks.
Final project for EECS 588
(Computer Security). Jahan and I implemented a proof-of-concept
laundry-stealing device, that gives an attacker free laundry.
Instant-message based BGP looking glass (send it a message at firstname.lastname@example.org!)
A new approach to IPv4 address sharing.
A satellite designed and built at the University of Michigan, for the purpose of studying plasma formations in the ionosphere.
Final project for EECS 373
, consisting of an embedded system plugged into an Ethernet network.
It functioned as a packet sniffer in the most basic mode, and was capable of poisoning HTTP requests in real time, and functioning as a simple web server
on an arbitrary IP address. Worked with a partner (Greg Ruhnow) to interface with an LCD display. I spent a large amount of time on this project digging
through documentation, learning and implementing the TCP/IP stack, and overcomming general quirkiness with the MPC823.
Inspired by the Mandelbrot set song
, I wrote a simple python application to generate images of
this interesting fractal. I experimented with various resolutions, culminating in the generation of a 20480x12800 image.
AJAX multi-player version of the 1995 Tiger Toys Lights Out
developed by Thomas Bombach, and the backend (PHP and MySQL) by myself. We designed a simple protocol before writing any code for how to share game data.
The challange of this project was to find a way to allow the server to give data to the client (browser) without the client making a request. This is backward
from how HTTP was designed, and thus made such a transaction difficult.
(Login: demo/demo) This is a class website for a philosphy class at my high school. A large part of this class is that everyone has an opportunity to share their
ideas and life stories with the rest of the class. By the end of the semester, everyone writes P-TIPs (Positive Truthful Insightful Paragraphs) about everyone
else in the class. For a class of size 30, this equates to 30*29=870 paragraphs per class that the single teacher used to manage via email. After implementation,
the teacher has estimated that he spends less than half of the time managing this project as he did before the website. In addition to saving time, it is a
much more reliable system for receiving, cataloging, and grading each of the thousands of paragraphs each semester.
Inspired by an xkcd
comic, this site includes an AJAX chatbox I wrote, along with an AJAX updated sign. The challenge for this
project was making lightweight enough code so that the large amount of AJAX requests do not make operation sluggish, while the back-end needed to be fast enough
to support several users without slowing down.
While at first look, running a webserver out of a dorm room from scrap parts does not seem like a challenge (aside from heat-removal in a cardboard box),
this project is constantly made interesting by having no access to a connected monitor or keyboard. That is, while I have physical access to the server,
I do all the administration over SSH. This creates interesting challenges when the server does not have a public IP. This was overcome by installing a
second NIC that has a statically assigned IP address on the 10.0.0.0/8 private network, allowing me to log in even when the dhcp link is down.
Arbitrary point-giving/receiving website. The idea is to give points to other people for cool things they do, and people give you points for things you do.