Nic Klaassen
Software developer focused on building well-architected solutions to real problems with correct, clean, and tested code. My professional background is mostly in embedded C++ and Python applications deployed on Linux. Recently I've been building personal web projects with Go, React, and ThreeJS. Graduated in 2019 with a B.A.Sc in Computer Engineering from SFU.
To get in contact with me, email [email protected] or check out any of my profiles linked at the top of the page.
Software
- Extensive experience with C, C++, Python, and Bash
- Meaningful experience with Go, Javascript (React), Java, Matlab, R, and Arm Assembly
- Knowledgeable with state-based, object-oriented and event-driven paradigms in multi-threaded environments
- Experience developing highly available embedded Linux systems
Hardware
- Experience designing and integrating PCBs
- Skilled in synthesizable VHDL design
- Proficient with FPGA hardware acceleration
- Confident with the Arduino, Raspberry Pi, and ESP32 development platforms
- Familiar with most hardware lab instruments (oscilloscopes, function generators, etc)
Work Experience
keyboard_arrow_down
Software Engineer
Arista Networks
Sept 2019 - Present
- Developed process orchestration software in C++ and TACC for Arista's Linux-based switches
- Created Python plugins implementing new commands for the CLI and JSON-based eAPI
- Wrote comprehensive unit and integration tests to verify new features and solidify bug fixes
keyboard_arrow_down
Embedded Software Developer, Co-op
Avigilon
Sept 2017 - Apr 2018
- Worked with the Embedded Solutions team to develop software and tooling for secure, highly reliable embedded video storage and analytics devices
- Developed a custom embedded Linux platform using OpenEmbedded/Yocto
- Built features, refactored classes, and fixed bugs in a modern, enterprise-scale C++ codebase
- Hacked on a modern web UI built with React, Redux, and Go
- Actively participated in code reviews, scrum meetings, and sprint planning sessions
- Used Git, BitBucket, Mercurial and Fisheye/Crucible for source control and reviews
keyboard_arrow_down
Co-op Instrumentation Engineer
Precision NanoSystems, Inc.
Jan-Aug 2016
- Designed and implemented an RFID system for use in a medical research environment
- Sourced an ISO-15693 compliant RFID module and gamma-tolerant RFID transponders
- Created a specification for the transponder memory layout to store critical device information
- Developed a software library to interface the device microcontroller with the RFID module
- Co-invented WO/2018/006166 – “Smart Microfuidic Mixing Instrument and Cartridges”
Projects
keyboard_arrow_down
Mousetrap
Personal Project
Jan 2018
- Built a web-based application that allows a user to control the host computer’s mouse and keyboard from a mobile web browser
- Developed a simple webserver in Go to create a restful HTTP API for manipulating the host
- Created an easy to use, cross-platform web interface with HTML, CSS, and Javascript
- Online here
keyboard_arrow_down
FPGA Hardware Accelerator
Digital Systems Design, SFU
April 2017
- Designed a bit-ops unit as part of a soft processor on an Altera FPGA
- Acheived 2x-35x speedup over traditional software implementations of various bit operations
- Implemented a master bus interface for Altera’s Avalon bus specification
keyboard_arrow_down
Linux System Call
Operating Systems I, SFU
April 2017
- Added a custom system call to the linux kernel to get information about the process associated with a given PID, and other related processes
- Interfaced with kernel data structures such as the task_struct
- Compiled the new kernel and tested it on a QEMU system emulator
keyboard_arrow_down
Linux Shell
Operating Systems I, SFU
February 2017
- Developed a basic Linux shell in C
- Used various system calls to spawn, terminate, and clean up child processes
- Attached signal handlers to manage process lifetime
- Built support for pipes and background processes
- Implemented internal commmands such as 'cd', 'pwd', 'jobs', and 'exit'
- Compiled and built the project using gcc and make
keyboard_arrow_down
Touchscreen RFID Programmer
Precision NanoSystems, Inc.
May - Aug 2016
- Implemented a device for reading and writing arbitrary data to RFID transponders using a Raspberry Pi, a touchscreen, and an RFID module
- Designed a functional touch GUI with Qt for Embedded Linux
- Used a multi-threaded, object-oriented paradigm to control the RFID module without interrupting the GUI functionality
- Introduced data redundancy to ensure accurate data transmission
- Created a method for easily specifying and loading new data onto the device via USB-drive, for quickly programming batches of transponders with unique, arbitrary data
Like this page? View the source here