David MacRae
Sewell NJ *****
Phone 215-***-****
ac02lg@r.postjobfree.com
SUMMARY:
Design, implementation and maintenance of large code bases over the full SDLC
Architectural and component interface design
Proven ability to deliver production systems on schedule
Expert understanding of C++11/14 using the STL, Boost, MFC, and ATL class libraries
Other languages: C, Java, C#, VB, Javascript, Python, Lua, UNIX scripting, assembler
Extensive multithreading, multiprocessing and networking experience
Deep low-level knowledge of Windows, including Win32, COM, DLLs, and kernel
Real-time embedded applications working with naked hardware, QNIX and Linux
Team player, experience in management of small groups.
Service and client applications in both Windows and Linux
Telephony applications using TCP/IP, VOIP and SIP
Experienced with Agile development, Jira, and assorted source code control systems
SKILLS:
O/S: 32/64bit Windows, UNIX LINUX/Solaris/AIX
Languages: C/C++, VB, VBA, C#, Java, Shell scripts, various assemblers, Javascript
Device drivers: Win32, UNIX, DOS
Application Frameworks: MFC, ATL, .NET, STL, Boost, XSD, XML, SQL, HTML, Tibco, STS, Maven
O/S APIs: Win32, UNIX, COM, CLR, DCOM, DirectX, Sockets, OpenGL, XWindows
EXPERIENCE:
Note: all my development work since 1992 has been in C++ with occasional exceptions explicitly noted
South Jersey Bridge Club, Cherry Hill NJ 4/16-Present
Manager (administration, finance and game director)
Implemented a new teaching program to get new members
Added a popular supper club game
FreedomPay, Radnor PA 6/15-4/16
Software Engineer (contractor)
FreedomPay makes software to connect merchants to banks for credit card payment
Built a TCP/IP interface to Oracle Opera for hotel and resort management
Supports thousands of simultaneous terminals
Written in C#.Net using WCF
American Contract Bridge League, Horn Lake MS 3/14-3/15
Software Engineer (contractor)
The ACBL is the North American headquarters for duplicate bridge players
Built a Windows app interfacing with a legacy PASCAL program to score games. Written in C++ and C#.
Built an XML generator which shows the contents of game files.
Included various ancillary functions such as Windows services, FTP, unzipping, etc.
SiriusXM, Laurenceville, NJ 6/12-11/13
Software Engineer (contractor)
SiriusXM builds streaming radio from satellite and over Internet.
Built a TCP/IP relay to fetch metadata from a variety of sources and send it downstream for Internet radio
Triveni Digital, Princeton Junction, NJ 6/12-4/13
Triveni builds software to monitor digital image streams for cable companies.
Worked on drivers for low-level software that interfaces with the image streaming hardware.
Ported some of it from Windows to LINUX.
Barclays Capital, NewYork, NY 9/11-5/12
Software Engineer in Derivative Pricing (contractor)
Barclays Capital is the investment bank arm of Barclays Bank. This group prices derivatives.
Worked on communications between an instrument-pricing server and a client application, server-side in Java and the client side in C++.
Client side uses COM to provide data to Excel apps written in VBA and an internal functional language.
Made modifications to the pricing server job management software in Java.
Developed facilities in Java for automatic comparison of the output of various pricing engines.
IPC, Fairfield CT 10/10-6/11
Software Engineer in Telephony Applications (contractor)
IPC builds specialized intelligent phone systems for use by financial traders
Built a SIP (internet telephony) server interfacing with MS Communicator using sockets,STL, XML and HTML.
Interfaced with the phone system using SQL, Tibrv and Winsockets.
Wrote a multithreaded diagnostic program using SQL and sockets.
Windows/GUI development using WinAPI, MFC and STL.
Extensive use of Windows APIs to connect to Internet Explorer and to control its operation, transparently changing operation based on the version of IE installed.
Maintained server-side communications using TIBCO.
Bloomberg, New York, New York 12/09-10/10
Software Engineer in Equities Estimates (contractor)
Bloomberg builds high-speed terminals for use in financial systems, especially trading
Re-wrote an app written in Javascript and C++, achieving speed improvements of two orders of magnitude.
UI development in Javascript
Re-designed a data base information retrieval service doubling throughput.
Extensive database work using STL and proprietary data bases.
C++ applications developed using GCC, GDB and Eclipse
JAI Pulnix, San Jose, California 5/07-9/09
Senior Software Engineer / Team Leader (contractor)
JAI is a manufacturer of specialized cameras for machine vision and ORT (Open Road Tolling) applications
Designed and implemented a library of OCR and template matching functions for use in automatic license plate reading applications, currently used around the world.
Innovative driver-like design makes extensions and maintenance easy.
Implemented as a set of co-operating DLLs loaded as required.
Written in Portable C++, running on 32 and 64 bit Windows, Linux and embedded systems.
Multi-threaded for speed.
Designed/implemented teaching and testing tools for use in localizing the library to a given set of license plates. Written in C#/Winforms with VBA and Matlab.
Implemented applications and system software in C on smart cameras running LINUX.
Most development in VS2005/8 with some cross-platform work in Linux using GCC and Eclipse.Xiris Automation Inc., Burlington, ON 6/92-12/06
FLIR Systems Inc., Seattle WA (companies inter-related)
Software Manager
Xiris is a machine vision company building for automatic inspection of part in the automotive, electronics and DVD industries. FLIR builds high-res Infrared cameras.
Designed and implemented the world’s first VBX machine vision library, written in C++
Completely re-designed the library to move to ActiveX, MFC and Win32
Managed a group of 4 engineers and provided architectural specifications for the entire project
Designed specialized machine vision algorithms for automotive and CD/DVD inspection.
Migrated the algorithmic code from MFC to ATL/COM, thus creating a client/server architecture with multithreading/multiprocessing support and OS independence.
Several real-time applications requiring multi-threading, multi-processing and networking.
Embedded applications in Windows NT/2000 for real-time industrial automation.
Wrote extensive template libraries to support COM
Designed, maintained and wrote hundreds of thousands of lines of lean code
Designed and implemented several GUIs built on the toolkit using MFC, ATL and VB
All code developed in various versions of Visual C++, especially VC6.
Optimized the toolkit using MMX and SSSE.
Wrote a Windows NT driver
Noesis, Montreal, QC 10/88-6/92
Noesis made imaging software and applications used on UNIX systems.
Engineering Director
Managed a group of 4-6 engineers
Interactive Image processing package primarily for bio-medical applications
Extensive customer support work
The Package was written using X/Motif under UNIX. My main programming task was to write an interface layer to allow a Motif app to run under Win32 unchanged.
Wrote an interpreter in C as to be used as a macro language for the package. The language interpreted was very similar to Javascript.
Eicon Networking, Montreal, QC 5/88-10/88
Eicon builds networking system. This group was making a Postscript printer
Software Engineer
Embedded work using Motorola 68000 to make a Postscript printer
Worked on the fonts and image engine
Completely re-designed the image engine, gaining 30 times speed improvement
Matrox Electronics, Montreal, QC 10/81-5/88
Matrox builds special-purpose graphics and imaging hardware
Software Engineer
Product Manager
Embedded programming for assorted target systems on x86
DOS drivers written in 8088 assembler
UNIX driver for a frame grabber
3 years as Product Manager in Marketing for imaging products
Wrote Machine Vision libraries for various board-level products
Extensive design work in OpenGL to create a Silicon Graphics graphics workstation
Philips, Montreal, QC 7/80-10/81
This division built Word Processors on Z8080 systems
Software Engineer
Maintained a compiler, making extensive modifications
Wrote a linker for a Z80 Macro assembler
System ‘guru’ for a pair of VAXes running BSD 4.2 UNIX
EDUCATION:
Université du Québec à Montréal 1981
BSC in Math/Computer Science