Maintainer of x86-64 BSP2018 - PRESENTRTEMS (Open-source Organization)
Technologies: C++, Assembly, C, Embedded Systems, Kernel, Linux Kernel, Network Programming, Hardware, Microcontrollers, Embedded Software, Embedded Hardware, Cryptography, Networking, Encryption, UEFI, Firmware, Documentation, Robotics, ASCII, UTF-8, Embedded C, Embedded C++, RTOS, Device Drivers, Linux
- Made upstream patches to GCC so it would correctly include C runtime files (i.e. the ones that call the "main" function) for RTEMS x86-64 target binaries, and would allow for custom GCC spec options (such as -qrtems, which link the standard RTEMS libraries into a program).
- Evaluated how UEFI support functioned on various operating systems, including FreeBSD and Arch Linux, discussing the pros and cons of every approach with the open-source community, and finally porting FreeBSD's UEFI bootloader to RTEMS after unanimous agreement.
- Developed code to calibrate Intel x86-64's dynamic APIC timer by using the PIT (which runs at a fixed frequency). Since RTEMS is an RTOS, timing is of critical importance, and this step determines how task-scheduling and context-switching are handled by the kernel.
- Implemented all the code required by the RTEMS kernel to initialize contexts, and switch contexts (for pre-emptive context switching schemes), by perfectly storing and restoring all machine state (i.e. hardware registers, flags, etc.).
- Built a system for the RTEMS kernel to be able to hook into the microprocessor's interrupts, and to correctly fire user-subscribed tasks upon said interrupts (for eg. in a space mission, it might be "calculate the recalibration needed by the thrusters every time the sensors detect movement" - the sensors may be attached to a hardware interrupt, which the kernel will handle, and schedule the user's task for).
- Implemented a polling console driver to allow the RTEMS kernel to log messages to a console over UART.
- Mentored students for Google's Code-In and Google's Summer of Code, helping them familiarize themselves with RTEMS, debug issues, and giving them feedback and guidance on their projects.
Embedded Software Engineer2021 - 2022Toptal Client (under NDA)
Technologies: C, Intel DPDK, Intel, Linux Kernel, LXC, TCP, Assembler x86, eBPF, Arduino IDE, Hardware, Microcontrollers, Embedded Software, Embedded Hardware, Cryptography, Networking, Yocto, Kernel, Firmware, Raspberry Pi, Embedded C, Embedded C++, Device Drivers, Linux
- Set up a dedicated 32x100G switch (Aurora Netberg 710), programmable with Intel P4 (a programmable ASIC network chip and BSP software) to act as a SPAN with port mirroring (i.e., packet capture on configurable ports, mirrored to other ports at 100 Gbps).
- Built a tool to detect dropped packets/gaps in PCAPs of financial market data, to be run as diagnostic software for stock exchanges/traders. The data is a proprietary networking protocol based on UDP.
- Built a tool to track TCP sessions and calculate various RTTs (round-trip time), both to connect initially (SYN/ACK) and for every subsequent message (PSH/ACK) to be used in the financial market analysis systems to track down latency issues.
- Prototyped Intel DPDK with DPDK-compatible applications (such as Suricata IDS/IPS) to ensure higher throughput rates without needing to process packets in kernel space (DPDK speeds network processing up by being primarily a user-space runtime).
- Maintained a 100 Gbps packet capture system, including configuring TinyCore OS, setting up Lua scripts, debugging FPGA issues, programming Linux kernel modules, etc.
- Prototyped an Intel DPDK replacement for an eBPF/XDP-based program which performed some load-balancing/pre-filtering on all traffic on a Linux host.
Full-stack Developer and DevOps2020 - 2020Toptal Client (under NDA)
- Created a Node.js back-end server, with a Next.js component and a custom Express.js component, built as a real-time distributed entity-store for various data pipelining applications.
- Built Chrome extensions to (1) monitor RAM+CPU usage on PC and automatically suspend tabs and (2) capture historical archives, notes, pages screenshots in various modes (such as automatic back-up of all visited pages vs. only highlights, and more.).
- Built front-end components in React, including React Hooks that simplified certain aspects of our system common to all "entities" in the entity store: type-checking, permission-handling, undo/redo, and more.
- Set up an on-prem deployment of a Minikube pod with Docker containers such that the AWS Cloud and on-prem versions of the infrastructure were compatible while still accounting for various specifics such as DNS hostnames, TLS certificates, and more.
- Built an Electron wrapper around a web front-end to use native features such as accessing the filesystem.
- Architected various propositions for scalable, real-time, versioned, and permissioned data-stores, including technologies such as Kafka, Redis, Kubernetes, Nginx, and down to application-specific back-ends in Node.js.
Embedded Engineer2019 - 2020MindSea
Technologies: Embedded C, C++, Kernel, C, SELinux, AOSP, Android, Linux, Embedded Systems, Linux Kernel, Arduino IDE, Hardware, Microcontrollers, Embedded Software, Embedded Hardware, Networking, Firmware, RFID, Robotics, Embedded C++, Device Drivers
- Wrote and customized Linux kernel drivers for a new touchscreen (including both input and display drivers), such that it's fully functional with Android (brightness, orientation, resolution, etc.).
- Added support for Android applications to access hardware serial ports through SELinux restrictions.
- Helped hardware teams determine smart battery packs, controller ICs, and charging circuits required for battery functionality in Android device, based on existing Linux drivers and functionality requirements.
Systems Programmer2017 - 2019Droplet Computing
- Helped develop an Intel x86 emulator which runs in browsers or Node.js environments by compiling source code to WebAssembly, in a small team where every member was always responsible for many components.
- Created a method of automatically generating randomized, deterministic tests for most machine instructions supported by the emulator. Test fixtures were generated by running the tests on an oracle (such as QEMU or GDB for Intel x86 hosts), and then compared with the actual results of running through our emulator, in real-mode.
- Sped up the generation of test fixtures from taking 3 mins, down to a solid 15 seconds, for hundreds of automatic tests, by parallelizing the process and reducing state setup and teardown.
- Implemented various techniques of detecting hot-code basic blocks in the guest OS and compiling them Just-In-Time to WebAssembly, thereby allowing the emulator to be sped up by directly executing the guest OS's instructions, without having to read from emulated memory and having to reinterpret instructions, supporting a dynamic system for invalidating cached blocks efficiently as well.
- Helped build the networking stack bridge required between guest-to-host interactions, to allow the guest's networking events, such as sending physical Ethernet frames, to be correctly unwrapped into TCP/UDP packets the host OS could actually send/receive, and then repackaging the host's network response into a physical frame for the guest OS.
- Built a custom instrumentation profiler for the emulator, to be able to dynamically examine and find bottlenecks in the application.
- Implemented most of the emulation code for a hardware Floating Point Unit (FPU), MMX, and SSE instructions, enabling more modern applications such as Microsoft Word and Wine to function correctly in the emulator.
- Experimented with methods of symbolic execution using KLEE to automatically increase code coverage across the project. Measuring code coverage also required extending LLVM intrinsics due to our compiler-chain targeting WebAssembly.
Developer Success Engineer2016 - 2017Auth0
- Developed a custom application that would act as a SAML Identity Provider for any client, and would allow sending back intentionally malformed SAML Responses. This application proved very useful when debugging issues customers had in integrating their systems with Auth0's SAML systems.
- Provided support to customers using a variety of technologies, regardless of familiarity with said technologies, by asking relevant questions and knowing how to gather the relevant HTTP requests in different environments (i.e. capturing HAR files and analyzing those).
- Guided customers as an expert on various authorization protocols, including OAuth, OpenID Connect, SAML, and WS-Fed, and help customers architect their applications securely.
- Created both internal and external documentation on specific technical topics related to authorization, thereby reducing my own bus factor.
- Volunteered as a "concierge" to answer any questions the rest of the company had about the authorization pipeline, its features, its security guarantees, recommended methods of use, etc. This allowed engineering teams to focus more on creating features instead of explaining them.
HTML5 Game Developer2010 - 2011CodeHeads
- Ported various Flash / ActionScript based games to HTML5 so they would work in web browsers on mobile devices too.
- Developed several 2D platformer games, puzzle games, and action games for various online gaming portals.
- Created a custom game framework for common elements of game development such as sprite management, media management, UI and screen elements, pub/sub event management, etc.