(full) Résumé for Stéphane Charette
Home phone: +1 250-769-2759

Internet

What I Do https://www.ccoderun.ca/stephane/
ML/CV https://www.ccoderun.ca/cv/
C++ https://www.ccoderun.ca/portfolio/
Blog https://www.ccoderun.ca/programming/
LinkedIn http://www.linkedin.com/in/scharette
Email stephanecharette@gmail.com

Career

I'm a senior C/C++ software developer with more than 30 years of commercial software development experience. Recent projects include working with embedded devices, computer vision, machine learning, desktop software, networking software, and database products.

This is the full version of my résumé. It includes all of the software development work I've done over the last 30+ years. I also have a short version which contains only the most relevant and recent information.

Computer Skills

Programming Languages and Software Development Tools

Image Processing OpenCV, YOLO (v3 and v4), Darknet, DarkHelp, DarkMark, machine learning (artificial neural networks to assist with computer vision)
Recent C++ (C++11, 14, and some 17), C, g++/gcc, Darknet neural networks, YOLO, Visual Studio, ddd/gdb, valgrind, cmake/ctest/cpack, GTest, SQL/PostgreSQL, JUCE, Wireshark, doxygen, subversion, git, Boost (ASIO, regex, system, thread, log, program_options), OpenCV (computer vision), barcodes (Code39, Code128, Interleaved, UPC, EAN), regex, pthread, Munin, RRD (round-robin database), PCI DSS, KDevelop, Bash, Fish, CGI-BIN, HTML/CSS, XML/XSD, NSIS, IoT, Beaglebone (ARM Cortex-A8)
Past SNMP (MIB-2, custom MIB, traps, AgentX), RotateRight Zoom profiler, Python, PHP, VisualAge C++, C/Set++ (IOC/OCL/IUICL), MFC, Rexx, MySQL, Eclipse, ActionScript 3, Delphi, Pascal, Perl, Java, IBM MQ Series, IBM GSO, RS-232, Rational Rose/UML, Perforce, cvs, dBase
Academic x86 and 6502 assembly, Smalltalk, Lisp/Scheme

Operating Systems

Recent Linux (Ubuntu & Debian: x86, AMD-64, ARM7, ARM8), Windows 7 & 10
Past Linux (Debian, LFS, Redhat/Fedora, Slackware), Windows, OS/2, DOS, pSOS, BeOS/Haiku, SunOS/Solaris

Networking

  Byte-level packet inspection and manipulation, Wireshark, tcpdump, UDP, TCP, IP, non-TCP high speed internet file transfers

Encryption

  AES-CBC (advanced encryption standard, cipher block chaining), Blowfish, OpenSSL

Other

Education

Scott Meyers Kelowna, British Columbia
June 2006 "Advanced C++ Topics"
Canadian Management Center Toronto, Ontario
July 2004 "Management Skills for Supervisors"
Software Productivity Center Inc. & Scott Meyers Vancouver, British Columbia
February 2003 "High Performance C++ Programming"
Construx & Steve McConnell Bellevue, Washington
June 2002 "Steve McConnell's Code Complete"
BC Institute of Technology Burnaby, British Columbia
January 2000 to January 2001, part-time attended part-time night classes to upgrade project planning, design and development skills (project estimation, software cost, Rose/UML, rapid GUI prototyping using Delphi)
Bishop's University Lennoxville, Québec
September 1993 to December 1996 B.Sc., Computer Science; completed 3 years of 4.
All required 3rd and 4th year Computer Science course requirements were completed in first 2 years.

Employment

Art + Logic Pasadena, California [remote]
July 2019 to present
  1. built several neural networks with the Darknet machine learning framework, YOLOv3, and YOLOv3-Tiny for a proof-of-concept linux-based robotic application
  2. worked with libraries such as ZBar, Zint, and OpenCV to recognize and create several types of barcodes
  3. audio processing using JUCE, wrote a VST3 plugin for audio sampling product on Windows and Mac
  4. converted legacy JUCE application into VST3 plugin
  5. remote work from home office for a California-based company
C Code Run West Kelowna, B.C. [remote]
June 2000 to present
  1. consulted on many projects, the last few of which are:
    • RobroSystems (2020)
    • Adappt Intelligence (2020)
    • Art + Logic (2019-2020)
      • Linux C++ application using Darknet/YOLO and OpenCV for a robot that needs to detect barcodes
      • Mac/Windows VST3 audio plugins in C++ using JUCE, both new and legacy applications
    • Oroville Reman & Reload (2020)
    • EquiNordic Group (2019)
      • Linux C++ application using Darknet/YOLO and OpenCV to track shipping containers from a drone
    • Unlimi-Tech FileCatalyst (2010-2020)
      • UDP file transfer product, see description below
    • Gorman Brothers Lumber Mill (2018-2019)
    • Gorman Brothers Lumber Mill (2018)
    • Gorman Brothers Lumber Mill (2017-2019)
    • StyleLine (2013-2018)
      • large application for door & drawer manufacturer, see description below
    • Fastly, Inc. (2016)
      • analyzed and wrote several security reports on current and upcoming IoT vulnerabilities
      • focused on Mirai which had just been discovered in early fall 2016
    • Turret Labs (2016-2017)
