profile photo

Jackson Wheeler

Software Engineer (Embedded, Networks, Servers, and Web)

B.S. Computer Science Student @ UC San Diego

About me

Passionate and experienced software engineer with deep understanding and practical experience in backend, frontend, embedded, and networks.


Senior university student, with 10 months of experience at Sony Electronics, who leverages strong technical & interpersonal skills to deliver solutions that matter.

Education

Fall 2020 - Fall 2024

University Of California, San Diego

Bachelors of Science in Computer Science

CSE GPA: 3.86

Fall 2022

Yonsei University, Seoul, South Korea

Exchange Program

(Courses: Compiler Design, Computer Vision, Korean Lang.)

Relevant Skills

Embedded Software

Languages: C, C++; Bash
Tools: MCUs, Raspberry PIs, Arduino IDE & Boards
University Courses: Computer Networks, Wireless Embedded Systems, Operating Systems, Computer Architecture, Compiler Design

Servers & Networks

Languages: Go, Python, PostgreSQL
Tools: APIs, Linux, Wireshark, pgAdmin, Virtual Machines
University Courses: Computer Security, Ubiquitous Computing, Database System Principles,

General Software Engineering

Languages: Java, C#; Haskell
Tools: Docker, git/GitHub, Visual Studio, Android Studio, .NET
University Courses: Software Engineering (incl. Agile), Algorithms, Data Structures, Object Oriented Design, Functional Programming

Web Development

Languages: JavaScript, HTML, CSS;
Tools: Vue/Vuetify
University Courses: Web Development

Other

  • Former T3/SECRET Security Clearance Holder

  • Small South Korean Flag Korean Language Conversational Fluency

Soft Skills

Mission Oriented, Practical Problem Solver, Strong Communicater, Bias toward Action

Work Experience

Anduril Industries (June 2024 - September 2024) - 3 mos

Robotics Software Engineer Intern

Sony Electronics (July 2023 - April 2024) - 10 mos

Software Engineering Intern

Languages: Go, JavaScript, Vue/Vuetify, PostgreSQL
Tools: Docker, pgAdmin, JS WebSockets

CMS Database Wrapper (Go, PostgreSQL)

Implemented reverse synchronization between databases, converting items while handling complex mappings.

HTML Video Synchronization (JavaScript)

Developed proof of concept server and client code to synchronously provide & play HTML videos on multiple web clients, utilizing JavaScript WebSockets and developing a clock synchronization algorithm.

Web Page Development (Vue/Vuetify)

Developed multiple external web pages to satisfy needs of various teams

INZONE Buds: Mobile web page showcasing Sony INZONE Buds for the European market, supporting multiple languages.

Sketchfab: Download & EULA page for the Sketchfab application, used on the Sony Spatial Reality Display.

Olivia Rodrigo X LinkBuds S: Mobile web page showcasing the Olivia Rodrigo X Sony LinkBuds S collaboration, supporting Japanese and English.

Web Page on Embedded Device (Vue/Vuetify)

Redesigned web page on embedded device, used for sending device commands, to be cleaner, more user friendly, and implemented new features: allowed sequences of commands to be created, saved, modified, exported, imported, and logged.

Marine Corps Tactical Systems Support Activity (June-August 2021) - 3 mos

Software Engineering Intern

Languages: Java
Tools: Virtual Machines, CSV Test File

Background

MCTSSA is the Marine Corps' Command, Control, Communication, Computer, Intelligence (C4I) integration center. Located in Camp Pendleton.

Overview

T3/SECRET Security Clearance

Researched strategies to automate testing on Marine Corps systems.

Developed & implemented code to begin automated testing of a military Windows application. Reads test input data from CSV and utilizes application’s UI to plot friendly/enemy tracks.

Projects

Automatic Plant Waterer - Server (Py) (Fall 2024)

Languages: Python, SQL, Bash
Tools: Raspberry Pi4
Other: Port Forwarding, Ngrok

