David S. Acker
soldacker@yahoo.com
Phone number and home address available on request.
Software Engineer
Objective:
To achieve a challenging position developing innovative technology.
Software Engineer - 3/2006 - Present
Lead developer of wireless mesh software based on embedded Linux. Responsibilities include:
- User space daemon implementing proprietary routing protocol.
- Custom embedded Linux user space environment
-
Kernel space development including:
- device drivers for 802.11b radios and 802.11b/g/a radios
- raw socket and kernel socket buffer enhancements
- patches to support various off the shelf and custom embedded systems
Software Engineer - 1/2005 - 3/2006
Responsibilities include software design and development for a radio controlled vehicle system. This includes:
- Lead developer for the Digital RC Desktop, a Java based GUI that communicates over USB to a serial port to configure settings, save settings, and update firmware on the embedded products. The Digital RC Desktop will also collect statistics and present them in a graphical format. Made several fixes to RxTx (http://www.rxtx.org/), an open source library for communicating with serial ports from Java. These fixes were accepted by the project maintainer and are now part of the standard release.
- Lead developer of an end user registration system based on PHP and MySQL.
- Lead maintainer of C code for a USB to serial port device's firmware and its Windows Device Drivers.
- Supporting developer of C code on the Sensor (hand held transceiver) and vehicle transceiver platforms that each contain an embedded CPU, little RAM/ROM, and a stripped down operating system.
InfiniCon Systems, Inc. (later SilverStorm Technologies, now QLogic, Inc.) - King of Prussia, PA
12/2000 - 1/2005
http://www.qlogic.com/Products/HPC_products_landingpage.aspx
Technical Lead Engineer - 3/2004 - 1/2005
Team Lead - 1/2002 - 3/2004
Technical Lead Engineer for Fabric Manager Group. Responsibilities included software design and development for the group and management, scheduling, and reviews for 3 - 4 developers. All software was written in C/C++ unless otherwise noted. Details about the products are available at http://www.qlogic.com/Products/HPC_products_infibandswitchfabricsolutions.aspx. Group responsibilities included:
- VxWorks firmware for InfiniView Fabric Manager (IFM) running on various ICS InfiniBand switches including InfinIO 7000, 3000, 2000, and 9000. All devices run on MIPS based processors. IFM runs several InfiniBand services including: a Subnet Manager for configuing the InfiniBand fabric, a Subnet Administration service to support fabric discovery, a Baseboard Manager to provide hardware information, a Performance Manager to provide port and node level performance information, and a Fabric Executive to support out-of-band LAN access.
- Linux and Windows applications and libraries for InfiniView Fabric Manager (IFM). These applications and libraries provide all of the functionality of the embedded IFM on host platforms running on IA32, IA64, and AMD64.
- Java application software for InfiniView Fabric Viewer (IFV). IFV provides a graphics user interface to the InfiniBand fabric. It allows the user to configure the fabric and view performance information.
Areas of focus included: scaling to 20,000 node fabrics and dynamic routing techniques.
Technical Lead Engineer for Ethernet Software group. Responsibilities included software design and development for the group and management, scheduling, and reviews for 3 - 4 developers. All software was written in C/C++ unless otherwise noted. Details of the products mentioned are available at http://www.qlogic.com/Products/HPC_products_infibandswitchesmultifabric.aspx. Group responsibilities include:
- VxWorks firmware for Virtual Ethernet Exchange (VEx), an InfiniBand to Ethernet bridge device using a MIPS processor. The VEx bridges two 4X InfiniBand links (10 gigabits per second) to three gigabit ethernet links which can be shared by multiple servers. The VEx supports several advanced features including Jumbo Frames, Ethernet Aggregation, and TCP/IP Checksum Offload.
- Network device drivers implementing InfiniNIC protocol for Linux and Windows 2000/XP/2003 on IA32, IA64, and AMD64 platforms. These device drivers communicate with VEx line cards over InfiniBand using the InfiniNIC protocol.
- Support for Internet Protocol over InfiniBand network device drivers for Linux and Windows.
- Support for Fabric Discovery device driver on Linux.
Other Technical Lead Engineer responsibilities included working with InfiniCon's InfiniBand Plugfest Team for the November 2002 and June 2003 Plugfests. I attended the June 2003 Plugfest. At the Plugfest compliance testing is done by the InfiniBand Trade Association to allow equipment to be listed on the Integrators list. All of InfiniCon's equipment that was sent to the June Plugfest was listed on the Integrator's list. I also have been the engineering point of contact for several InfiniCon customers and partners.
Software Engineer - 12/2000 - 1/2002
Software Engineer in Ethernet Group. Responsibilities included creation of managment and control firmware for VEx line card running under VxWorks on a MIPS based processor. The software had to handle:
- Connection establishment and managment through InfiniNIC and Remote Network Device Interface Specification (RNDIS) protocols
- Configuring the data path engine. This included connecting a host to a Virtual NIC and configuring that Virtual NIC onto an Ethernet port or aggregration of ports.
- Providing a Media Access Control (MAC) address allocation algorithm that allows multiple servers to share individual ethernet ports but have unique MAC addresses. MAC addresseses for a given host are preserved between usages.
- Interfacing to an embedded database to store configuration information
- User updates through a command line and web based interface.
Real Media, Inc. (now 24/7 RealMedia, Inc.) - Fort Washington, PA - http://www.247realmedia.com/
Software Engineer - 5/2000 - 12/2000:
Part of team responsible for banner advertising delivery and tracking software, Open AdStream. All software was written in C++, shell scripts on Unix and Linux systems, or batch files on Windows systems. Details about the product are available at http://www.247realmedia.com/EN-US/us/open-ad-stream.html. Responsibilities included:
- Portability issues, including ports of code and the build system to Linux, Solaris, Windows NT 4, Windows 2000, IRIX, FreeBSD, and BSDi
- Maintenance of code involving the user interface and database access. This code was used to configure what advertising campaigns would be run and collect and present statistics about the campaigns. It included a CGI web interface, overnight statistics processing applications, database access code for multiple database vendors, and support for interpreting a Real Media created webpage design language.
- Maintenance of code used for the installation of the product on all supported platforms. This included shell scripting on Unix and Linux platforms and Install Shield scripting on Windows platforms.
Software Engineer - 1/1999 - 5/2000
Developer in group designing Intelligent I/O (I2O) Adapters including fast Ethernet (IntelliNIC) and Fibre Channel RAID systems (IntelliFIBRE, IntelliRAID). All software was written in C unless otherwise noted. Chief responsibilites included:
- I2O Windows NT and Windows 2000 Network Device Interface Specification Interface (NDIS) Device Drivers for IntelliNIC, a multi-port, fast ethernet 66 Mhz, 64-bit PCI card. This card supported offloading the full TCP/IP stack from the host.
- I2O Windows NT and Windows 2000 Small Computer System Interface (SCSI) Port and Bus Device Drivers for IntelliFIBRE and IntelliRAID. IntelliFIBRE was a dual port fibre channel 66 Mhz, 64-bit PCI card. IntelliRAID included RAID 1+0 support. The drivers included a SCSI Port driver instead of the standard SCSI Miniport model and a full disk driver for disks discovered on the fibre channel SAN. The SCSI port driver avoided the SCSI miniport wrappers and implemented a full Windows Driver Model bus driver for fibre channel discovery, card initialization. Both drivers supported full Plug and Play and Power Managment, including spinning down unused disks and hotswap of disks and PCI cards. Both drivers support running in large memory mode and could support I/O on systems with over 4 gigabytes of memory.
- Installation application for Windows 2000 Drivers for IntelliFIBRE and IntelliRAID. This application was written in C++ using Microsoft Visual Studio. Windows 2000 Device Installation files (.inf files) were written for each driver. The application automated installing those drivers through the Windows Setup API and the Plug and Play Manager API. It also installed an Active-X control that would interface to an embedded web server running on the card.
- Microsoft Hardware Logo Program preparation for IntelliNIC and IntelliFIBRE. This included running Microsoft's Hardware Compatibility Tests and correcting all errors discovered. The IntelliFIBRE driver (renamed e-@ction Intelligent Fibre Channel Adapter) was submited to Windows Hardware Quality Labs and passed all required tests. It is listed on the Hardware Compatibility List under Storage/FibreChannel Adapter as a standard device and as a device that supports Large Memory (> 4 gigabytes) systems.
Montgomery Investment Technology, Inc. - Radnor, PA - http://www.fintools.com/
11/1995 - 1/1999
Project Manager - 11/1996 - 1/1999
Center of communication between the programming staff and various other parts of the firm including sales, marketing, and upper managment. Responsibilities included:
- Managing development and maintenance of all software projects.
- Lead developer of OPTIONS XL option valuation package. This software was available on multiple platforms including on Windows in Excel, Access, Lotus 1-2-3, a standalone application, and in Windows, Solaris, and Linux libraries. Base math libraries were written in C++. Standalone applications were written in Visual Basic. Spreadsheet code was written in Visual Basic for Applications on Excel and Access and LotusScript on Lotus 1-2-3. This software implemented several options valuation models including Black-Scholes and Binomial. More information is available at http://www.fintools.com/options_xl.html.
- Technical writing of manuals and creation of help files using RoboHelp.
- Technical support via phone, e-mail, and on-site support.
Software Engineer - 11/1995 - 11/1996
Responsibilities included:
- Conversion of Excel 4 Macros to C++ and Visual Basic for Applications wrappers.
- Conversion of Lotus Macros to C++ and Lotus Script wrappers.
- Conversion of various C math libraries to C++ to improve code size, memory usage, and calculation speed.
- System administration of the internal network of PCs and UNIX systems.
- Design and maintenance of the company's Internet sites and their web based software.
Technical Skills:
Languages:
C/C++, Java, PHP, SQL, Visual Basic, Visual Basic for Applications, Lotus Script, Delphi, Perl, HTML, x86 Assembler, Lisp, ML
Operating Systems:
Linux (various distributions, embedded, self built) kernel and user space; Microsoft Windows NT, 2000, XP, 2003 kernel and user space; VxWorks; Sun Solaris; DEC Ultrix; HP-UX; Compaq Tru64
Specifications:
Linux Kernel Networking, Win32 Driver Model (WDM), Windows Network Device Interface Specification (NDIS), Windows SCSI Port/Miniport, InfiniBand Architecture Specification, Intelligent I/O (I20) Architecture
Experience:
Linux Device Drivers including wired and wireless networking
Linux user space networking, raw sockets, posix threads
Windows Device Drivers including storage and network drivers
Windows Static and Dynamic Link Libraries (DLLs)
VxWorks Libraries
InfiniBand Software Stack
Java Native Interface Libraries
UNIX Static and Shared Libraries
Internet based sofware and database applications
Financial derivatives theory, stock option and bond valuation, portfolio analysis
Option pricing models: Black-Scholes, Binomial, Finite Difference
Windows/UNIX network administration
Education:
Undergraduate:
Bachelor of Science, Computer Science, Cum Laude, May 1999 - West Chester University, West Chester, PA.
Technical Courses:
| Calculus I, II, & III | Computer Science I (Pascal) & II (C++) |
| Applied Object Oriented Programming/C++ | Visual Basic Programming Lab |
| Data Structures | Computer Organization (x86 Assembly) |
| Operating Systems | Discrete Mathematics |
| Applied Statistics | Artificial Intelligence |
| User Interfaces (Motif, Java) | Database |
| Simulation | Compiler |
Graduate:
Masters of Science, Computer Engineering, Dec. 2008 - Villanova University, Villanova, PA.
GPA: 3.90
| Operating Systems and Programming | Embedded Systems Architecture |
| Object Oriented Software Construction | Computer Communication Networks |
| Microprocessors and Microcomputers | Operating Systems Concepts |
| Distributed Systems | |
Independent Study: "Load Balancing Algorithms in Distributed Systems"
Thesis: "A Dynamic Load Dispersion Algorithm for Load-Balancing in a Heterogeneous Grid System"
Continuing Education:
Windows Hardware Engineering Conference 2001, 2003, 2004.
Windows Developer (Win-Dev) Conference 2001.
Interests:
Swimming, playing drums, rock and jazz music