David A. Clark, B. A. Sc., M. A. Sc.
Vancouver, B. C.
V6J 1S8
Telephone(h): 778-***-****
********@*******.***
e mail:
SUMMARY: Senior Embedded Software/Firmware Engineer seeking permanent or contract role.
KEY SKILLS:
18 years experience using multi threading and C/C++
•
13 years experience using Linux
•
6 years experience with embedded software
•
5 years experience with ARM7/9 and Motorola/Freescale processors
•
5 years experience with GPIO, I2C, SPI, UART, ADC, RS 485
•
2 years experience with BSP/u boot
•
3 years experience using Objective C
•
4 years experience using Java/J2EE/JDBC/XML/SQL/Servlets
•
8 years experience with the Linux operating system and GNU tool chain
•
6 years experience with the Windows operating system and Visual Studio
•
6 years experience with pSOS/VxWorks/embedded Linux RTOS
•
4 years experience using PL/SQL for MySQL, DB2, SQL Server and Oracle databases
•
10 years experience in enterprise server applications
•
7 years experience in distributed systems applications
•
8 years experience in protocol development including RTSP, HTTP and DICOM
•
7 years experience in hospital PACS/DICOM/HL7 development
•
3 years experience interfacing with Serial and Ethernet PLCs using Modbus and DNP3 Secure protocols
•
3 years experience with Perl/Python/Ruby
•
AVAILABILITY: 2 weeks notice required.
PROFESSIONAL EXPERIENCE:
Tantalus
August 2012 Present
Position: Senior Firmware Engineer
Development: Smart meters for the utility industry. Projects include the following:
Linux 2.6.33 kernel device driver development and updates
•
Integrity monitor and pulse counting applications
•
BSP/Bootloader
•
Environment: C, Perl, Python, GNU, Makefiles, ARM9 Atmel CAP9 processor, NAND flash, ADC, GPIO, SPI, UART, JFFS2/SquahsFS/UBIFS,
Mecurial, pthreads, Linux 2.6.33, Linux IPC, interrupts, pipes, message queues
Unication
December 2011 – August 2012
Position: Senior Embedded Protocols Software Designer
Development: Unication develops software and hardware for analog and digital handheld radios, repeaters, and base stations. At Unication I
have been assisting in the development of the following wireless protocols:
MPT1327
•
DMR
•
P25
•
Environment: C/C++, GNU toolchain, Makefiles, ARM processor, NAND flash, VisualDSP++, C, WinCVS, Analog Devices Blackfin AD6900 DSP,
MPT1327, P25, OpenSSL, AES 256 encryption
Dali Wireless
June 2011 – February 2012
Position: Senior Embedded Software Designer
Development: Dali Wireless makes digital repeaters to increase the capacity of wireless networks for the major carriers. At Dali I was
responsible for the embedded software design and development on Dali’s DRU and DAU product lines as well as SPI, GPIO, I2C Linux device
driver development.
Environment: Linux 2.6.27.8, C/C++, GPIO, I2C, UART, SPI, ADC, RAII, GNU toolchain, pthreads, Subversion, STL, VmWare, Makefiles, Ltib,
Phytek3250, ARM processor, u boot, PHP, NAND flash
Infoblox
August 2010 – June 2011
Position: Senior Software Engineer
Development: Distributed IF MAP Federation Client/Server modules and daemons based on a publish/subscribe design model.
Environment: Linux, C, Perl, Python, XML, gSOAP, SOA, gdb, Perforce, VmWare.
GE Energy Services
August 2009 – November 2010
Position: Contract Senior Embedded Software Engineer
Development: Assisted in development on GE Energy’s D400 and D.20 DNA. These devices are part of the GE Energy Substation
Management System.
Enabled VLAN support in the kernel and in their configuration
•
Added DNP 3.0 Secure and Pattern Control Block support to the GE D400 and D.20 DNA DCA/DPA applications.
•
Configured set up of MPC8313E board from Freescale running Linux on a PowerPC (platform for D.20 DNA)
•
Updated U Boot source for D.20 DNA configuration
•
Created and Updated U Boot environment script
•
JFFS2 and Ramdisk filesystems
•
NAND and NOR flash
•
Updated device tree block configuration
•
Developed a HDLC Linux device driver for the GE D400 and D.20 DNA product line
•
Developed Linux device driver for LM73 Temperature Sensor chip
•
Feature updates to DNP DCA/DPA embedded applications
•
Environment:
C/C++, Freescale MPC8313E, Embedded Linux 2.6.23, PowerPC, VmWare, DNP3 Secure, SCADA
Weir Jones Engineering Consultants
December 2008 June 2009
Position: Contract Software Engineer
Development: Designed and currently developing a 72 channel data acquisition and geoseismic event detection system for their oil and gas,
mining and government infrastructure clients.
Design of software components on the acquisition board and the main server
•
Development of the above named software components in Linux on a PC104 board and a desktop PC acting as a server.
•
Unit and integration testing
•
Design and development of the system’s configuration management and real time data viewer components.
•
Environment:
Automake, gdb, Eclipse, ARM, TI OAMP, Embedded Linux, C/C++, Linux IPC (Semaphores/Mutexes/Shared Memory), Sybase, XML, Xlib,
STL/Boost, TCP/IP, UDP/IP, RTSP, VmWare, MIPS, UML diagrams, design documentation and project scheduling and estimation
Wireless Detection
August 2008 – October 2008
Position: Senior Software Engineer
Development: Start up company in residential HVAC systems. Worked on design and development of Wireless Detection’s multi zone wireless
forced air heating and cooling system PC and embedded controller.
Environment:
Visual Studio, C++, STL/Boost, GUI, USB, Embedded Linux, ARM, Eclipse.
Zeugma Systems
August 2007 – August 2008
Telephone: 604-***-****
Position: Senior Software Engineer
Development: Start up company developing next generation class A routers. Assisted on development on Zeugma’s network management
system (NMS). Specifically I worked on the design and development of the following projects:
process redundancy for shutdowns and switchovers
•
configuration management
•
security daemon – AAA (authentication/authorization/accounting) username/password authentication for administrator users
•
scheduled tasks daemon
•
application discovery daemon
•
notification daemon
•
configuration management daemon
•
The processes were written in C/C++ with the UI portions done in Java Swing.
Environment:
MIPS, Embedded Linux, C/C++, VmWare, gdb, CVS, SOAP, web services, XML, Xerces, STL, OAMP, TCP/IP, UDP/IP
BC Biomedical
July 2006 – August 2007
Telephone: 604-***-****
Position: Senior Software Engineer
Development: Development on BC Biomedical’s existing PLIS (Provincial Lab Information System) web application. The PLIS web application
receives lab tests from around the province and allows medical personal to review the lab results online. The system is implemented using an
SQL Server database, COM+ C++ business tier, and Jscript, XML, CSS, XSLT for the viewer. Current development includes:
HL7 engine development
•
Development of a STS (Secure Token Service) SAML Token Authority using X509 and Username tokens and WS Trust Challenges
•
Development of the User Administration features of the PLIS web application.
•
Conversion of the business tier to web services using .NET 2.0/3.0, WSE 2.0/3.0, WCF.
•
Environment:
HL7, SQL Server 6.5/7.0, PL/SQL, COM+, C++, Jscript, CSS, WSD, XSLT, SOAP, HTTP, XML, C#/.NET, WSE 2.0/3.0, WCF, Secure Token
Service SAML token authentication using X509/Username tokens, WS Trust,
WS SecureConversation, WS Challenge.
IBM
February 2006 – May 2006
Telephone: 778-***-****
Position: Contract Senior Software Developer
Development: IBM’s Burnaby Pacific Development Center develops software for their HNS product (Health Networking System) which is a web
based UI that retrieves and updates patient records stored on an AIX server with a db2 database written in C++.
Developed new features in the IBM HSN C++ Server from customer specifications.
•
Software maintenance (bug fixes) in the IBM HNS C++ Server.
•
Developed design documents for new features and software maintenance items.
•
Enviroment:
GNU tool chain, HL7, AIX, C/C++, CGI, DB2, PL/SQL, HTML, XML, xldb, TCP/IP
Chartwell Technology Inc.
March 2005 – February 2006
Telephone: 604-***-****
Position: Senior Software Developer
Development: Chartwell’s Vancouver development office works on Chartwell’s internet poker client and server applications. While at Chartwell
the following was completed:
code optimizations to a Windows C++ client
•
redesigned the protocol software between the VC++ client and Java/J2EE server using OO design
•
lead the integration project with the Java Game Server and Chartwell’s flash client poker product.
•
developed servlets to respond to flash client HTTP request/responses using Resin and Tomcat web servers
•
code optimizations to the Java/J2EE game server and the web services components.
•
Environment:
MFC GUI application, Visual C++, CVS, Java/J2EE, JGroups, RMI, Eclipse, Toad, Tomcat, Resin, Servlets, SSL, Linux, PL/SQL, Oracle, TOAD,
TCP/IP, UDP/IP
Bycast Inc.
Sept 2002 – March 2005
Telephone: 604-***-**** Ext. 225
Position: Senior Software Developer
Development: Bycast Inc. develops high performance distributed storage solutions for fixed content assets based on the next generation grid
computing technology. Projects that have been completed include the following:
Designed and developed a medical imaging system 'Workflow Manager' (GUI and database) using VC++, MFC, SQL Server 7.0
•
Designed and developed a streaming video UI for the web using PHP, Javascript and HTML.
•
Implemented a set of HTTP client/server modules that implements OPTIONS, GET, POST, PUT, HEAD, and DELETE commands for
•
a distributed storage server written in C++ running on Linux using the façade design pattern.
Implemented a service module for HTTP connection pools
•
Developed a set of modules configuration management using the observer design pattern.
•
Assisted in developing a DICOM library and the following server modules for a distributed storage server written in C++ running on
•
Linux:
C ECHO SCU/SCP
•
C STORE SCU/SCP
•
Storage Commitment SCU/SCP
•
DICOM Query Retrieve SCP C MOVE and C FIND operations.
•
Environment:
GNU tool chain, PHP, Javascript, UML, CVS, TCP/IP, UDP/IP, TLS, SSL, HTTP, SOAP, MIME, DICOM, Perl, Ruby, Linux, C/C++, VC++ MFC
GUI application development, ERD and database design, PL/SQL, MySQL, SQL Server. Enterprise distributed fixed content secure storage
archive servers using asynchronous messaging architecture.
Pro Face INDE Electronics
October 2000 June 2002
Telephone: 604-***-**** Ext. 283
Position: Senior Software Developer
Development:
Assisted with development of a multi platform embedded HMI touch screen application that communicates with PLCs using Java UI
•
layer and a C/C++ communication layer on pSOS, WinCE, and Windows 2000/NT platforms.
Designed and developed a proprietary multi channel data streaming protocol using a distributed multi threaded client/server allowing
•
HMI applications to share data over a network using TCP/IP to other HMI applications and to their web client product.
Assisted in development of a Java client that communicates with the above mentioned proprietary protocol.
•
Redesigned the architecture of their embedded real time application communication software modules.
•
Environment:
PowerPC, Win NT, Win CE, pSOS, Java, JBuilder, Multi threaded C/C++, VC++ 6.0, eMbedded C++ 3.0, VSS, TCP/IP, UDP/IP,
•
Modbus, Zero copy sockets, CF Cards
PLCs: Omron, Siemens, Toyopuc, Mitsubishi
•
McKesson (formerly A. L. I. Technologies Inc.)
February 1997 October 2000
Telephone: 604-***-****
Position: Software Developer
Development:
PACS DICOM (Digital Imaging and Communications in Medicine) query retrieve client/server
•
RIMS report query server
•
DICOM image importer/sender
•
DICOM and Postscript print server
•
Assisted in the continuing development of a DICOM OEM library for NeXTStep, OpenSTeP, Solaris 2.4, VxWorks, pSOS, and Win NT.
•
Developed a multi threaded PACS web server using a Java client and a IIS VC++ server that retrieved patient information/images from
•
SQL Server/Oracle databases.
Environment:
SQL, Oracle, OpenSTeP, NeXTStep, Solaris 2.4,Win NT, VxWorks, Multi threaded, C/C++, Objective C, Java, JPEG, M JPEG, Unix, gdb,
PowerPC, pSOS, TCP/IP, UDP/IP, HTTP, PL/SQL, SQL Server
RADARSAT International
July 1995 February 1997
Telephone: 604-***-****
Position: Software Engineer
Development:
Created Win 3.1 GUI CD ROM/Exabyte tape auto loader for radar processed data formats.
•
Created a MS Access Quotation Tool linked to Maximizer and Macola to create proposals, orders, and invoices.
•
Created Bourne shell scripts to automatically extract data from the Canadian Space Agency database to an Order Tracking database
•
and an Archive database.
Created Product Transcription Request Ordering html pages using CGI and Perl scripts.
•
Environment:
Borland C++ 4.5, SCSI 2 devices, ASPI library, Access 2.0, SQL, ODBC, html, Win 3.11, Perl&Bourne shell, Unix, Solaris, CGI scripts.
University of British Columbia
Department of Electrical Engineering
Image/Radar Processing Laboratory
Dec. 1993 July 1995
Telephone: 604-***-****
Position: Scientific Programmer
Development:
Created X Window/Openwindows GUI applications for an interferometric and a polarimetric processor.
•
Created image processing applications for a radar interferometry processor.
•
Environment:
Unix, SunOS, Solaris, X windows, Openwindows, C/C++, Xview/Xlib library, C shell scripts.
EDUCATION:
University of British Columbia
Graduated with a Master's Degree in Applied Science in Electrical Engineering in October, 1994 Specializing in:
Acoustic radar and 2D image processing
•
Acoustic wave modeling and diffraction
•
University of British Columbia
Graduated with a Bachelor's Degree in Applied Science in Electrical Engineering in May, 1992
REFERENCES:
1. Mr. Mark Roberts, Architect GE Energy [********@*****.***], 403-***-****
2. Mr. Tereus Scott, Firmware Manager Tantalus Systems [******@********.***], 415-***-****
3. Dr. Mohammed Kermani [********@******.***], CEO Bycast Inc., 604-***-****
4. David Slik [*****@******.***], Architect Bycast Inc., 604-***-****
5. Mr. Robert Mair [******@*****.***] GE Energy Project Manager, 403-***-****
6. Mr. Van Tran [********@*****.***], GE Energy FPGA Engineer, 403-***-**** Ext. 209
7. Louis Lee [********@*****.***], GE Energy Embedded Software Engineer
Obj101
Obj100