Overview

Team of three developed automatic plant watering system. A microcontroller (MCU) placed in the plant controlled the watering system, watering at the server's instruction. A mobile application developed provided user interface to see the status of their plants and tailor the automatic watering to fit their needs.

I designed the system architecture, including the means of communication between MCU and server, and server and mobile application, defining the necessary APIs & functionality to fit our requirements.

Implemented API server and SQL database on Raspberry PI device.

Implemented port forwarding on home network to allow constant SSH & development access to Raspberry PI server. Utilized Ngrok service to make API server publicly available.

Microcontroller Firmware (C) (Fall 2024)

Languages: C
Tools: STM32 MCU (ARM Cortex-M4)
Other: BLE, Accelerometer, I2C, Timers

Overview

Developed firmware for microcontroller to, while using minimal power, notify the user when it is lost. When left stationary for X amount of time, the microcontroller initializes BLE to beacon to nearby devices it's lost status until it detects movement again.

Wrote multiple firmware drivers from scratch, including for accelerometer, I2C, timers, and LED.

Refactored firmware to considerably reduce power consumption, utilizing CPU sleep mode.

Take Aways

  • Considered real-world engineering trade-offs in developing for low-power consumption, while maintaining functionality
  • Gained deep understanding of embedded system firmware, related hardware, and communication protocols

- Source code not publicly available -

Contact me to learn more!

IoT Project - Embedded Team (C++) (Spring 2023)

Languages: C++
Tools: Arduino IDE, VSCode PlatformIO
Other: Embedded WiFi, BLE, API Calls

Overview

