Post Job Free
Sign in

Software Engineer C#

Location:
The Hammocks, FL, 33186
Posted:
June 21, 2024

Contact this candidate

Resume:

West Palm Beach FL ***** David MacRae 215-***-****

OVERVIEW:

With over 30 years of experience as an Software Engineer, I bring extensive expertise in C++,

Python, C development, coupled with a solid understanding of design patterns including Factory, Singleton,

Observer, and Decorator. Proficient in crafting multithreaded applications, thoroughly skilled in networking apllcations such as TCP/IP, HTTP and Websocketing, adept at applying object-oriented programming concepts, and experienced in Agile methodologies. Skilled in software testing using tools such as GDB and Valgrind, conducting thorough code reviews, and contributing to requirements specification. My background includes working with Real-Time Operating Systems (RTOS), proficiency in low-level assembly programming, and utilizing essential tools like Git, Eclipse, and Visual Studio. I have developed software industrial automation systema with impeccable code quality, successfully bringing projects to fruition.

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

25 years of C++11/14/17 using the STL, Boost, MFC, and ATL class libraries

3 years in C# using WPF, WinForms, WCF and Microservices

Other languages: C, Java, 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, GIT, Jira and Jenkins and other source code control systems

TECHNICAL SKILLS:

O/S : 32/64bit Windows, UNIX LINUX/Solaris/AIX

Languages : C/C++, C#, VB, VBA, 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, Linux, COM, CLR, DCOM, DirectX, Sockets, OpenGL, Xwindows

Tompkins Inc, Raleigh NC Dec 2023 – Present

Software Engineer (employee, remote)

Software for warehouse automation

Interface with PLCs using C++

Dematic Corp, Minneapolis MN Aug 2022 – Jun 2023

Software Engineer (employee, remote)

Software for warehouse automation

Rockwell Automation, Cleveland OH Mar 2022 – Aug 2022

Software Engineer (contractor, remote)

Control software for managing PLCs

Comscope, Minneapolis MN Aug 2021 – Feb 2022

Software Engineer (contractor, remote)

Firmware engineer working in C and C++, developing a propritary communications protocol.

Control software for the embedded system written in C#

ADT, Philadelphia PA Oct 2020 – Apr 2021

Software Engineer (contractor, remote)

This division of ADT makes Home Security System

Firmware engineer for an embedded Linux system using C++/14.

Primarily worked on the communications between the box and a remote Internet server

TCS/Travelport, Atlanta, GA Sep 2017 – Jan 2020

Software Engineer (contractor)

Travelport makes systems for travel agents. TCS is one of the world’s largest consulting companies

Wrote a full-featured editor in C#/WPF for a scripting language

Updated the scripting compiler/runtime written in C++. Added new features.

Wrote a host communication program in C#/WCF

FreedomPay, Radnor, PA June 2015 – April 2016

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 March 2014 – March 2015

Software Engineer (contractor, remote)

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, Lawrenceville, NJ June 2012 – Nov 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 June 2012 – April 2013

Senior Software Engineer

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, New York, NY Sep 2011 – May 2012

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 Oct 2010 – June 2011

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 Dec 2009 – Oct 2010

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 databases.

C++ applications developed using GCC, GDB and Eclipse

JAI Pulnix, San Jose, California May 2007 – Sep 2009

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 Systems, Burlington, Ontario June 1992 – Jan 2004

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 Oct 1988 – June 1992

Engineering Director

Noesis made imaging software and applications used on UNIX systems.

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 May 1988 – Oct 1988

Software Engineer

Eicon builds networking system. This group was making a Postscript printer

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 Oct 1981 – May 1988

Software Engineer / Product Manager

Matrox builds special-purpose graphics and imaging hardware

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 July 1980 – Oct 1981

Software Engineer

This division built Word Processors on Z8080 systems

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:

University of Quebec at Montreal, BSC in Math, minor in CS



Contact this candidate