Hi, I'm Tobi. My passions lie at the intersection between Computer Science and Mathematics. I have been programming since age 13, and have experience with systems programming, compilers/kernel development, mobile development, and competitive programming.
I have worked as a Software Engineering Intern at Meta and Stripe, and I am working at Optiver this summer.
I study Computer Science and Mathematics at Washington University in St. Louis, where I am part of the John B. Ervin Scholars, a merit scholarship program based on academic excellence, leadership, community service, and
diversity. Other interests of mine include: urban planning, public transit and cycling advocacy, vintage clothing, and soccer.
For the best viewing experience, please open this website on a computer/tablet.
Developed a C++ framework for statistical analysis of Linux PMU performance counters. PMU counters are hardware counters that can be used to count performance events (cache misses, branch predictions, cycles, etc.). PMU counters suffer from unreliable
data, so our team developed a novel approach that works in user space and kernel space to improve the data's accuracy.
This work was submitted to ACM's Operating System's Principles and is awaiting acceptance.
As a personal project, I wrote an interpreter in C++ for the Lox programming language, created by Bob Nystrom in the book Crafting Interpreters. Lox is a dynamically-typed language with support for OOP. The goal was to use C++ modern patterns such as
smart pointers for memory management and C++17 features.
During my second semester of college, as part of an independent research project, I worked under the guidance of professor Jonathan Shidal to develop a bytecode compiler and a stack based virtual machine for Lox, also
in C++. I then implemented multiple garbage collection algorithms for my compiler, and benchmarked them all. My findings are summarized in a research paper I wrote.
Working with Professor Chris Gill at WashU on identifying techniques to reduce latency in real time distributed systems. Collaborating with the Max Planck Institute (MPI) in Germany.
I managed to reduce max latency of CycloneDDS by 5% by tuning message payload size in relation to the network stack configuration. I also identified sources of lock contention and reduced them by improving the synchronization approach, limiting time spent in kernel space and improving latency.
CycloneDDS Latency Paper Paper from MPII am currently the co-head teaching assistant for CSE 361 Systems Software. Teaching assistants are elected by professors based on outstanding performance in the class. My responsibilities include leading weekly lectures, providing office hours, and general course administration.
I have also worked as a teaching assistant for CSE 240 "Discrete Mathematics"
Journaly was the project I worked on during my Facebook internship. Journaly is a journaling and community building app. Users can make journal entries, and Journaly will use machine learning to identify the emotions of that entry. If Journaly notices
that a user has been posting a lot of negative content, it will encourage that user's followers to reach out to them, helping them build a support network.
Journaly uses Firebase Auth +
Realtime Database + Cloud Storage, Google NLP Cloud API, Dicebear API, RxJava, Retrofit, and JUnit for unit testing. Main focus was placed on scalability of the backend. Estimates show that Journaly can scale up to 100k users.
I always forget to water my plants, so I built a machine that does it for me. It consists of an Arduino that activates a water pump whenever the soil moisture sensor reports a low enough value. A Raspberry Pi collects real time data about the soil and displays it on a Python matplotlib graph so I can monitor it.
GithubRetrofitted an old RC car with a Raspberry Pi. A mobile app communicates with a web server in the Pi to control acceleration and steering. The Pi uses a L293D DC motor driver to control the car's motors. This project is a work in progress, future plans are to add a camera, microphone, and speakers to the car, all controlled by the app.
malloc
. My implementation utilizes a segregated lists approach with constant time coalescing and a minimum block size
of 16 bits to achieve performance similar to that of the standard library.