John M. Passaniti (585) 244-8496 3003 Elmwood Avenue john.passaniti@gmail.com Rochester, NY 14618 Profile: Software engineer with 22 years of hands-on experience in embedded systems, network connectivity, user interfaces, software tools, and testing. Wide breadth of practical knowledge in languages, platforms, tools, and development methodologies gives confidence in work and allows learning new technologies quickly. Has a demonstrated history of technical leadership and innovative ideas. Skills: * Languages: C , C++, C#, Java, Forth, Lua, JavaScript, Perl, Ruby, Assembly, VHDL, et al. * Processors: ARM, x86, MicroBlaze, ColdFire, MIPS, HC08, 8051, Z80 * Target O.S.: Linux (kernel level), Windows, VxWorks, QNX, none ("bare metal") * Web Tech.: DHTML, AJAX, REST, server side web services, Apache, IIS * Protocols: Ethernet, TCP/IP, SNMP, HTTP, ZeroConf, MIDI, et al. * Tools: version control (CVS, SVN, git), make, Microsoft Project/Excel, et al. * Software: OOA/D, design patterns, TDD, refactoring, documentation, code reviews * Hardware: schematics, digital design, using oscilloscopes and logic/protocol analyzers * Project: requirements elicitation, risk assessment, estimation, tracking, reporting * Team: agile development methodologies, technical mentoring Work Experience and Accomplishments: 1997 - 2009: Lab X Technologies, LLC (Software Design Engineer) Lab X provides audio/video engineering design services to the Professional, Commercial, and Home Theatre markets. My primary role was to develop software (firmware and supporting applications) for client's products. This work spanned the full product lifecycle: up-front product design and requirements elicitation with the client, risk analysis and project estimation for Lab X, software development (design, implementation, testing, documentation, and delivery), ongoing maintenance and advanced end-user support. * Developed user interface description language and object-oriented framework (in C) that replaced unstructured ad hoc code in client's system. Result was much-improved maintainability, extensibility, and testability without moving from language client was comfortable using. * Working both alone and as part of team, created entire product line of networked digital audio products for client. Work spanned systems from 8-bit microcontrollers to 32-bit embedded Linux to Windows desktops under .NET. Work also included assisting client's engineering staff on hardware design, bring-up, and debugging. * As part of team, developed system software and Forth-based testing framework for an exploratory prototype of on-stage mixer product for client. System allowed scripted testing as well as interactive debugging of C code. * As part of team, developed networked digital audio recorder product for client. Responsibilities included working with client to define product features and requirements, bootloader and Linux device drivers, ZeroConf support, and supporting software tools used for development and testing. * Developed distributed multiprocessor environmental monitoring and control product for client. System featured sophisticated web-based user interface based on DHTML/AJAX and innovative future-proof communications and discovery protocols to the sense/control modules. * Research and evaluation of platforms, languages, tools, and development methodologies for both client and internal projects. Often took on role of training staff in the use of new technologies. * Responsible for implementing and supporting many process improvements (such as version control, documentation tools, issue tracking, project estimation standards, code metrics, and project progress tracking). * Designed and conducted technical interviews to assess skills of candidates for software engineering positions. 1999 - 2001: Performance Technologies, Inc. (Software Engineer) Performance Technologies manufactures embedded system platforms and telecommunications equipment. My work there was as part of the software group working on Ethernet switching products for both enterprise and custom embedded applications, focused on user and management/control interfaces. * Completed web-based user-interface for enterprise-class Ethernet switch. Developed patterns used for role-based security and ensuring consistent views of configuration data regardless of interface (web, command line, SNMP, scripting API). * Promoted use of--and later incorporated--scripting language (Lua) into carrier-grade embedded Ethernet switch. This idea provided unique programmability for systems integrators and was a differentiating advantage over competitive products. * Developed process and standards for code reviews and supported training software engineering staff in object orientation and the Feature Driven Design methodology. * Designed and conducted technical interviews to assess skills of candidates for software engineering positions. 1990 - 1999: Applied Research and Technology, Inc. (Senior Software Engineer) Applied Research and Technology manufactures professional audio signal processing equipment. Most of my work there was in creating the firmware that controlled the company's analog and DSP hardware. Work ranged from initial product design requirements elicitation, hardware and software design, device drivers, application code, working with beta testers, end-user documentation, ongoing maintenance, and advanced end-user support. * Maintained, improved, and extended "legacy" assembly-language code in popular product. This allowed extending the product's life as well as differentiating into additional products. * Moved company to C-based development and implemented foundation code for subsequent audio effects processors. Foundation code provided event-driven application model, sophisticated real-time MIDI control, interfaces to analog and DSP hardware, and user interface abstractions that eased development. * Coordinated efforts of multiple software developers by designing APIs for functional areas, conducting informal code reviews, and tracking code metrics. * Researched technologies, hardware/software requirements, and development risks used to evaluate new product ideas. Implemented and analyzed prototypes of algorithms, user interfaces, and protocols as part of this. * Designed and conducted technical interviews to assess skills of candidates for software engineering positions. 1988 - 1989: Rochester Software Technologies, Inc. (Programmer) Rochester Software Technologies provides customized business software and support services. * Completed and improved design of touchscreen-driven videodisc "courseware" system. Work included debugging device drivers, writing application code, and providing system documentation. * Designed interactive application mock-ups to help test user interface ideas and help determine application requirements. Formal Education 1983 - 1985: Monroe Community College (was in Data Processing two-year program) Professional references available on request.