Marcia Perry


Lawrence Berkeley National Laboratory
1 Cyclotron Road			
MailStop: 50A-3111			Office: (510)486-6786 
Berkeley, California 94720		Email: MPerry@lbl.gov		

EDUCATION


PROGRAMMING LANGUAGES, OPERATING SYSTEMS, APIs

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
PROFESSIONAL EXPERIENCE

Computer Systems Engineer (December 1997 - Present)
Student Assistant (June 1996 - December 1997)
The Lawrence Berkeley National Laboratory
Computational Research Division, Distributed Systems Group

Current work: Research/development of the Pervasive Collaborative Computing Environment (PCCE), a secure environment in which users can share documents/applications, hold synchronous/asynchronous communications, and track workflow. I am currently implementing the workflow component as an aggregation of web services under Axis and BPEL. Jobs are submitted to a computing environment such as Condor via a SOAP interface. To enable tracking and collaboration via publish-subscribe mechanisms, I am implementing logging and publish-subscribe mechanisms. I wrote web services to log status information to web pages and a Java 'chatbot' that uses the XMPP protocols to create persistent multiuser 'chatrooms' on a Jabber server. The workflow web services can then publish status information to these discussion venues.

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.

HONORS AND PROFESSIONAL ACTIVITIES
PUBLICATIONS AND PRESENTATIONS