United States
- Compiler and system software engineer, extensive experience with the LLVM/Clang compiler framework and Linux. - Loves figuring out how stuff works to enable (and implement) the technology of tomorrow and the future. - Lives for connecting research design to actual development of meaningful projects. Whether it means managing the entire software stack from assembly language and pin settings up to production quality software systems. Interests include compilers, embedded, space systems, mechatronics, and system software. Works successfully in either independent or highly collaborative research environments.
- Architected and developed a generic virtual signal server application to emulate various target deployment platforms that in-house developed applications would be deployed on. - Implemented state machines replicating recorded message flows in TCP and UDP netstacks - Worked along side engineering team at integration days and after events to update both applications and virtual signal server code to resolve interaction discrepencies. - Performed application testing prior to events that showcased capabilities directly with customers to secure 20 million dollar annual contract
Project: BASTION - ASPLOS'23 • Designed a novel system call specialization defense technique for preventing code-reuse attacks • Implemented and evaluated prototype comprised of compiler analysis and runtime monitor to verify legitimate usage of system calls to uphold system integrity from attacker hijacking
Project: MARDU : Efficient and Scalable Code Re-randomization - SYSTOR'20 • Explored Return-Oriented Programming Attacks (Code-Reuse attacks) and how they can be prevented in current systems at a practical cost/implementation • Designed and implemented a compiler + kernel solution to defend against code-re-use attacks using LLVM/Clang, Linux kernel modification and Intel's HW Memory Protection Key Extensions (MPK) feature.
• Instructed ECE 2500 Computer Architecture to a class of approximately 70 ECE undergraduate students. • Responsible for preparing and presenting in-person lectures • In charge of creating/updating lecture slides, assignments, and exams Student Course Objectives: • Introduction to the processor-level components of a computer system such as: - Instruction Set Architecture (course focused on MIPS) - Processor Micro-architecture - Processor Memory Hierarchy - Use of Verilog Simulator
Systems Engineer - High Reliability Systems Department Project 1: Deployable Gas Detection System • Supported overall design, implementation, integration & test efforts; ensured proper configuration management was followed • Worked as part of team to refactor engineer's stand-alone code components into a single deployable system application • Designed, evaluated, & documented unit tests for individual components and overall system to ensure client requirements • Created, implemented, & integrated front-end web interface using Qt with rest of system • Devised utility scripts and code for team to streamline debugging, unit testing, live testing, and preliminary deployment of system Project 2: Space Flight Software • Space Flight Software QA project: Performed static analysis of preliminary flight code modules; resolved all reported issues • Developed and tested low-level drivers for prototype satellite instrument; gained familiarity with GR712RC ASIC, GRMON debugging program, Realterm, & custom FPGA interfaces
Project: Popcorn Linux - Automated Energy Saving Runtime Migration • Explored scheduling techniques in a heterogeneous setting to enable energy savings • Geared towards smart/autonomous scheduling of applications to save energy in datacenters such that efficient balancing and maximum throughput is achieved without overloading
Project: Popcorn Linux - Compiler design & implementation to support heterogeneous-ISA Linux kernel • Implemented LLVM/Clang compiler profiling and code transformation passes for enabling high performance computing in a heterogeneous setting to support the following configurations: - Xeon/Xeon Phi (X86+X86 Accelerator) - Xeon/ARMx64 (X86 + ARM) • Compiler profiling pass examines function and data locality within a given application • Compiler transformation passes use graph theory (e.g., S-T min cut) to identify and appropriately partition applications for maximum performance benefits • Compiler transformation passes also leverage equivalence classes concept in order to derive autonomous partitioning of code suitable for runtime migration. (Von Bank, David et. al., TOPLAS 1994)
• Create websites for clients • Corresponded with clients to sketch initial wants/needs/preferred style • Implemented typical frameworks such as: - Web Admin Interfaces using CSS, JavaScript, Python - Store Front-ends and connected back-end using MySQL