Deployed C++ code on ~25 IoT devices (ESP32 Arduino Boards) for data collection in RIMAC (UCSD's Fitness Center) during May 2023. Each board records all nearby bluetooth beaconing devices and their signal strength, then logs that data to our backend API through HTTP.

Includes:

  • Overseeing of location, placement, and operation of ~25 IoT devices for data collection
  • Implementing WiFi & BLE capabilities onto embedded Arduino boards
  • Implementing API calls from embedded devices to log data to API

Take Aways

  • Learned to build reliable & error recovering code on embedded devices
  • Learned to communicate & work together with other teams (i.e. API, Analytics, UI) unto the realization of our final product

API - IoT Device to SQL (Py) (Spring 2023)

Languages: Python, SQL
Tools: Apache, MySQLWorkbench
Python Libraries Uvicorn, FastAPI, PyMySQL

Overview

Implemented API that logs data from IoT devices, through HTTP request, to our backed SQL database. Also implemented API methods for user to view the SQL data.

Includes:

  • Uvicorn to run our code as a server
  • FastAPI to receive and handle API calls
  • PyMySQL to upload to and download from our SQL database

Take Aways

  • Deep understanding of APIs → understanding front-end to back-end integration, IoT systems, etc.

Implementing OS (Java) (Spring 2023)

Languages: Java
Concepts: Threading, Multiprogramming, Virtual Memory

Overview

Implemented Operating System concepts in the Nachos operating system. Nachos is a Java application written to perform the functions of a real OS, but with missing implementations that would be filled in by us, the students.

Accomplished:

  • Implemented thread system in the Nachos OS
  • Implemented system calls and support for multiprogramming through paging
  • Implemented more sophisticated memory management through on-demand page allocation and swapping

Take Aways

  • Developed deep understanding of Operating Systems and related concepts, gaining experience through implementation

- Source code not publicly available -

Contact me to learn more!

Logging to REST API (JavaScript) (June 2023)

Language: JavaScript, HTML
Tools: REST API, JotForm

Overview

Manipulated source code of a personally created JotForm form, directing user data to REST API backend.

Visual

See Form Live View

Take Aways

  • Developed quick and detailed MVP (minimal viable product) solution to meet project requirements, which solution can be easily expanded upon for additional features and sustainability

ChatGPT Console (C#) (May 2023)

Language: C#
Tools: .NET core, API

Overview

Utilized OpenAI API in the .NET core framework to develop a console application that allows the user to chat in real time with ChatGPT

Visual

Console App Image

Image of the Console App developed. Note: executed questions and the ChatGPT responses are displayed.

Take Aways

  • Developed C# programming skills in the .NET environment
  • Utilized OpenAI API to communicate with ChatGPT in real time

Router Implementation (C) (March 2023)

Language: C
Tools: Wireshark, Mininet, POX, Ubuntu VM
Networking Protocols: Ethernet, ARP, IP, ICMP

Overview

Developed code to accurately & efficiently route and send incoming packets to the next step in the network, given the packet's final destination, and according to the IP networking protocol.

Includes:

  • performing longest prefix match on the routing table
  • sending and receiving ARP requests and replies
  • generating & sending ICMP error packets and echo replies

Visual

router implementation demonstration

Every device in the virtual network that is running my developed packet routing code will correctly & efficiently route packets sent across the network.

Summary of Implementation

Provided Starter Code

Handles interplay with virtual network system, Mininet.

My Code

Input: Receives incoming packet (as a buffer of data in memory).

Output: Outputs a properly constructed outgoing packet (buffer of data) and the corresponding interface this packet should be sent over.

Work: Parses information from packet. According to networking protocols takes proper action (i.e. sending ARP reply, forwarding IP packet to next step, etc.).

Please contact me for more detailed

summary of implementation!

Improving Effeciency

Attempt 1: Attempted to implement multi-threading in router to improve performance. Due to threading overhead, performance worsened → Re-evaluated.

Solution: Implemented improved data structures for storing routing table and router's interface list, dramatically improving lookup time:

  • Longest prefix match: implemented trie to store routing table → constant time longest prefix match
  • Router's interface lookup: implemented hash table for router's interface list → constant time interface lookup (by interface's IP addresss).

Take Aways

  • Implemented virtual router capable of correctly routing packets in any given network topology.
  • Implemented and utilized important networking protocols: Ethernet, ARP, IP, ICMP.
  • Improved efficiency by implementing custom data structures (Trie for longest prefix match, Hash Table for router interface lookup)

- Source code not publicly available -

Contact me to learn more!

Sliding Window Protocol (C) (February 2023)

Language: C
Tools: Multi-threading
Networking Protocols: Sliding Window Protocol, CRC-8 Error Detection, Framing

Overview

Implemented Sliding Window Protocol on both the sender and receiver side, ensuring reliable in-order delivery of frames between any number of senders and receivers.

Includes:

  • selective retransmission of packets after timeout
  • sending cumulative ACKs (acknowledgement of received packets)
  • framing of messages
  • CRC-8 error detection & handling
  • TCP-like connection establishment protocol

Visual

sender and receiver visual

Example of sender sending a message to a receiver (sliding window protocol not shown).

Summary of Implementation

Provided Starter Code
  • construction of senders & receivers (each run on their own thread)
  • functionality for sending frames from sender to receiver
  • providing message (to send) to the sender
My Code

Sender:

  • Receives message to send
    • Performs framing (fragmentation of message into frames that can be sent to the receiver)
    • Establishes connection with receiver (SYN & SYN-ACK protocol used)
    • Begins sending frames according to the sliding window protocol
  • Individual retransmission on sent frame's timeout
  • Sliding window updated & further frames sent on receiving proper ACK

Receiver:

  • holds a sliding window for each sender it receives from (allows for simultaneous receiving)
  • adds received packets to sliding window, updating it and sending out proper cumulative ACKs
  • prints out sender's message after all frames have been received

(CRC-8 implemented on all sent frames & checked on all received frames → allows for reliable delivery over links with high corruption probability)

Take Aways

  • Implemented sliding window protocol to ensure reliable in-order delivery of messages between senders and receivers
  • Designed & implemented sliding window data structure in order to abstract away sliding window implementation details
  • Implemented and utilized important networking protocols: sliding window, CRC-8 error detection, framing, TCP-like connection establishment

- Source code not publicly available -

Please contact me for more details!

This Website! (HTML, CSS, JS) (Winter 2023)

Languages: HTML, CSS, JavaScript
Tools: Browser Developer Tools

Overview

Developed this portfolio website from scratch, using pure HTML, CSS, and a minimal amount of JavaScript

Goal: A simple & straightforward website designed to display who I am and what qualifications I have for a given job. Designed for practicality and efficiency, minimizing excess content

Visual

html only version of website

Image of website in progress, no CSS or JavaScript added yet.

wireframe of website

Original wireframe of proposed design of website

Summary

While learning crucial Web Development skills and strategies in class, built up a portfolio website in a progressive enhancement style.

In all cases focusing on user experience:

  • Semantic HTML (→ improved accessibility)
  • Responsive CSS for viewing on different devices (→ improved usability & experience)
  • Minimizing JS & large resources (→ improved performance)

Take Aways

  • Challenged myself to implement newly learned skills (HTML, CSS, and JavaScript) in a meaningful and important project
  • Further developed debugging and problem solving skills while working with new languages & tools
  • Developed with user experience in mind: usability, performance, accessibility

MiniC Compiler (Java) (Fall 2022)

Languages: Java, MiniC (Subset of C)
Tools: Bash scripts

Overview

Implemented multiple stages of a compiler (in Java) for the MiniC language (a subset of C). Implemented Scannar, Parser, Semantic Analyzer, beginnings of Code Generator.

Take Aways

  • Developed deeper understanding of programming languages: syntax, semantics, type systems, scopes, variable bindings

San Diego Zoo Exhibit App (Java) (Spring 2022)

Languages: Java
Tools: Android Studio
Other: Agile Development Process

Overview

Worked with team of 6 to develop an Android application for navigating to exhibits from within the San Diego zoo. User creates list of exhibits they desire to see, an ideal route is computed, and the app provides the user with directions to each exhibit along the route. During the route, users may perform actions (i.e. skipping an exhibit, replaning the route)

Take Aways

  • Utlized Agile process in team of 6 to plan and deliver application meeting customer's requirements
  • Integrated back-end team and front-end team’s code
  • Established better communication between pair-programming team

Mutual Fund Analysis Project (Py) (Summer 2020)

Languages: Python
APIs: Selenium, XlsxWriter

Overview

Built program that web scrapes mutual fund data from Charles Schwab website and outputs organized Excel file

Take Aways

  • Implemented Pickle library to serialize data, splitting program into two and solving long run time
  • Implemented YFinance API for rapid fetching of current price data
  • Implemented XlsxWriter to output organized Excel file for fund comparison and analysis

- Source code not available at the moment -

Please contact me for more details!

Reinforced Learning Snake Game (Py) (Summer 2020)

Languages: Python
APIs: Neat-Python, Pygame

Overview

Utilized NEAT-Python and its reinforced learning in order to train a program on how to play the python snake game effectively.

Visual

Take Aways

  • Collaborated with peer to create program that utilizes machine learning to teach computer how to play the snake game
  • Researched neural networks and reinforced learning in order to implement these concepts into our project

Phone Specs Web Scraping (Py) (Summer 2020)

Languages: Python
APIs: Selenium, Beautiful Soup

Take Aways

  • Developed program that web scrapes specifications for hundreds of phones and organizes data into Excel file
  • Maneuvered bot blocking by utilizing Selenium library to run an automated browser

- Source code not available at the moment -

Please contact me for more details!

Chess Game (Java) (Spring 2020)

Languages: Java

Overview

Challenged myself to utilize a new programming language, Java, to develop a functional chess game that can be run in the terminal.

Take Aways

  • Implemented inheritance and object oriented design
  • Gained deeper understanding of Java through the code development and debugging process