Plain text resumé available.
Contact:
Email: johnfish@cs.ucsd.edu
University of California, San Diego
Department of Computer Science & Engineering
9500 Gilman Drive
La Jolla, CA 92093-0114
Objective:
Seeking valuable experience in industry involving systems and
networking topics.
Research Interests:
As a member of the Systems and Networking group at UCSD, my interests include
distributed systems, overlay networks, internet security, fault-tolerance,
and peer to peer systems.
Work Experience:
Education:
University of California, San Diego
September 2004 - December 2006
M.S. Computer Science
Focus: Systems and Networking
GPA: 3.82
University of California, Los Angeles
September 2000 - March 2004
B.S. Computer Science and Engineering
GPA: 3.95
Honors:
- Graduated UCLA summa cum laude
- Member of Tau Beta Pi, Eta Kappa Nu, Phi Beta Kappa, and
Golden Key honor societies
- UCSD Excellent TA Award for 2004-2005
Teaching Experience:
- Teaching Assistant for Operating Systems (3x).
- Teaching Assistant for Server-Side Web Applications (2x). Class
focuses on Tomcat, JSPs, Java Beans, and Struts
- Teaching Assistant for Enterprise-class Web Applications. Class
explores J2EE and open source tools for creating large scale
web applications (e.g. Amazon, Ebay)
Skills:
Programming Languages: C, C++, Java, Python, SQL, Javascript,
JSP, ASP, PHP
Preferred: C++
Relevant Projects:
BARS (Spring 2006)
- Putting Bank Conflicts Behind BARS [pdf].
- A proposal for using Banked Arrays of Redundant SRAMs in processor
caches to achieve multiple read and write ports without
paying the usual high overhead.
Tsync written in C++ (Winter 2005)
- I contributed to Tsync (transparent synchronization) - a
user level daemon that maintains a consistent view of data
across all configured machines. Updates to volumes are
multicast to all nodes. Versioning is done through SHA-1
hashes of the files being synchronized.
Benchmarking Linux system, written in C (Fall 2004)
- Using the CPU timestamp counter through rdtsc for high granularity of
measurements, benchmarked various aspects of system performance.
- Benchmarks included:
- System call overhead, fork vs. thread creation time,
latency to write-protect a segment
- RAM access time (accounting for L1 and L2 caches), RAM
bandwidth, page fault latency
- TCP connection setup and tear-down latency, network
latency, and peak bandwidth
- Size of file cache, sequential vs. random read latency
HTTP/1.1 Web server written in C (Winter 2005)
- Multi-threaded web server implementing HTTP/1.1 persistent
connections through a pool of worker threads coordinated by
a monitoring thread that listens and accepts connections.
- Stress tested web server by writing a simple load generator in C.
OpenRoad, written in Python (Winter 2004)
- The OpenRoad project at UCLA sought to provide live traffic data in
a distributed system by leveraging GPS and WiFi enabled devices
such as laptops, PDAs, or possibly cell phones.
- We built a user interface that, given your current GPS coordinates,
grabs an appropriately zoomed map of your location and plots
live traffic data on the map. Also, the system polls your
current location periodically and pushes your own traffic data
to others.
- Further, we hoped to leverage open WiFi access points for
connectivity to push and pull traffic data (the map images are
cached) so we implemented a wireless access point hopper for a
Prism2 wireless card using the wlan-ng drivers.