Hi, I'm Ohad Rau. I'm currently a fourth-year student at Georgia Tech pursuing a B.S. in Computer Science with a concentration on systems/architecture and computer modeling. I'm also a co-founder/software engineer at Rolltrax. In terms of CS, my interests are in programming languages, systems programming, and quantitative finance.
When I'm not programming, you can find me listening to hip-hop (some favorite artists: MF DOOM, Isaiah Rashad, Kendrick Lamar, Freddie Gibbs) or playing PC games (i.e. Overwatch). Plus I really love cooking!

Education

Georgia Tech Georgia Tech

B.S. Computer Science (system architecture & computer modeling)

Aug 2018–May 2022

GPA: 3.9 // Major GPA: 4.0
Coursework: Compilers, Operating Systems, Digital Design, Systems & Networks, Computer Organization, Algorithm Design, Discrete Math, Algorithms & Data Structures, Programming Languages, Object-Oriented Design, Probability & Statistics, Machine Learning, Advanced Computer Architecture.
Research: 4 semesters of research into concurrent programming languages to help find bugs at compile-time. To be presented at ECOOP 2021.

Experience

Jane Street Jane Street Capital — Networking Dev & Commodities

Software Engineering Intern

Jun–Aug 2021

Created a router configuration generator for multicast networks. As with most trading firms, Jane Street makes extensive use of multicast networking. Each time a new multicast network gets set up (e.g. building up a new data center) Network Engineers need to plan out the basic layout of the network, and then configure each router to know about the various groups, how to route messages, etc. This second step is a lot of work, and often requires duplicating similar information between different routers. And repeated work also means that there's potential to make mistakes each time the information is added to a new router. To improve this process, I spent the first half of my internship extending the internal networking library to parse, format, and generate these multicast configs. The final step of the project was setting up a tool that network engineers could use to translate their high-level description of a new data center into the individual configuration files for each router.

Added smarter caching to data-fetching framework. The second half of my internship was spent on the Commodities trading desk, where my main project consisted of improving caching in a new framework called Datafetcher. Datafetcher is essentially a fancy dependency injection framework, in that it provides the usual dependency injection features (easy testing) but can also automatically batch fetches and cache their results. A few internal apps had already been converted to using Datafetcher, and while it showed some instant performance improvements, there were still some situations where caching wasn't good enough. In particular, sometimes apps would fetch the same data multiple times and then run some further computations on the fetched data. While the initial fetches were all cached correctly, programs still had to repeat all the subsequent work because the final results of computations weren't cached. Since the computations all used deferred evaluation, it wasn't possible to simply memoize the results with existing tools. I spent a few weeks coming up with an interface for memoizing these computations (with the goal of making it type-safe and easy-to-use), then converted an existing app to use Datafetcher and spent some time documenting best practices for the framework.

Citadel Securities Citadel Securities — Advanced Technology Group

Software Engineering Intern

Feb–Apr 2021

Built a high-throughput end-to-end load testing framework. To gain confidence in mission-critical systems, it's important to know their performance charateristics and bottlenecks. Stress testing a system is a powerful way to measure its limitations and gain insight about its weakest links. During my internship, I was tasked with designing such a system for a new app. I later used this framework to find, document, and suggest improvements for several bottlenecks in the system. Before leaving, I also got to set this up as a regression test, so that we could be confident that performance would only improve with future changes.

Two Sigma Investments Two Sigma Investments — Storage Reliability Engineering Team

Software Engineering Intern

May–Jul 2020

Developed a unified distributed storage monitor. As a quantitative hedge fund, Two Sigma makes extensive use of big data. Hundreds of petabytes of data are stored in various systems across the firm. To help users understand the impact of their data, I designed a service that collected stats on user's storage locations. This came together as a REST API that allowed for querying these stats, giving users insight into the cost, impact, and size of their storage.

Google Google — Node.js Team

Software Engineering Intern

May–Aug 2019

Researched solutions for porting native libraries to Node.js WebAssembly. WebAssembly promises a new model for writing web apps: high performance, cross-platform, secure, and most of all an easy compilation target. Node.js apps frequently interface with native libraries, but support for portable native libraries is lacking. Using feedback from Node.js users, I experimented with several ways to compile native libraries to WebAssembly and package them for use with Node.js. My work began with a simple C-to-Node.js bindings generation tool and ultimately culminated in a proof-of-concept port of the Node.js API (NAPI) to WebAssembly.

Rolltrax Rolltrax

Co-founder & Software Engineer

Oct 2017–May 2019

Built an education technology Software-as-a-Service startup from the ground up with two partners. Our product targetted work-based-learning students — high school students who engage in internships for academic credit. To help solve the problems of educators around the state, we designed an all-in-one platform to manage attendance, employee evaluations, messaging, and more.