Amaan Cheval,印度卡纳塔克邦班加罗尔的开发者
Amaan is available for hire
Hire Amaan

Amaan Cheval

Verified Expert  in Engineering

Software Developer

Location
Bengaluru, Karnataka, India
Toptal Member Since
October 9, 2019

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

RTEMS (Open-source Organization)
c++,汇编,C,嵌入式系统,内核,Linux内核,网络编程...
Droplet Computing
Rust,快速模拟器(QEMU),网络,VPN, STUN/TURN, ICE, TCP/IP, UDP...
Toptal Client (under NDA)
C, Intel DPDK, Intel, Linux Kernel, LXC, TCP, Assembler x86, eBPF, Arduino IDE...

Experience

Availability

Part-time

Preferred Environment

Git, Emacs, Linux

The most amazing...

...我写的代码是从FreeBSD的内核移植UEFI引导加载程序, 并将其适应于RTEMS,以便RTEMS可以加载ELF内核,而不管UEFI/BIOS.

Work Experience

Maintainer of x86-64 BSP

2018 - PRESENT
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, 对他们的项目给予反馈和指导.
Technologies: c++,汇编,C,嵌入式系统,内核,Linux内核,网络编程, Hardware, Microcontrollers, Embedded Software, Embedded Hardware, Cryptography, Networking, Encryption, UEFI, Firmware, Documentation, Robotics, ASCII, UTF-8, Embedded C, Embedded C++, Real-time Operating System (RTOS), Device Drivers, Linux, Quick EMUlator (QEMU), Linux Kernel Modules, Embedded Linux

Software Developer

2023 - 2023
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.
Technologies: Rust,快速模拟器(QEMU),网络,VPN, STUN/TURN, ICE, TCP/IP, UDP, WireGuard, Boringtun, Shell, Embedded Linux

Embedded Software Engineer

2021 - 2022
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主机上的所有流量执行负载平衡/预过滤.
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, Debian Linux, Linux Kernel Modules, Kernel Programming, KVM, Embedded Linux, Linux Device Driver

Full-stack Developer and DevOps

2020 - 2020
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.
Technologies: Amazon Web Services (AWS), Amazon EC2, SSH, Docker, Kubernetes, Electron, Chrome Extensions, PostgreSQL, TypeScript, GraphQL, React, Node.js, JavaScript, Cryptography, Encryption

Embedded Engineer

2019 - 2020
MindSea
  • 为新的触摸屏编写和定制Linux内核驱动程序(包括输入和显示驱动程序), 这样它就可以在安卓系统中完全发挥作用(亮度), orientation, resolution, etc.).
  • 增加了对Android应用程序通过SELinux限制访问硬件串口的支持.
  • Helped hardware teams determine smart battery packs, controller ICs, 以及Android设备电池功能所需的充电电路, 基于现有的Linux驱动程序和功能需求.
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, Linux Kernel Modules, Kernel Programming, Embedded Linux, Linux Device Driver

Systems Programmer

2017 - 2019
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的内在特性.
Technologies: Flask, Python, Docker, OCaml, JavaScript, Assembly, WebAssembly, C, Rust, Embedded Systems, Kernel, Linux Kernel, Network Programming, Hardware, Microcontrollers, Embedded Software, Embedded Hardware, Cryptography, Networking, Encryption, Yocto, UEFI, Firmware, ASCII, UTF-8, Embedded C, Embedded C++, Device Drivers, Linux, libvirt, Quick EMUlator (QEMU), Debian Linux, Linux Kernel Modules, Kernel Programming, Embedded Linux, Linux Device Driver

Developer Success Engineer

2016 - 2017
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. 这使得工程团队可以更多地专注于创造特性,而不是解释它们.
Technologies: Go, Python, JavaScript, Cryptography

HTML5 Game Developer

2010 - 2011
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.
Technologies: SVG, CSS3, HTML5, Canvas, JavaScript

Phone to Chrome

http://play.google.com/store/apps/details?id=com.amaan.phonetochrome&hl=en_IN
手机到Chrome是一个Android应用程序和Chrome扩展,用户可以安装轻松地分享链接从他们的移动设备到Chrome, having them magically opening on their desktops.

这款应用的下载量已经超过了5万次,并且广受好评.

Music Recommender System

http://github.com/AmaanC/music-recommender
这是一个用Python编写的概念验证应用程序,它使用LastFM庞大的用户音乐偏好数据库中的余弦相似度,根据新用户的品味向他们推荐乐队.

Pizza Delivery Bot

我们使用ATMEGA 2560微控制器来构建一个“披萨外卖”机器人. 披萨是不同大小的彩色热冷藏箱, and the bot had to recognize them, pick them up, 并在最佳时间内将它们送到柔性纸上标记的房屋.

我领导团队,编写微控制器上运行的大部分代码,而其他团队成员则组装机器人的硬件.

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

2014 - 2018

Bachelor's Degree in Computer Science

Mumbai University - Mumbai, India