Sam Roberts

• (+1) 236-330-4820 • @sam-github • Vancouver, BC, Canada

Software developer with 20+ years of experience in distributed micro-services, network protocols, and cryptographic formats, with multiple languages and operating systems.


Multi-language: C; C++; Node.js; Lua; Python; Ruby; Go.

Open source: Node.js TSC member; conference speaker; author or contributor to many open-source projects.

Unix & network programming: event-driven I/O; sockets, IPC, and packet injection; Linux system APIs

Network protocols and formats: TCP/UDP, Mail protocols (POP3/MIME), HTTP/1.1, ASN.1/BER/DER, vCard, iCalendar, BEEP.

Cryptographic protocols and formats: CMS, S/MIME, SSL/TLS/WTLS, X.509/PKIX, PKCS #8/11/12, smart cards, crypto APIs, RSA, Diffie-Hellman, and Elliptic Curve crypto-systems.

Experience

2018/10-now: Senior Software Developer, IBM Canada (Runtimes) (remote)

Contribute to Node.js project, primarily to crypto, security, LTS, and IBM platform support. Contribute to IBM and open source projects for production Node.js deployment to Docker, Kubernetes, and IBM cloud. JavaScript, C++, occasional Go.

2016/10-2017/09: Senior Software Developer, IBM Canada (Runtimes) (remote)

Contribute to Node.js project and IBM’s Node.js APM (appmetrics). JavaScript, C++, C.

2015/11-2016/09: Senior Software Developer, IBM Canada (APIConnect) (remote)

Lead team of 3 IBM developers to integrate Strongloop runtime technology into IBM APIConnect’s service orchestration layers using strong-supervisor. JavaScript.

2013/04-2015/10: StrongOps Team Lead, Strongloop (remote)

Lead team of 4 responsible for deployment, management, and monitoring for Node.js services (strong-pm.io) until Strongloop acquisition by IBM. Micro-services in JavaScript, APM in JavaScript and C++.

2007/05-2013/03: Senior Architect and Development Lead, Wurldtech (Vancouver, BC)

Lead a team of 8 developers developing a network protocol exploit generation Linux appliance. Python/Twisted, Lua, and C.

2005/11-2007/06: Senior Software Architect, Bycast (Vancouver, BC)

Implement microservice components of StorageGrid, a large image distributed data store. C++, some Ruby, and Lua.

2000/10-2005/10: Senior Software Developer, Certicom (Mississauga, ON)

Develop C language cryptographic toolkits. C, some Ruby and Perl.

1998/10-2000/10: Software Developer, Cogent Real-Time Systems (Mississauga, ON)

Develop industrial distributed systems in C and Cogent’s LISP-dialect, using a microservice architecture (service discovery, hierarchical key-value store, message queueing, time-series data, etc.). C, some Gamma (a LISP variant).

1995-1998/10: Development Lead, International Submarine Engineering (Port Coquitlam, BC)

Responsible for ACE, an event-based kernel and configuration language for robotics. Port to QNX4 on my own initiative, which became the RTOS of choice for subsequent projects. Implement sensor device serial protocols. C++.

Education

B.A.Sc., Engineering-Physics, Computer Science Option; University of British Columbia (1996)

Open source

Node.js
commits to Node.js core • authored or maintained many Strongloop packages, such as modern-syslog (~9K downloads/week), strong-supervisor (~1.7K downloads/week),
C+Lua
luasocket, forked, integrated multiple CVS and Mercurial forks into github, brought collaborators together, and passed project back to original author • C/Lua bindings: pcap-lua, netfilter-lua, termios-lua, bcrc-lua
C
libnet, adopted a widely used packet crafting and injection library • GNU mailutils, commits to email address decoding, file locking, SMTP
Ruby
• vCard and iCalendar support (vpim), > 1million downloads • ZeroConf DNS service discovery (net-mdns)
Go
git-walk, recursive, parallel command execution in Ruby, Node.js, and Go • operator-nodejs, operator that triggers Node.js diagnostic reports • wtfutil secret store, use docker-credential-helpers to store API keys and other secrets • whereami, example app to explore Go programming and channels