Amaan Cheval
Verified Expert in Engineering
Software Developer
Amaan是开源的热心倡导者,也是面向RTEMS的x86-64 BSP的维护者, 用于太空任务的开源实时操作系统, including on NASA's Parker Solar Probe. 他还致力于在浏览器中运行的英特尔x86模拟器, sped up by a custom-made JIT compiler. He loves challenging problems, 从内核和编译器到分布式系统, cryptography, and reverse engineering.
Portfolio
Experience
Availability
Preferred Environment
Git, Emacs, Linux
The most amazing...
...我写的代码是从FreeBSD的内核移植UEFI引导加载程序, 并将其适应于RTEMS,以便RTEMS可以加载ELF内核,而不管UEFI/BIOS.
Work Experience
Maintainer of x86-64 BSP
RTEMS (Open-source Organization)
- 对GCC做了上游补丁,使其能够正确地包含C运行时文件(例如.e. (调用“main”函数)用于RTEMS x86-64目标二进制文件, 并且允许自定义GCC规范选项(例如-qrtems), 它将标准RTEMS库链接到一个程序中).
- 评估UEFI支持在不同操作系统上的功能, including FreeBSD and Arch Linux, 与开源社区讨论每种方法的优缺点, 最后在一致同意后将FreeBSD的UEFI引导程序移植到RTEMS.
- 开发了使用PIT(以固定频率运行)校准Intel x86-64动态APIC计时器的代码. Since RTEMS is an RTOS, timing is of critical importance, 这一步决定了内核如何处理任务调度和上下文切换.
- 实现了RTEMS内核初始化上下文所需的所有代码, 切换上下文(用于先发制人的上下文切换方案), 通过完美地存储和恢复所有机器状态(i.e. hardware registers, flags, etc.).
- 为RTEMS内核构建了一个系统,使其能够钩入微处理器的中断, 并在中断时正确地触发用户订阅的任务(例如. in a space mission, 它可能是“计算每次传感器检测到运动时推进器所需的重新校准”——传感器可能附加到硬件中断, which the kernel will handle, and schedule the user's task for).
- 实现了一个轮询控制台驱动程序,以允许RTEMS内核通过UART将消息记录到控制台.
- 指导学生参加Google的Code- in和Google的Summer of Code, helping them familiarize themselves with RTEMS, debug issues, 对他们的项目给予反馈和指导.
Software Developer
Droplet Computing
- 用Rust为QEMU开发了一个跨平台的网络后端(类似于Slirp),支持通过加密的VPN隧道无缝连接虚拟机,就像它们在LAN上连接一样.e., peer A=192.168.1.1, peer B=192.168.1.2).
- 支持通过WireGuard/BoringTun进行点对点IP报文传输, regardless of peer's network conditions (i.e., NAT traversal for "home router"/ISPs with NAT, UDP hole punching, 尽可能地支持端点相关映射(EIM)).
- 支持基于防火墙/规则的用户模式组网,使虚拟机不仅可以访问对端虚拟机, but also the host's LAN, the internet, etc.,为虚拟机适当解封装/封装TCP和UDP报文.
- 包括对基于libvirt/virsh的QEMU虚拟机的支持,使用Python脚本可以动态编辑libvirt虚拟机的配置,以使用Droplet网络后端而不是Slirp, etc.
Embedded Software Engineer
Toptal Client (under NDA)
- 设置专用32x100G交换机(Aurora Netberg 710), 可编程与英特尔P4(可编程的ASIC网络芯片和BSP)作为一个SPAN与端口镜像(i.e.在可配置端口上捕获数据包,以100 Gbps的速度镜像到其他端口).
- 构建了一个工具来检测金融市场数据pcap中的丢包/缺口, 作为证券交易所/交易商的诊断软件运行. 数据是基于UDP的专有网络协议.
- 构建了一个工具来跟踪TCP会话并计算各种rtt(往返时间), 用于初始连接(SYN/ACK)和每个后续消息(PSH/ACK),以便在金融市场分析系统中用于跟踪延迟问题.
- 使用与DPDK兼容的应用程序(如Suricata IDS/IPS)对Intel DPDK进行原型化,以确保更高的吞吐率,而无需在内核空间中处理数据包(DPDK主要通过作为用户空间运行时来加快网络处理速度)。.
- Maintained a 100 Gbps packet capture system, including configuring TinyCore OS, setting up Lua scripts, debugging Linux kernel modules, etc.
- 为一个基于eBPF/ xdp的程序原型化了一个英特尔DPDK替代品,该程序对Linux主机上的所有流量执行负载平衡/预过滤.
Full-stack Developer and DevOps
Toptal Client (under NDA)
- Created a Node.js back-end server, with a Next.js component and a custom Express.Js组件,构建为各种数据流水线应用程序的实时分布式实体存储.
- 内置Chrome扩展(1)监控RAM+CPU的使用情况在PC上,并自动暂停选项卡和(2)捕获历史档案, notes, 各种模式下的页面截图(例如所有访问过的页面的自动备份vs. only highlights, and more.).
- Built front-end components in React, 包括React Hooks,它简化了我们系统中实体存储中所有“实体”共有的某些方面:类型检查, permission-handling, undo/redo, and more.
- 设置一个带有Docker容器的Minikube pod的本地部署,这样AWS云和本地版本的基础设施是兼容的,同时仍然考虑到各种细节,比如DNS主机名, TLS certificates, and more.
- 在web前端构建一个Electron包装器,以使用诸如访问文件系统之类的本地特性.
- 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 Engineer
MindSea
- 为新的触摸屏编写和定制Linux内核驱动程序(包括输入和显示驱动程序), 这样它就可以在安卓系统中完全发挥作用(亮度), orientation, resolution, etc.).
- 增加了对Android应用程序通过SELinux限制访问硬件串口的支持.
- Helped hardware teams determine smart battery packs, controller ICs, 以及Android设备电池功能所需的充电电路, 基于现有的Linux驱动程序和功能需求.
Systems Programmer
Droplet Computing
- 帮助开发在浏览器或Node上运行的英特尔x86模拟器.通过编译源代码到WebAssembly . js环境, 在一个小团队中,每个成员总是负责许多组成部分.
- 创建了自动生成随机的方法, 模拟器支持的大多数机器指令的确定性测试. 测试fixture是通过在oracle(如Intel x86主机的QEMU或GDB)上运行测试而生成的。, 然后通过仿真器与实际运行结果进行比较, in real-mode.
- 加快了测试夹具的生成,从3分钟, down to a solid 15 seconds, for hundreds of automatic tests, 通过并行化进程和减少状态设置和拆除.
- 实现了在客户操作系统中检测热代码基本块的各种技术,并将它们及时编译到WebAssembly中, 从而允许模拟器通过直接执行客户操作系统的指令来加速, 不需要从模拟内存中读取,也不需要重新解释指令, 支持动态系统有效地使缓存块失效.
- 帮助构建客户机到主机交互之间所需的网络堆栈桥接, to allow the guest's networking events, such as sending physical Ethernet frames, 正确地解包成主机操作系统实际可以发送/接收的TCP/UDP数据包, 然后将主机的网络响应重新打包到客户机操作系统的物理框架中.
- 为模拟器构建了自定义的仪器分析器, 能够动态地检查和发现应用程序中的瓶颈.
- 实现了硬件浮点单元(FPU)的大部分仿真代码, MMX, and SSE instructions, 使更现代的应用程序,如Microsoft Word和Wine在模拟器中正确运行.
- 尝试使用KLEE的符号执行方法来自动增加整个项目的代码覆盖率. 由于我们的编译器链以WebAssembly为目标,测量代码覆盖率还需要扩展LLVM的内在特性.
Developer Success Engineer
Auth0
- 开发了一个自定义应用程序,作为任何客户机的SAML身份提供程序, 并且允许发送回故意格式化的SAML响应. 这个应用程序在调试客户在将他们的系统与Auth0的SAML系统集成时遇到的问题时非常有用.
- 为使用多种技术的客户提供支持, regardless of familiarity with said technologies, 通过询问相关问题并了解如何在不同的环境中收集相关的HTTP请求(例如.e. capturing HAR files and analyzing those).
- 作为各种授权协议的专家指导客户, including OAuth, OpenID Connect, SAML, and WS-Fed, 并帮助客户安全地构建应用程序.
- 创建与授权相关的特定技术主题的内部和外部文档, thereby reducing my own bus factor.
- 自愿充当“门房”,回答公司其他员工关于授权流程的任何问题, its features, its security guarantees, recommended methods of use, etc. 这使得工程团队可以更多地专注于创造特性,而不是解释它们.
HTML5 Game Developer
CodeHeads
- 将各种基于Flash / ActionScript的游戏移植到HTML5中,以便它们也能够在移动设备的网页浏览器上运行.
- Developed several 2D platformer games, puzzle games, and action games for various online gaming portals.
- 为游戏开发的常见元素(如精灵管理)创建自定义游戏框架, media management, UI and screen elements, pub/sub event management, etc.
Experience
Phone to Chrome
http://play.google.com/store/apps/details?id=com.amaan.phonetochrome&hl=en_IN这款应用的下载量已经超过了5万次,并且广受好评.
Music Recommender System
http://github.com/AmaanC/music-recommenderPizza Delivery Bot
我领导团队,编写微控制器上运行的大部分代码,而其他团队成员则组装机器人的硬件.
Skills
Languages
C++, Embedded C++, Rust, C, JavaScript, Python, Assembly, Embedded C, NASM, OCaml, Go, HTML5, CSS3, GraphQL, TypeScript, Lisp, Agda, R, Assembler x86
Libraries/APIs
Node.js, React, libvirt
Tools
Emacs, VirtualBox, VMware, NGINX, GDB, Kibana, Git, Canvas, Mocha, Intel DPDK, VPN, Shell
Platforms
Kernel, Linux, Arch Linux, Embedded Linux, AVR, Quick EMUlator (QEMU), Raspberry Pi, Debian Linux, Kernel Programming, Kubernetes, Amazon EC2, Amazon Web Services (AWS), Android, Docker, Arduino, Intel, KVM
Storage
PostgreSQL, MongoDB
Other
Embedded Systems, Chrome Extensions, WebAssembly, Linux Kernel, Network Programming, Firmware, Arduino IDE, Hardware, Microcontrollers, Embedded Software, Embedded Hardware, Cryptography, Networking, Encryption, Robotics, Device Drivers, Cordova, Reverse Engineering, LLVM, QNX, Yocto, UEFI, RFID, ASCII, UTF-8, Real-time Operating System (RTOS), Linux Kernel Modules, Linux Device Driver, SVG, AOSP, SELinux, WebSockets, SSH, ARM Embedded, LXC, TCP, eBPF, Documentation, STUN/TURN, ICE, TCP/IP, UDP, WireGuard, Boringtun
Frameworks
Flask, Express.js, Electron, Svelte
Paradigms
持续集成(CI)、持续部署、敏捷、函数式编程、DevOps
Education
Bachelor's Degree in Computer Science
Mumbai University - Mumbai, India