EquiNordic Group Copenhagen, Denmark [remote]
April 2019 to July 2019
  1. tracking shipping containers and trucks using fully automated fixed wing drones
  2. Darknet/YOLO object detection (machine learning, neural network) combined with OpenCV running on Linux
  3. remote work from home office for a European company
MicroSurvey West Kelowna, B.C.
January 2017 to April 2019
  1. update STAR*NET, a 32-bit C/C++ least-square adjustment application for land surveyors
  2. port MFC application and legacy DOS code from the 1980s & 1990s to 64-bit Windows
  3. maintenance for MicroSurvey CAD, an IntelliCAD-based C/C++ CAD product for Windows
  4. combination of maintenance position, working on performance enhancements, bug fixes, and new development using Scintilla, MFC, TFS, and Hoops
StyleLine Kelowna, B.C. [remote]
March 2013 to March 2016
  1. Windows and Linux, C++ & SQL, designed and wrote a custom GUI application to run a door and drawer manufacturer
  2. redundant PostgreSQL database back-end servers, one local and the other in the cloud
  3. software generates all necessary cut lists and controls automated chop saws
  4. Beaglebone hardware and USB barcode readers deployed with custom software to track orders on factory floor
  5. remote work from home office for a Kelowna-based company
Pertino Cupertino, California [remote]
July 2013 to June 2014
  1. C++ gateway for cloud-based networking device
  2. added AES encryption and UDP tunnel support between clients and central network gateway
  3. performance analysis and many improvements completed with the help of RotateRight Zoom profiler
  4. audit of existing codebase using Valgrind helped track down and fix several significant memory leaks that had been affecting customer installations
  5. remote work from home office for a California-based company
Unlimi-Tech FileCatalyst Ottawa, Ontario [remote]
August 2010 to present
  1. designed and wrote two commercial Linux, Windows, ARM, Mac and iOS C++ libraries for Unlimi-Tech's file transfer products, FileCatalyst and Workflow/Spaces
  2. transfers files thousands of times faster than popular/traditional TCP based methods
  3. C++ libraries I designed, wrote, and maintain are commercially sold by Unlimi-Tech
  4. remote work from home office for Ottawa-based company
Strangeloop Networks Vancouver, B.C. [remote]
August 2008 to February 2013
  1. worked on the AS1000 Site Optimizer, a linux-based embedded network appliance used to optimize server-side HTTP communication
  2. designed and implemented (C++) a centralized configuration system, a new CLI, and a CGI-BIN for web-based configuration
  3. designed and implemented (C++) a new multi-device clustering system which automatically shares relevant portions of complex configurations between many clustered devices
  4. clustered devices communicate over encrypted channels using Blowfish and OpenSSL
  5. implemented SNMP MIB-II as well as a custom MIB in C++ using net-snmp AgentX
  6. brought the appliance up to PCI Data Security Standard v2.0, which included designing and implementing both multi-user support and AAA:
    1. remote authentication (LDAP)
    2. authorization (each config item maps to a half dozen user levels)
    3. audit logs (remote syslog)
  7. remote work from home office for a Vancouver-based company
VM86/CinematX Kelowna, B.C.
December 2007 to May 2008
  1. productized/re-designed in C++ a remote desktop X-Windows prototype written in C
  2. designed and implemented a simple client-facing Web portal using ActionScript 3
Packeteer, Inc. Kelowna, B.C.
April 2001 to December 2007
  1. C++ development: two different real-time embedded network devices: one running Linux 2.2.14-2.2.25 (AppCelera) and the other running pSOS (PacketShaper)
  2. designed and implemented some Linux kernel networking changes for the Linux 2.2.14-2.2.25 device (TCP/IP stack modifications for source address spoofing)
  3. C development: Linux 2.2.14-2.2.25 kernel changes and parts of the pSOS appliance
  4. team lead and project lead for small group of developers tasked with both maintenance and small feature support of large C and C++ code base
  5. responsible for top-level customer support; some travel to customer sites located in U.S., Canada, and Europe
  6. supervisor to customer escalation team from 2004-2006
  7. mentor to several junior developers
CNC Global Vancouver, B.C.
April 1999 to April 2001
  1. contract position in the financial sector (HSBC)
  2. C++ (PMWin , GPI, IBM VisualAge C++ with OCL), Java, MQ Series & GSO
  3. system design, development and deployment
  4. WAN- and LAN-based applications and local system tools for OS/2 and Windows 9x/NT
  5. extensive GUI design and development using VisualAge C++
  6. object-oriented analysis, design, and development; extensive use of Rational Rose and UML for system design
  7. post-production system maintenance and Rexx scripting
Intelligent Medical Imaging Palm Beach Gardens, Florida
April 1998 to April 1999
  1. 1-year NAFTA TN1 visa contract to work on a medical device
  2. maintenance and new development related to the Micro21, a robotic slide microscope
  3. capable of many procedures, FDA approved in the U.S. for 9 specific procedures
  4. C++ and Rexx maintenance, design, prototyping and development (IBM VisualAge C++ with OCL)
  5. serial communication programming (RS-232)
  6. real-time multi-processor system using OS/2 Warp Server SMP on custom-built imaging workstations
  7. extensive GUI design and development using VisualAge C++
  8. elaborate use of custom makefiles and version control system based on RCS
