Garth Brown
gwbrown@slac.stanford.edu
46Willow St.
San Jose, CA 95110
408-904-8885
EXPERIENCE
SLAC National Accelerator Laboratory, Photon Controls, 2009 – Present
Software Engineer
- Implementing EPICS support for a wide range of devices including serial, USB, Modbus, Ethernet, and VME devices. Controls for analog and digital I/O, illumination, temperature control, vacuum devices, many others.
- Incorporating control devices into a large distributed system, including communicating with each other on electrical, control software, and GUI levels. Collaborating with experimenters to incorporate their equipment.
Lawrence Livermore National Laboratory, National Ignition Facility, 2003 – 2009
Software Engineer (285)
- Low level software for the control system of the world’s most powerful laser. Control of motors, vacuum systems, and high voltage pulsed power.
- Full software lifecycle, gathering requirements, design documents and review, object and data design, API design, coding, testing, user support.
- Coding in Ada, C++, and Java for embedded controllers in a large, distributed control system.
- Close collaboration with users and hardware development on hardware-software interaction and features.
- Developed code with tools including AccuRev, Eclipse, and Artisan Studio.
- Department of Energy Q clearance
2002-2003 Software consultant (C++ programming), algebra tutor, and PC help and repair person.
Chameleon Systems, San Jose, CA 2001
Software Design Engineer, compiler and runtime team
- Developed software using a combination of C, C++, and ARC RISC assembly. Systems used included Solaris, WindowsNT/2000, VxWorks, and raw ARC processor.
- Developed, tested, debugged, documented, and tuned a JTAG based gdb stub for multiple-processor remote debugging. Extended QA test routines to verify functionality, stability, and reentrancy.
- Established standard boot time settings and implemented in C and ARC assembly reference design for hardware auto-detection and configuration section of BSP for prototyping board. Worked with hardware, systems, and applications engineers on specifications. Wrote associated requirements and design documents, worked with tech writer on user documentation.
- Added software workarounds for hardware bugs to firmware and debug interface.
eMation (now Axeda), Mansfield, MA 2000 to 2001
Software Engineer, connector/kernel team
- Designed and ported web visualization and device Internet enabling tools for VxWorks, WindowsNT, and Linux using C++.
- Performed OOA/OOD for modular software components, adding DCOM and SOAP remote interfaces.
- Developed loadable modules using C++, including hooks for XML based SOAP and SAX standards, rpc, and OPC. Migrated code from a proprietary format to XML object representations.
- Implemented VxWorks portability/OS abstraction layer with time, threading, TCP/IP networking, synchronization. Used ANSI, POSIX, SOCKS, and VxWorks specific functions and types. Wrote a short guide to writing portable code, assisted in migration and porting of existing code.
- Resolved VxWorks specific issues, such mutexes, and priority levels ("the Mars Pathfinder problems") using system profiling, tracing, and debugging tools from WindRiver and RTI. Determined appropriate task priorities for improving system performance and avoiding live-lock issues. Fixed race conditions.
Boston University Electronics Design Facility, Boston, MA 1997 to 2000
Student Employee
- Developed software interface to a VME based test fixture as part of the ATLAS Muon detector for CERN. Designed and implemented GUI based software for ASIC and PCB testing, debugging, data transfer and logging, test scripting, and chip configuration. C++ class and interface design. Developed IEEE 1149.1 (JTAG) interface software. Used National Instruments software libraries for VME bus access and debugging.
- Collaborated on defining interface specifications between software, PCB, and ASIC designers. Used bus and logic analyzers for verification and debugging.
- Laid out circuit boards in Mentor Graphics. Contracted with manufacturers and BU machine shop for small production runs. Ordered components. Hot air soldering of small surface mount parts. Instruments included an experimental MRI device, a neural signal amplifier, and high voltage boards for the ATLAS Muon detector.
SKILLS SUMMARY
Project Types: Large Scale Distributed Control Systems, Parallel/distributed/networked systems, Firmware, Embedded Software, Software Interface for Hardware Debugging/Configuration, OS Abstraction
Languages: Ada, Java, C++, C
Tools: EPICS, Eclipse, Microsoft Visual Studio, MPI parallel/distributed development libraries, oscilloscopes, GPIB/VISA, emacs, gcc, gdb
Operating Systems: VxWorks, RTEMS, UNIX variants, Windows 9X/NT/2000, DOS
Additional Training: Design Patterns, Embedded Linux, EPICS asyn
From 1993 to 1997 I worked as a professional geologist. Geology did not offer the challenge I had hoped for to my math, science, and technology skills, or have many opportunities for creativity and design. After much consideration and consultation, I decided to get an MS in computer systems engineering. The LEAP program at Boston University enabled me to complete a Master’s degree without needing a second Bachelor’s degree. Although I originally had a hardware focus, I found through coursework and my work with the BU Electronics Design Facility that I enjoyed working with software and networks.
EDUCATION
M.S. Computer Systems Engineering, Boston University, 2001
Software and Networking concentrations
Thesis: Optimization of Applications in a Cluster Computing Environment
Selected Coursework:
Interconnection Networks for Multicomputers, Software System Design (real-time UML/Booch), Advanced Data Structures in Java, Data Network Communication, Microprocessors, Network Computing, Discrete Stochastic Modeling, Computer Architecture
B.A. Geology HAVERFORD COLLEGE, Haverford, PA, 1993