Extended Background: Daniel L. Larner (650) 812-4871 larner@parc.com Objective: Extremely challenging work in science & engineering Education --------- Stanford University - Master of Science in Computer Science, Jan. 1988 Massachusetts Institute of Technology, BS in Computer Science and Engineering, 1980 BS in Mechanical Engineering, 1979 Experience ---------- PARC Inc. (formerly the Xerox Palo Alto Research Center) - Member Research Staff, April 1996 to present Hardware Systems Lab Dissolved gas quantification: Work is on characterizing the amount of trapped and dissolved gases in solids. Designed, analyzed and constructed apparatus to make measurements of trapped and dissolved gasses based on gas laws, temperature control, pressure monitoring, and gas chromotography. Developed and used experimental procedures for obtaining data on trapped and dissolved gasses. Microwire Vibration Control: Approaches and methods are being worked on to sense the velocity of 50 micron sized wires, and to modify their stick-slip friction behavior when in contact with moving surfaces. CO2 concentation : As part of a project to concentrate CO2 using fuel cell technology, an experimental fuel cell was designed (Solidworks and Cosmosworks) that accomodates different membrane thicknesses, allows for external cell temperature control, and has adjustable membrane pressure. Molds were developed to encapsulate membranes in gasketing elastomers, and work was done with the team to define the overall system architecture. Thrombolysis: Investigations into using acoustic waves to break up blood clots: Planning, design, acquisition, setup, etc. of various test apparatus; Wrote .Net software for control for function generator, allowing arbitrary continuous and burst waveforms to be produced. Previous Involvements: Non-Contact Development : Experimental apparatus (mechanical/Solidworks/Cosmosworks, electrical and C# .Net software) was designed and constructed to allow investigation into the dynamic character of toner partical movement. Experience with high frame rate cameras was also gained. MicroWire Rotation: This was an supporting investigation into the feasibility of rotating 50 micron wires (used in toner development) with the goal of improving image quality. Stress models were constructed in Mathcad to determine the degree of cyclic bending, tensionsing and torsion the wires would undergo. These results were then used to estimate fatigue life base on SN curves. In addition, a tiny friction rack device to cause the wires to rotate was designed, prototytypes and tested. MicroWire Contamination: This was an investigation into the feasibility of using vibrations to clear an 50 micron wire of contaminants. 1. After background learning on the problem, mathematical models were developed for vibrational waves, wire forces, contaminant forces, and wire stress as functions of frequency and amplitude of vibration. These calculations showed that the frequency and amplitude needed (130th harmonic at 10 um) to shake off the contaminants was beyond the realm of realistic possibility, unless the estimation of contaminant force was grossly inaccurate. 2. An experimental setup consisting of signal generators, high voltage supply, piezo extension motors, clamps, micrometers, stroboscope, programmed strobe delay board, microscope, camera, PC, wire tensioning jig (using Solidworks design and vibrational FEA, but made by model shop), tension tuner and assorted hardware and improvised jigs, was designed and constructed. This setup was used to experimentally verify the predictions of the mathematical models. 3. Since there was no way to produce wire contamination in-house, another experimental jig (using Solidworks design and vibrational FEA, made by self using Visual Mill and Benchman CNC) was designed that could vibrate wires on an actual wiremod assembly. This item, with instructions, was shipped to another site, where tests were run on actual contaminated wires. The results were that shaking the wires essentially had no effect, further verifying the initial analysis. CoExtrusion Printing: Work on this project consisted of a 'grab-bag' like list of items. 1. Checkout, modification and adjustment of original robot vacuum chuck to within +- 15um. 2. Designed (Solidworks with FEA) installed and adjusted camera capable precision vacuum chuck and mount, which allows high speed video to be taken of the extrusion process. 3. Measured robot table accelerations to ascertain effect on extrusion startup transients. 4. Examined ultrasonic cleaning methods, finding some possible effective frequencies. 5. Designed and constructed high pressure head flusher, including Headclamp done in Solidworks with FEA, valving, gauging, enclosure modification, plumbing, etc.. 6. A variety of items related to setting up the new lab (cleaning, storage, facilities, oven, etc.) 7. Designed and machined new pressure multiplier syringe retainer tips. 8. Installed Loctite robot UI switches, performed robot troubleshooting/repairs and programming 9. New head mounts and syringe mount for both robots were designed, fabricated and installed. 10. Modeling / calculation of pressure expansion of syringe and pump cylinders was done to determine level of stored volume - a concern for 'run-on'. 11. Safety modifications to intern designed power washer to head interface. 12. Busbar printing experiments were performed. Suitable busbars were found to be achievable using standard syringe tips. 13. Help to interns on measuring, setup, etc. 14. Review and comment on specifications and proposals. IEA - Robotic blimp project 1. Designed and implemented the msp430 Robot API (support for timers, interrupts, pwm motor control, serial communication distance sensing, payload release, station identification, etc.), and wrote sample control programs (e.g. PI altitude control) using that api. 2. Worked with EE to develop and debug the board hardware. 3. Designed and constructed solenoid release mechanisms. 4. Provided instruction to and worked with the students. TIPP - Tightly Integrated Parallel Printing Worked with a team on parallel printing, primarily in the firmware and mid- level software areas. By adjusting scheduling quantums and thread priorities, using OS primitives for timer based wakeups, making use of high performance counters for clocking, and adding some timing instrumentation, Windows XP was made suitable for use as the supervisory controller plaform, with a 1msec control interval. This circumvented (or at least delayed) the need for evaluating, purchasing and migrating to a commercial real time OS. TCP based communication was rewritten using non-blocking IO, buffering, single reads and fewer system calls to produce a ~3x performance improvement. Low level CAN communication code was modified to use semaphore and event based OS waits, resulting in a ~10x performance gain. Time synchonization between distributed module controllers and the supervisory controller was achieved using a delayed sync approach with a PI based clock adjustment to achieve module controller and supervisory controller time synchonization to with ~+-30uSec. Serial and bit-banged buffered communication over IR between nips and directors was developed, as well as low level configuration gathering and liveness testing. This provides needed information for a planner to replan in the event of failures and/or dynamic reconfiguration. Additionally, general work was performed with the team to find and fix problems (e.g. cvs setup, 5x speed loss in Flash, excess memory usage, random bugs). Embedded Collaborative Computing Area - This area's research spans networked embedded sensing and control systems to applications to tracking and machine diagnosis. Work was on the design and development of a low power (including scavenged power) sensor network node called the ParcMote. This effort included hardware analysis and design for effective operation with embedded resource aware operating systems, and techniques for programming large networks of the resource aware nodes. This project used a PIC 18 series microcontroller, Microchip C18 C compiler in the MPLAB environment, Microchip ICD2, and the MicroC/COS-II OS for firmware development, and P- CAD for electronic schematic and PCB design. Additionally, I was involved in the design and implementation of a distributed computation and sensing framework, which used an event driven publish and subscribe approach toward the communication of individually threaded agents. CORBA ( C++ Tao, Sun Java JDK and JacORB) were used for the transport of events throughout the system. This architecture was used to implement a distributed camera network (Linux / C++ and PC / Java) for object detection and tracking. Smart Electro-Mechanical Systems Area - This work was aimed at providing legged locomotion modules for snake robots, and included : Modifications to servos to provide continuous rotation through careful PWM control; Modification of existing module mechanical design (using SolidWorks) to accommodate leg usage; Augmentation of the servos by creating quadrature positioning sensors inside the servo itself; Design (using P-CAD) and fabrication of sensor electronics; and Software for speed and positioning. This project uses a PIC 16 series microcontroller, HiTech compiler in the MPLAB environment, and Microchip ICD2. Perceptual Documents area - The Perceptual Documents Area's goal is to develop computer vision based applications that conveniently enable people to select, modify, and share material in documents in terms of perceptually and semantically salient chunks. Efforts included: Architecture and implementation (Java) of PPD (Platform for Perceptual Documents), including customizable GUI that allows for quick generation of prototype apps. Connected Component Classification: Used machine learning technologies to generate initial hypotheses on the classification of connected components. Designed PPD interfaces to Weka (a machine learning toolkit) that allow training data to be passed through classifier machinery, and classifications run on active data. Matching: Created / documented parameterized versions of matching problem and model; Work on graph rectification, search and matching heuristics, drivers, model development and libraries. Tablet PC Recognizer: Creation of system (using C#, C++, JNI, Java, .Net framework and Tablet PC SDK) that allows PDA matching technology to be used and demonstrated as an Ink recognizer on Microsoft Tablet PC's. Scan-To-PowerPoint app (RUF XML ontology and libraries in Java and C++, COM based PowerPoint interface); other utils such as dbb (a Java blackboard system), base64 codec, JNI interfaces to PNG libraries and operating system, XML / DOM persistent representation, etc. ScanScribe: A document image editor that makes it easy to extract, manipulate, and combine sketches, handwritten notes, whiteboard images, screen snapshots, and scanned documents. Distributed Sensing - Developed Java RMI interface to Matlab, providing invocation of arbitrary Matlab functions and scripts; Designed and implemented IDSQ (Information-Directed Sensor Querying) Agent software; network diffusion interfaces, sensor and tracker structures, network interfaces to Matlab simulations; logger interaction; belief state serialization; operational tracing, etc. Agent operational testing included Multi node simulations, both with wired and radio based diffusion communication. Architecture and implementation of a system called PIPES - a Platform for Information processing. This is an easily reconfigured set of (Java) classes for building information retrieval systems: developed full text indexing capabilities, filtering techniques (e.g. stopword, regular expression, etc.), token expansions through part-of-speech tagging (writing JNI interfaces to external tagger LinguistX), and links to word-net. The architecture and implementation of a distributed object system called ILU (Inter Language Unification): Designed and implemented ILU's new CORBA compliant C++ runtime, and the new C++ mapping. Wrote the new C++ example code, manual, and created the build structure needed. Investigated DCOM support for ILU - Wrote paper "Architectural Level ILU and DCOM Interoperability" describing issues and a possible design for wire level interoperability. Did performance characterization of ILU vs. DCOM. Developed an HTTP protocol layer (including persistence and redirects) to allow treatment of Web resources as objects (Protocol module, documentation, and example programs including an ILU based web server.), and wrote a World Wide Web Journal paper on "Migrating the Web toward Distributed Objects". Other ILU related activities included: Work on fixing various ILU bugs, creating patches, adding features, documentation, etc.; Integrated ILU thread code (including simulation of Conditions) for Windows; Tested of ILU IIOP interoperability with Orbix; Built and maintained distributions and ILU web pages; Worked on ILU footprint reduction possibilities; ported Python and Java support to Win32. Received PARC "Team Excellence Award" The W3C project, HTTP-NG (Next generation HTTP - basically replacing Web underpinnings with Distributed Object System Technology): Designed and wrote the HTTP-NG Web Interfaces draft (W3C and IETF). Designed and implemented client and web server test programs based on these interfaces to evaluate performance and identify problems in the new wire and transport protocols. Developed a Microsoft Explorer Asynchronous Pluggable Protocol handler for the new HTTP-NG protocol. Enhanced and augmented the BU SURGE program to use HTTP-NG. Setup switch isolated hardware testbed for experimental control. Received PARC "Excellence in Science and Technology Award" Outride (now purchased by Google) - Contractor, April 2000 to Jan 2001 Design and development of an Internet Explorer DeskBand 'sidebar', and an ActiveX control using Microsoft C++, COM, and browser scripting. These components allowed the display of web pages within the sidebar, allowed web page scripts (e.g. JavaScript) to perform control of the sidebar and obtain information on the users current page, browser history and favorites. Rockwell International Science Center - Palo Alto, Software Architect, May 1994 to April 1996. Responsibilities included a wide variety of things - here is a coarse synopsis: 1. Design Sheet (a Mathematical Engineering and Design Analysis tool) - Architected and implemented a new extended mathematics package for Design Sheet, based on platform native math and the Common Lisp condition system; Modified the foreign function interfaces of Design Sheet for increased flexibility w.r.t. static & dynamic libraries; Installed and configured Solaris 2.4, built the lisp for it, and got Design Sheet running on that platform; Began a study of the tradeoffs involved in porting Design Sheet to C++, and its potential use of outside packages; Began investigation of and created prototype programs linking Excel and Visual Basic running on Windows machines to Design Sheet running on Unix. Researched Excel / Design Sheet File Conversions, etc.; Began formalizing Architecture & Implementation w.r.t. distributed objects; Assisted various division personnel in running Design Sheet at their site; Began porting Design Sheet to a PC; Designed and coded several CORBA based interfaces (using Iona's ORBIX) to Design Sheet - this involved creating a bridge between the C++ generated IDL mappings, and CLOS objects via Lisp's foreign function mechanisms. 2. MADE (Manufacturing Automation and Design Engineering) - Created TCP/IP remote lisp evaluation and CORBA interfaces for Design Sheet; Designed and built Design Sheet external api; Designed and built C++ internals, Motif GUI and CORBA compliant interfaces for the Made coordinator (maintains data dependencies between programs); Brought IDEAS (SDRC's CAD system) up and working on Solaris; Evaluated various distributed object frameworks. Work is underway on creating distributed simultaneous (Windows) GUIs that communicate with Design Sheet models via CORBA interfaces. 3. Control Program Generation (Synthesis of Real Time Control Programs) - Helped define the Control Program Generation (CPG) project; Began translating OCR'ed IEC grammar to text with evaluative commentary; Developed abstractions and C++ classes for Control Flow and Static Single Assignment Graphs for CPG, and implemented algorithms to generate dominator trees, control dependencies, and conversions from control flow graphs to single static assignment graphs (these classes and algorithms form the 'middle- ware' of a general purpose language compiler); Brought up plc5 parser code; Experimented with Ptolemy (simulation and DSP system) and helped transfer it to division. 4. TCIMS (Trauma Care Information Management System) - Helped in the installation and setup of development hardware and software; Provided assistance on use of C++ in Windows NT & 3.1 program development. 5. Printing Press Imposition - Investigated approaches toward getting lisp based imposition code to interact with C/C++ windows based software, and subsequently did some performance testing. 6. Design Rationale - Built a prototypical hyperlink extension for the Codewrite editor. 7. World Wide Web - Installed and configured our web server; Constructed, maintained & enhanced web pages; Assisted others in page development. Experimented with Java Programming. 8. Misc. - Performed a variety of Unix and Windows NT system administration type functions, including setting up Microsoft 'Backoffice'. Xerox Palo Alto Research Center - Contractor, Dec. 1994 to March 1995 Ported ILU (Inter Language Unification System - a CORBA compliant distributed object system) from Unix to Windows NT and Windows 3.1 with Win32s. This involved use of the Winsock API; resolution of 32 / 16 bit issues, provision of console I/O under windows, accommodating FAT filesystem naming restrictions, makefiles, creation of windows based examples, etc. SunSoft, A Sun Microsystems Inc. Business, Mountain View, CA, Member Technical Staff 4, Feb. 1993 to May 1994. As a member of the ToolTalk (a versatile inter application broadcast facility) team, I was responsible for the architectural design and prototyping of a DOE (Distributed Objects Everywhere - SunSoft's CORBA implementation) object service called Messaging Object Service (MOS). MOS clients register patterns of interest, make statements and send messages about entities (usually DOE objects). When a pattern is matched (using a prolog-like theorem prover), the registering client is notified, via an event channel, of the set of variable bindings that satisfied the pattern. Message scope, meta level control of matching operations and registration, parallelism, and communication with existing ToolTalk applications are other major aspects of MOS. MOS is multi-threaded, written in C++, and also make use of lex and yacc. Previous work included: the design and implementation (C++) of the core architecture of TTSnoop-2, a debugging, monitoring and learning aid for the development of ToolTalk aware applications; development of the organization and content of the ToolTalk training class, with a primary emphasis on internals and advanced programming techniques. Additional responsibilities included ToolTalk maintenance, and assisting developers in their use of ToolTalk. Received SunSoft "Technology Marketing Excellence Award". Allen-Bradley Company / A Subsidiary of Rockwell International, Milwaukee, WI, Advanced Technology Development, Senior Project Engineer, 1980 to Feb. 1993. Dec. 1991 to Feb. 1993 Activities involved creation of ways to easily build distributed systems from heterogeneous collections of stand-alone programs. (This was a twist on my earlier work with distributed object systems and blackboard architectures.) Emphasis was on the management and generalization of operating system supplied mechanisms for interprocess communication. The work was being done for Windows (3.x, NT, using C++), as this is an environment familiar to many in the automation field. Seven thrusts were underway: Characterization of abstractions for interprocess communication; development of Windows based template programming for these abstractions; creation of Object Linking and Embedding and Dynamic Data Exchange underpinnings; interactions with real time components (Intels iRMX operating system); event driven Windows and iRMX jobs and tasks; connections of this system to the distributed C++, CLOS and Smalltalk object systems described below (with a bent towards OMG's ORB); and contract-net based long term strategic resource planning running in Windows to manage interprocess communication at the meta-level. July 1991 to Dec. 1991 Techniques for partitioning programs to run on parallel distributed hardware were investigated. This included both graph theoretic and heuristic approaches. I developed an approach that applied network flow algorithms to communication graphs. Also during this time, I architected a system for the operation of a distributed simulation facility. A grammar was created that allows networked users to define experimental setups and perform on-line data I/O via TCP/IP. Lex, Yacc and custom C++ code were developed to implement the system spread across five PC's, a Sun 3/60, and several Sparcstations. Oct. 1989 to July 1991 In order to deal with the heterogeneity of languages and computers present in complex networked systems, I created HDOS (Heterogeneous Distributed Object System). HDOS consists of distributed versions of C++, CLOS (Common Lisp Object System), and Smalltalk object oriented programming systems. The goal was to provide location transparency at the programming language level, i.e., objects that are remote are treated identically to those that are local (no explicit use of RPC for example). A common distributed object protocol, and specialized function and message dispatch facilities allow each of these software environments to transparently interoperate with one another across networks of heterogeneous computers (currently Sun4 & Sun3 UNIX platforms, Explorer & Symbolics Lisp machines, and IBM PCs running DOS and/or Windows). Issues included: object identification and referencing via proxies; internode function call and argument representation; automatic transparent dispatch of function and message calls; network transport protocols (TCP/IP, UDP, etc.); the extent of accommodation of non-pure object languages; the ramifications of fully generic functions; generalized query lookup/name services; and limitations due to language characteristics and semantic differences. (One of the most challenging aspects of the project was due to the static nature of the C++ language -- a preprocessor was constructed using Lex and C++, that automatically transforms regular C++ code into distributable C++.) The system is currently being used to develop distributed control system capabilities, with AI based reasoning running in CLOS on a Sparcstation, embedded control running in C++ on a PC, and a Smalltalk based user interface on another Sparcstation, all sharing information via the distributed object system. June 1988 to July 1991 To allow the integration of a wide variety of conventional and AI based problem solving approaches, I designed and implemented a distributed Blackboard architecture. This architecture provides support for many real-time control concerns such as interruptibility, data dependencies, resource contention, parallel & time- sliced operation (through thread mechanisms), event driven operations, and so on. Additionally, the architecture provides AI capabilities such as meta-level reasoning, first order logic theorem provers with instantiation control, etc., as well as lower level capabilities such as support for device drivers and I/O. Computation may occur in both process based and message based perspectives, and may be driven by a first order theorem prover that dynamically infers triggering events, by changes in demoned data or by arbitrary predicates. A broad set of foundation classes supplies the user with the large variety of thread control and data encapsulation paradigms needed to allow differing strategies to coexist and cooperate. The data server classes include support for concurrency control, data-driven programming, transparent I/O, timing, and recording. Capabilities provided by the activity (process) classes include support of interruptions/exceptions, multiple or single instantiations, selection of triggering mechanisms, scoped local, class, and global data sharing, and cyclic I/O. This system was written in Common Lisp and the Common Lisp Object System, running on TI-microExplorer Lisp machine, and Sun 3's and Sparcstations running Franz Allegro Common Lisp. June 1986 to June 1988 - assignment at Rockwell Science Center - Palo Alto, CA. I performed joint research, design and development of intelligent agent architectures to manage, support, and provide problem solving capabilities in real-time dynamic environments. The primary tool developed for this work was a blackboard architecture, written in Common Lisp on Symbolics computers. With this tool I developed data-driven inference systems using knowledge source triggers, as well as a system for the control of a lacquer coating process (used to help develop the blackboard architecture), and several graphical monitoring tools. I developed a subsystem to control an event based simulation of intelligent agents operating life- seeking robots on Mars. This system was responsible for simulating the parallelism inherent in multiple independent reasoners. It involved heavy interaction with the process and scheduling mechanisms of the Symbolics operating system. The approach manipulated process quantums and priorities, the scheduler wakeup interval, various system timers, and the operating system process queues to allow for minimum periods of sensory deprivation, and well as periods of omniscience. Additional research included decision-theoretic modeling (using influence diagrams) and simulation techniques and integration of intelligent software for advanced automation in the manufacturing and managerial aspects of factories. Jun. 1985 to June 1986 For automating the troubleshooting and repair of computer controls and machines with unknown configurations, I designed and developed experientially based, expert systems. Two expert system shells were implemented. The first was written in Interlisp-D and Loops (a precursor to the CLOS), and ran on a Xerox 1108 and/or 1186. This shell provided forward, backward, and opportunistic reasoning strategies, data- driven truth maintenance, graphical editing and monitoring of layered rulesets, and selectable certainty calculations. The second shell was written in Common Lisp running on an IBM PC, provided a compatible subset of the capabilities of the first shell, and used a compatible ruleset grammar. I then used these shells to develop rulesets for the troubleshooting and repair of numerically controlled machine tools (approximately 250 rules at the prototype level). I then ported these rulesets to the TI Personal Consultant shell for use in field service situations. Jan. 1984 to Jun. 1985 I designed and developed a recursive expert system utilizing both deep and shallow knowledge and multiple methodologies, for the troubleshooting and repair of systems with known configurations. This system was written in Interlisp-D and Loops, and ran on a Xerox 1108 or 1186. The basic approach was model based, in which simulated system components' behaviors were compared with those of the device under consideration. Results of these comparisons guided searches through net- list-like hierarchical decompositions of the device model. Graphical depictions of the device and test equipment outputs (e.g., oscilloscope) were used to guide the user through test and repair procedures. This approach could successfully deal with many of the more difficult situations such as multiple faults, and short and open circuits. Oct. 1983 to Jan. 1984 So that the effect of network traffic on higher level protocols could be studied in a controlled manner, I designed and developed the software and hardware of a network traffic generator/monitor. This device maintained user-settable loadings on the network for analysis of information traffic. A Multibus based 68000 computer containing embedded software was used to control a custom ethernet board. The 68000 communicated with this board via shared memory and several parallel I/O ports. In addition to functions providing monitoring, logging, packet content generation, etc., the system provided adaptive compensation of network load using a closed loop PID algorithm with tunable parameters. All software was written in C, with the exception of a few speed critical sections in assembler. Dec. 1981 to Oct. 1983 I designed and implemented the system software, debugging and control computer, and interface hardware for a bit-sliced computer used for development of high performance digital control algorithms. A user interface front end, which could log operations, run scripts, etc., ran on a VAX and/or CPM80 machine and communicated asynchronously with the debugging and control computer. This computer was a Multibus based 68000, with an interface card containing shared memory and ports to control the bit slice machine. The embedded program on the 68000 provided operations on the bit-slice machine such as program downloads, conditional stepping, tracing, memory operations, etc. In addition to the programs for this portion, some microcode hardware design and development was performed for the bit- slice machine. I designed and implemented the meta-assembler used to program the bit-slice machine. I also created a configurable, block diagram based, continuous time simulator used to model control algorithms and the dynamic systems to which they were applied. All software was written in C using both native and cross compilers. July 1980 to Dec. 1981 I designed and developed a distributed system for computer image enhancement, management and object recognition, and subsequently used the system to develop image processing algorithms. The primary component ran on a VAX 11/780, and communicated via DECNET with display and imaging subsystems running on a PDP 11/60. Interesting features included: dynamic compilation and execution of logical expressions involving pixel surrounds; general purpose two-dimensional spatial filtering and frequency domain manipulation algorithms for gray-scale images; and automatic logging and reduction of experimental sessions. The system was written primarily in C, with some FORTRAN used for calls to a graphical subroutine package written in MORTRAN. VAX and PDP assembler were used for device drivers. Secondary responsibilities included Programming languages; operating systems; networking; computer graphics; structured software design and analysis methods; software and hardware acquisition and modification; serving on the Rockwell International Artificial Intelligence Technical Panel; investigation and assessment of artificial intelligence and expert systems hardware and software; formulation of directions for applying artificial intelligence and object oriented technologies to products and services; equipment evaluation and selection; evaluation of technological aspects of companies. Lexicon Incorporated, Waltham, MA, Electronic Test Technologist, Summer and Fall 1979 Responsibilities were testing, repair and calibration of studio quality digital audio delay processors. This included both analog and digital electronics work. Boston University Medical School, Boston, MA, Designer, Summer 1979 The software and hardware of a microprocessor based cell counter were designed. This system was based on the 6502 processor, and was written in assembler on an AIM 65. Ford Motor Company, Allen Park, MI, Advanced Electronic Engine Control Group, Engineer in Training, Summer 1978 I designed and used hardware and software for determining temperature sensor transient response. I wrote a specification of transient response nomenclature for use in the division, and designed and built real-time interrupt hardware and corresponding software device drivers for Hewlett- Packard minicomputers. Other ----- I enjoy experimenting with computer software and electronic hardware away from my work environment. This interest has taken me through the 'from scratch' construction of several computers (6809, Z80, 68000, 80186, including a multiprocessing version), telephone and radio modems, EPROM programmers, a/d's, d/a's, serial and parallel I/O, radios, gizmos, etc., and the associated software drivers, operating system components (e.g., BIOS) and development software. My current home computer system consists of multiple Windows XP systems networked with both wire and 802.11b/g I develop windows applications primarily using Microsoft Visual C++, C#, and Java/Swing. Publications (external) ----------------------- Saund, E., Fleet, D., Larner, D, and Mahoney, J.; "Perceptually Supported Image Editing of Text and Graphics," ACM Transactions on Graphics: Proceedings of ACM SIGGRAPH 2004, V. 23, No. 3, August, 2004. Saund, E., Fleet, D., Larner, D., and Mahoney, J.; "Perceptually-Supported Image Editing of Text and Graphics," Proc. UIST '03 (ACM Symposium on User Interface Software and Technology) Saund, E., Fleet, D., Mahoney, J., and Larner, D.; "Rough and Degraded Document Interpretation by Perceptual Organization," Proc. SDIUT '2003 (Symposium on Document Image Understanding Technology), Saund, E., Mahoney, J., Fleet, D.J., Larner, D. and Lank, E. Perceptual organization as a foundation for intelligent sketch editing. AAAI Spring Symp. on Sketch Understanding, March 2002, Stanford University Saund, E., Mahoney, J., Larner, D., and Fleet, D.J. (2001) Perceptual organization as a foundation for graphics recognition. IAPR International Workshop on Graphics Recognition, Kingston, Canada Larner, D. "HTTP-NG Web Interfaces", see http://www.w3.org/TR/WD-HTTP-NG-interfaces Submitted as IETF draft-larner- nginterfaces-00.txt. Larner, D. "Migrating the Web Toward Distributed Objects", World Wide Web Journal, Volume 1, Issue 4, Fall 1996 Fertig, Reddy, Larner, et.al., "Flexible Environment For Conceptual Design, Geometric Modelling and Analysis, and Assembly Process Planning", ARPA Contract Number F33615-94-C-4426 Final Report, January 1997 Larner, D., "Distributed CLOS and C++ Objects", Proceedings of the RI Software Engineering Symposium, June 1991, (won best paper award) Larner, D., "Integrating Heterogeneous Object Systems in a Distributed Environment", Proceedings of the International Conference on Industrial and Engineering Applications of Artificial Intelligence and Expert Systems, June 1991 Larner, D., "A Distributed, Operating System Based, Blackboard Architecture for Real-Time Control", Proceedings of the International Conference on Industrial and Engineering Applications of Artificial Intelligence and Expert Systems, July 1990 Larner, D., "Factories, Objects, and Blackboards", AI Expert Magazine, Vol. 5, No. 4, April, 1990 Larner, D., "NC-Consultant, An Expert System for NC Machine Diagnosis", Proceedings of ASME International Computers in Engineering Conference, 1987 Larner, D., "Diagnostic Systems", The Sciences at Rockwell, #11, July 1986 Larner, D., "A Recursive Expert Troubleshooting System Utilizing General and Specific Knowledge", Proceedings of IEEE Conference on Artificial Intelligence Applications, 1985 Larner, D., "TSHOOT - A Recursive Expert Troubleshooting System", Masterscope, Vol. 1, No. 3, 1985 Publications (internal) ----------------------- Larner, D. "Schemer - A Systems View of Intelligent Agents", RPAL note, June 1987 Larner, D., "Generating Explanations in Expert Systems", A-B:CTD paper, 1987 Larner, D., "Synopsis of Knowledge Acquisition Techniques", A-B:CTD paper#1986-22, 1986 Larner, D., "Book Review: The Connection Machine by Hillis", Machine Intelligence News, Aug. 1986 Larner, D., "GASS - A Program Meta-Assembler with 'Individualized' Instruction Definition", A-B:CTD paper#1984-16, 1984 Larner, D.,Harwell, "A Digital Control Workstation", A-B:CTD paper#1984-15, 1983 CS Undergraduate Thesis: An intelligent graphic workstation was designed and implemented. This system was based on 6800 microprocessors, and provided stand-alone and remote operation. Mechanical Engineering Undergraduate Thesis: A ninth order dynamic model of a motorcycle was formulated and programmed in FORTRAN for simulation by computer. Patents ------- US Patent 6,457,792 : "Method for effecting actions over vertical surfaces" US Patent 6,367,902 : "Effector platform for performing actions over vertical surfaces" US Patent 6,367,901 : "System for effecting actions over vertical surfaces" US Patent 6,903,751 : "System and method for editing electronic images" US Patent 7,139,004 : "Method and apparatus to convert bitmapped images for use in a structured text/graphic editor" US Patent 7,136,082 : "Method and apparatus to convert digital ink images for use in a structured text/graphic editor" US Patent 7,093,202: "Method and system for interpreting imprecise object selection paths" Professional Affiliations ------------------------- Association for Computing Machinery Institute of Electrical and Electronic Engineers American Society of Mechanical Engineers Sigma Xi Scientific Research Society Misc. Experience ---------------- Busses - SPI, I2C, 1-Wire, ISA, IEEE 696, Multibus, STD bus, IEEE 488, Knowledge Systems - KEE, Personal Consultant, Exsys, Xsys, InsightII Languages - Java, C++, C, C#, Lisp (many dialects), CLOS, Smalltalk, Pascal, Assembly (many), LOOPS, MRS, Refine, Modula, FORTRAN, Basic, PL/1, Forth, Prolog, ALGOL, VAL, APL Methodologies - Yourdon Structured Design, Yourdon Structured Analysis Operating Systems - Windows - XP, 2000, NT, ME, 98, etc. UNIX - Solaris, Linux, etc., MicroC/OS-II, TI-Explorer, MSDOS, Interlisp-D, Zetalisp, VMS, DESQview, Macintosh, CPM/80, Flex, CPM/68K, RSX11, RT11, TOPS20 Processors - PIC 16 and 18, 68000, 80x86, Z80, 8080/8085, 6809, 2900, 6502, 6800, 32032 Protocols - TCP/IP, AX.25, DECNET Misc. Education --------------- University of Wisconsin, Milwaukee, WI, Courses in: Data Base Organization & File Structure Switching and Automata Theory, 1985-86 Short Courses ------------- Distributed Systems, Network Communications, Machine Learning, Semantics of Object Oriented Programming, Qualitative Physics, Computer Vision, Robotics, Genetic Algorithms. Activities ---------- Other interests include: motorcycling, metalworking, woodworking, hiking, camping, amateur radio (WV9Z), technical reading, marksmanship, guitar, music. Other ----- U.S. Citizen References ---------- Prof. Mark Yim, University of Pennsylvania, yim@grasp.cis.upenn.edu (215) 898-5269 Prof. David Fleet, University of Toronto, fleet@cs.toronto.edu, (416) 946 8485 James Mahoney, (former Parc colleague) jim@jamesmahoney.com Ken Fertig, Rockwell Scientific, kfertig@rwsc.com