Blake Babb

Home

Education

Work Projects Contact

Bachelor of Science - Computer Science Major
Oregon State University

I graduated from Oregon State University in June of 2024 with a BS in Computer Science. My focus was computer systems, which involved operating systems, computer networking & security, compilers, and embedded systems.

During my time at OSU I learned many practical skills on a range of topics; I learned how to work on a large project as part of a team, organizational and time management skills, practical development processes, and a number of different languages, tools, and techniques.

My senior capstone project presentation at the College of Engineering expo

Senior Capstone Project
P-DAQ

My senior capstone project was a prototype data logger designed for amateur aerospace and automotive enthusiasts called the Personal Data Acquisition Prototype, or P-DAQ. It is a physical device that can be attached to a cart, bike, model rocket, etc. with sensors for measuring temperature, acceleration, and GPS position to monitor performance. Our project targets an untapped market; devices such as this exist on the market already, but they are designed for industry professionals and are prohibitively expensive for amateur hobbyists. Our device is designed to be cheap, modular and easy to setup and use in order to target these potential users.

I worked as part of a team consisting of myself, my classmates Aidan Agee, Jake Goodwin, and Patrick Iacob, along with industry professional Chris Patton, former SpaceX engineer. The project was developed from start to finished in Rust over nine months with the direction of our project partner Chris Patton and the oversight of a teacher's assistant. After completion, me and my teammates presented our project at a public expo for College of Engineering capstone projects.

My Role

I was part of the UI development subteam, and my focus was on data processing and display. I created data structures and functions to automatically refresh and asynchronously receive read data from a SQLite database to be displayed in graphs and tables using the Rust eGui framework. I took great effort to ensure null safety and modularity, to reduce unexpected behavior and allow for extensibility if sensors are added and removed.

Top of the user interface home page showing graphs of acceleration and temperature over time

User Interface

The user interface was designed by myself and my teammate Aidan Agee using the eGui Rust framework. It is hosted as a Rust Rocket webserver from the Raspberry PI, which could then be connected to over WiFi by a user's personal device. The map, graphs, and tables in the UI all use asynchronous functions to live-update based on data from the device's sensors stored in a SQLite database.

A snapshot of the project kanban board

Development Process

For this project we learned the practicalities of version control and project & team organization. We loosely followed the Scrum framework, holding weekly meetings with both our project TA and project partner to review progress and plan sprints. Along the way we learned the importance of establishing appropriate deadlines regularly reporting our progress, and by the end of the project we were working very well together and I am proud of what we created.

The course taught us how to explicitly define requirements, architecture, and our development process in documents and how to write up weekly reports. This was unfamiliar to us at first because we had never needed to explicitly define these things as we had never worked on a project of this scale or duration before, but it ended up being useful to clearly define our plans and expectations beforehand.

Other School Projects

GIF demonstrating smallsh's features (sped up)

smallsh

A small shell made in C for my operating systems class as an exercise to learn how forking and processes work. Reads user input and parses it into command and arguments. Implements built-in commands cd, status and exit; all other commands are executed by forking the process and replacing the child using the built in Unix command exec. Also supports input and output redirection, running processes in the background, and reading the shell's pid.

Plot of project simulation results

Active Queue Management Technique Experiments

Active queue management (AQM) is a general approach for managing congestion in computer networks. As part of a group project for my Computer Networking class myself and two classmates researched, implemented, and tested several different AQM techniques. We read a series of IEEE papers where each technique was first introduced, then based on what we read we implemented the techniques in the NS3 C++ network simulator, ran experiments with them, and finally reported our results, which roughly matched what we found in our research.