Hello! 👋 I’m Eric Sund - a software engineer in Seattle, WA. 🗺️ I earned a Bachelor of Science in Computer Science and Mathematics at
Simon Fraser University while also completing 5 technical internships. 🎓
I presently work as a software
engineer at Akamai on internal infrastructure called the Kubernetes Product Platform to host Linode's cloud services. Prior to that, I worked on
Linode Managed Databases and Ghost 👻, a web server for the Akamai CDN that handles ~1/4 of the world's Internet
traffic.
I enjoy distributed systems, app development, 💻 low-level embedded systems and operating systems. I also have a knack for
numerical methods 🔢 and scientific computing 🧪. Check out some of my projets below!
Apart from math and programming, I’m into backpacking ⛺, travelling 🎒, videography 📹, and indie rock 🎵!
Shoot me an email if you’d like to meet up!
C/C++
Java
C#
Python
Golang
Node, Typescript, React
PHP
Linux/UNIX kernel development
Kubernetes, Docker, Ansible, Terraform, Crossplane
AWS (Cloud Practitioner Certified!), GCP, Linode
Ruby on Rails
SQL
Akamai - Software Engineer II
Oct 2022 - Current
Akamai - Software Engineer I
Feb 2022 - Oct 2022
Akamai - Software Engineer Intern
Sept 2021 - Dec 2021
Akamai - DevOps Engineer Intern
May 2021 - August 2021
Hootsuite - Production Operations (DevOps) Engineer Intern
January 2019 - April 2019
Beanworks Solutions - Software Developer Intern
May 2018 - August 2018
Thinkific - Full Stack Developer/QA/Support Intern
April 2017 - March 2018
Teradici - QA Developer Intern
May 2016 - August 2016
Beatboxer lets a user playback some pre-made beats, or create their own!
Beatboxer runs on physical hardware and connects your local network allowing
for control by hand or by web. Here’s what the whole system looks like:
This project touched on a huge range of abstractions - from reading individual
bytes in registers to showing content on the frontend.
Getting the MMA8452Q accelerometer working was a little challenging. The first 8-bit register you
read in C is always 0xFF. To read something you care about (like x-y-z coordinates),
you need to read multiple registers in one go with an 8-bit offset, to get an array
of bytes. Each coordinate is stored as a 16-bit value across two registers - the LSB
and MSB bits. By default, reading multiple bytes will skip the LSB, so you also need
to write to other registers so this is turned off!
The audio was done using the ALSA C API. Pushing the joystick will queue new PCM samples for
playback. A thread will load the samples into memory, and another thread will play them back.
A third (heartbeat) thread will send/receive the current beat over UDP to the node web server
so it can be displayed and controlled from the frontend!
“Morse Driver” is a misc driver that runs on a custom Linux kernel. In Linux, hardware
interaction is exposed via device driver files. Writing a string to /dev/morse-code will
flash an onboard LED with the morse code equivalent. Reading will spit out the dot/dash
equivalent of your strings in text. This is all stored in the kernel’s FIFO queue.
S-talk lets two people instant message each other over the local area network. The beauty of this is
the same single binary can be run by two different people on their own computers. I had a bit of
multithreading going on:
I worked on a Dynamical Systems project which used chaos theory for data encryption and secure communication. Here's a link to the paper!