CNC Global Vancouver, B.C.
October 1997 to March 1998
  1. contract position in the financial sector (HKBC, now known as HSBC)
  2. C++ (IBM VisualAge C++ with OCL) object-based prototyping for a new banking front-end between OS/2 and legacy AS/400 systems
  3. GUI design and development using VAC++
LGS Group Inc. Vancouver, B.C.
April 1997 to September 1997
  1. contract position to work on automated trains (London Underground's Jubilee Line Extension)
  2. C and C++ (PMWin, GPI, and IBM VisualAge C++ with OCL) programming for a real-time OS/2 system used in transportation automation (SkyTrain, LRT, LUL)
  3. introduction of C++ and OCL/IUICL objects to traditional C environment
  4. GUI design and development using VisualAge C++
  5. recipient of 'Employee Recognition Award' for design and integration of C++ and OCL to legacy C code base
  6. elaborate use of custom SCM tools based on CVS
InfoMedQue Inc. Sherbrooke, Québec
May 1996 to March 1997
  1. custom OS/2 & Linux programming (Rexx, C++, Java)
  2. socket programming (C++ & Java) for TCP/IP client-server applications distributed and sold via the internet
  3. network and web site consulting
  4. TCP/IP and NETBIOS network installations
  5. hardware and software installation and maintenance
  6. web site installation, maintenance & programming
Ministry of Natural Resources (Government of Canada) Sherbrooke, Québec
January 1996 to April 1996
  1. contract position
  2. C++ design and implementation of a web-accessed reservation tool running on a SunOS-hosted (Solaris 2.5) intranet web server
  3. assisted in the design and implementation of the Ministry's intranet
Bishop's University (Continuing Education Dept.) Lennoxville, Québec
September 1994 to April 1996
  1. part-time work
  2. design course outlines and teach basic, intermediate and advanced internet topic courses
  3. implement OS/2-based Rexx/C++ internet access tools for the University's computer labs
IBM Canada Limited Markham, Ontario
December 1994 to January 1995
and May 1995 to August 1995
  1. technical support member for IBM's OS/2 Warp operating system
Pixel Productions Toronto, Ontario
September 1990 to September 1993
  1. junior software programmer for DOS platform, using C and x86 assembly
C.A.P. Services Markham, Ontario
May 1988 to September 1990
  1. self-employed while completing high school
  2. provincially registered sole-proprietorship company
  3. programming contract with ABC Ontario, completed using dBase 3+ and Pascal
  4. programming contract with Northern Telecom, completed using dBase 3+ and Pascal
  5. programming contract with university PhD student working on thesis, completed using Pascal

Volunteer Work

Open source software projects Founder, designer, contributor
2013 to present
  1. DarkHelp, C++ library to import and run neural networks within C++ applications, https://www.ccoderun.ca/darkhelp/api/Summary.html
  2. DarkMark, C++ tool for image markup and working with the neural network framework Darknet/YOLO, https://www.ccoderun.ca/darkmark/Summary.html
  3. vz::ImgCmp, C++ OpenCV image comparison library, https://www.ccoderun.ca/programming/doxygen/vzic/
  4. vz::Imagination, image manipualtion and object detection in C++ with OpenCV, https://www.ccoderun.ca/vz_imagination/
  5. TinyAES++, library for AES CBC encryption and decryption, https://www.ccoderun.ca/programming/doxygen/tinyaes++/
  6. CamCap, C++ layer for Video4Linux, https://www.ccoderun.ca/programming/doxygen/camcap/
  7. SG++, library for IoT devices and Seeed Grove devices, https://www.ccoderun.ca/sg++/
  8. Myra Canyon, deep packet inspection on a Linux-based router, http://myra-canyon.sourceforge.net/
  9. EPS Conduits, virtual networking in Linux, https://www.ccoderun.ca/eps/
  10. SNMPpp, C++ layer for SNMP, http://snmppp.sourceforge.net/
SOKS (Science Opportunities For Kids) Kelowna, British Columbia
January 2011 to April 2013
  1. director at non-profit organization that provides science camps for children aged 6-12
L'Anse-au-Sable Kelowna, British Columbia
September 2007 to February 2013
  1. council treasurer for K-12 school (2007-2009)
  2. director-at-large since 2010
Gramps Open-source software project
January 2007 to October 2013
  1. http://gramps-project.org/
  2. contributor since January 2007
  3. release manager since October 2007
  4. python project, hosted on SourceForge
Les Petits Oursons Kelowna, British Columbia
September 2006 to June 2009
  1. director, then vice-president of non-profit organization founded in 1994 to provide French-language preschool/daycare services
Bishop's University (Computer Science Dept.) Lennoxville, Québec
September 1993 to December 1996
  1. built, installed, and maintained UNIX and OS/2 internet servers, including WWW (HTML & CGI-BIN), Gopher and FTP