Lawrence Berkeley National Laboratory 1 Cyclotron Road MailStop: 50A-3111 Office: (510)486-6786 Berkeley, California 94720 Email: MPerry@lbl.gov
Java, C/C++, Tcl/Tk, HTML/XML, Solaris, Linux, FreeBSD, Irix, Windows 95/98/NT/2K, UNIX Sockets, Winsock, OpenSSL, JSSE, Java Applet/Servlet APIs, Posix/Windows Threads, RS232 Communication, Web Services APIs/Frameworks (including Axis and BPEL), Jabber/XMPP
As a core component of the PCCE, I designed, implemented, and deployed the LBNLSecureMessaging system which supports synchronous and asynchronous messaging and group discussion among trusted users. To leverage existing technologies, I installed and configured an existing IRC server (in C) to support online instant messaging. I enhanced this server with SSL for security (client-server authentication and encryption). I developed a custom PCCEServer (in Java) to provide presence, persistence, asynchronous messaging, and security. To restrict access to trusted users, participants must register with the PCCEServer to create an account. Subsequent use requires logging into the system via either X.509 certificate or username/password, with the stronger authentication granting extended privileges. I designed and implemented the client GUI in Java Swing. For security within the Java components, I used the JSSE API.
Prior to developing PCCE components, my responsibility was to research and evaluate existing tools/frameworks (e.g., IRC, BSCW, Apache SOAP, JAXRPC) for feasibility of integration into our environment. I wrote servlets, a Java client WebDAV package, and a Java messaging applet that for use as a web-based prototype. For web-based development and deployment, I have installed/configured application servers on Solaris/Linux: Apache enabled with mod_dav/mod_ssl, Tomcat, IRCD, Axis, JWSDP, and BPWS4J.
Previous work: Writing software to provide remote control capabilities to videoconferencing: A Remote Camera Control System and Confcntlr
Designed, implemented, and deployed a server devserv to control serial video devices. This software is used mainly in a videoconference to allow viewers more control over what they see. Devserv supports Sony EVI-D30/D31 and Canon VC-C1/VC-C3 cameras and the Panasonic WJ-MX50 mixer/switcher. It uses the socket interface and the Collaboratory Interoperability Framework (CIF) for unicast and multicast communication between the server and the client programs that send requests to drive the devices. Message exchange between devserv and the devices is via serial port communication. The program is written in C++ (with both single- and multi-threaded implementations) and runs under UNIX and Windows. Enhanced the Java client application (camclnt), which is the GUI for sending requests to devserv for camera pan, tilt, and zoom and doing picture-in-picture. Incorporated the Java Media Framework (JMF) to receive/present video as an alternative to running an external media tool.
As part of a mobile videoconferencing robot project ,RAGE, I extended the remote camera control software to control the robot and video. The robot was demonstrated at SuperComputing2001 and at the Almaden Research Center.
Developed confcntlr, a conference controller for local and remote control of videoconference tools used in LBNL's collaboratory project. This tool consists of a graphical user interface and a communication mechanism. The GUI presents a unified interface for the video and audio and allows conference participants to change parameters for multimedia tools running locally or remotely. The networking component implements local multicast for interprocess communication and TCP message exchange between remote hosts. By allowing remote control, confcntlr has changed the current paradigm of videoconferencing so that users do not have to be present at the transmitting site. The program was written in Tcl/Tk and C for UNIX and Windows.
Modified existing Perl CGI scripts for presenting licensing information and registering users who download our software. Am also responsible for maintaining documentation on these projects (web pages, man pages, user guides...).
Programmer (June 1995 - January 1996)
The Filoli Information Systems Company, Claims Administration Group
Responsible for GUI programming to allow insurance claims technicians to format and send
form letters to persons involved in workers' compensation claims. This was included in
the workers' compensation package being developed at Filoli for the NeXTstep PC platform.
Graduate Assistant and Teaching Associate (September 1993 - June 1997)
San Francisco State Univerity, Department of Computer Science
Instructor for Introduction to Programming course, Lab Manager, Course Reader for an Assembly Language Class, Teaching Assistant for UNIX class, and Lab Consultant.
Summer Intern (June 1994 - August 1994)
Sunsoft Inc., Technical Publications Group
Tested the correctness of man pages and code samples in documentation on
writing device drivers and multithreaded programming. Position required
writing C code necessary to call functions and executing commands to
verify technical accuracy.