Projects
-
PRCS
The Project Revision Control System is a version control system designed
to be simple to use. I began working on PRCS in fall of 1995 and
have been maintaining it ever since. The second version of PRCS is
in the works and features client/server operation.
-
Xdelta
Xdelta is a delta compression library I wrote for use in PRCS version
2. It uses a fast, linear-space, probabilistic approximation of the
standard greedy algorithm. It does not use record delimiters such
as line breaks to reduce the problem size, so it can be applied to many
binary file formats. It has much in common with rsync.
The second version of Xdelta implements delta-compressed storage and network
transport.
-
EnvDraw
EnvDraw is a Scheme environment diagrammer that I implemented under
the direction of Brian Harvey
in the summer of 1995 for use in the introductory computer science course
CS61A.
It creates diagrams and box-and-pointer diagrams interactively while the
user types commands into the interpreter.
Research
-
Master's research
For my Master's thesis I implemented a system for delta-compressed
storage and distribution based on Xdelta. It combines the features
of systems like RCS and SCCS with the advanced delta-compressed distribution
features of CVSup
into a decentralized system. Decentralization is very important for
implementing disconnected applications. You can read it here.
-
The Ninja Internet-scale Research
Project
I began working with the Ninja group in Fall 1999 on version-controlled,
distributed file system applications.
-
Public Key Infrastructure and Decentralized File System Security
Slides and annotated
bibliography for a presentation on this subject.
-
The JavaTime project, part of WELD
I was part of the JavaTime research group from Spring 1997 through
Spring 1999 where I worked on program transformation. Though not
terribly sucessful, you can read some post-mortem documentation and find
releases here.
Course Work
-
CS262 Fall 1997: Advanced Topics in Operating Systems
Andy Begel, Michael
Shilman, and I worked on a project called Picothreads.
We implemented a continuation passing style code transformation on Java
bytecodes in order to replace threads with lightweight co-routines.
See our report in Postscript or PDF.
-
CS294-1 Spring 1998: Mobile Computing and Wireless Networking
My project was on the design of disconnected operation in PRCS, a feature
that will arrive in PRCS version 2. See my report in Postscript
or PDF.
-
CS263 Spring 1998: Design and Analysis of Programming Languages
My project was on the use of Presburger formulae for eliminating provably
dead code from Java programs. I used the Omega
toolkit. See my report in Postscript or PDF.
-
CS261 Fall 1998: Computer Security
CS264 Fall 1998: Implementation of Programming Languages
I did a joint project for both of these classes on programming language
security. What resulted was a survey of proposed techniques for creating
tamper-proof executables for secure program distribution. See my
report in Postscript or PDF.
-
CS252 Fall 1999: Computer Architecture
I did a project with Ben
Zhao on the cache performance of indexing data structures in main memory.
The study includes a comparison of top-down skip lists with B+-trees, and
the results may surprise you. See the preliminary report in Postscript
or PDF.
Publications
-
PRCS: The Project Revision Control System,
Joshua P. MacDonald, Paul
N. Hilfinger, and Luigi Semenzato,
Proceedings System Configuration Management-SCM-8
Lecture Notes in Computer Science, Vol 1439, Springer-Verlag, July
1998.
Postscript, PDF
-
Design and Specification of Embedded Systems in Java Using Successive,
Formal Refinement,
James Shin Young, Joshua P. MacDonald, Michael Shilman, Abdallah Tabbara,
Paul N. Hilfinger, and A. Richard Newton,
Proceedings of the 35th Design Automation Conference, San Francisco,
CA, 1998.
PDF
Miscellaneous
-
I gave a help session
on Source Code Control, you can see the slides here.
-
I gave a talk at the Stanford Computer Systems Laboratory Colloquium about
PRCS and Xdelta. You can see the slides here.
-
Submit to the power of the XCF!!!
-
Warrior needs food, badly... my incredibly space-efficient Gauntlet
machine.
-
Once upon a time I contributed somewhat to GTK
and the GIMP. Here is a description of
the
GTK text widget that I wrote when I stopped
working on it, along with an analysis of what failed and what succeeded.
Joshua P. MacDonald / jmacd@cs.berkeley.edu