Jagvir Dehal - Software Developer

Email: [email protected] | Github: jagvirdehal | LinkedIn: jagvirdehal

Summary


Work Experience


Tesla Motors

Maps and Navigation (C/C++, Go, Python)

  • Developed a vehicle simulator for navigation validation (Python, C++)
  • Built a replacement for our firmware networking code to utilize gRPC (C++, Go)
  • Implemented a new weather radar service in Go, which in turn, saved $1.8 million.
  • Integrated an AWS Client into our Navigation infrastructure to significantly reduce costs and deployment time
  • Reproduced and patched a 2 year old networking bug in our production K8s deployment, as well as an ETA update bug caused by a race condition
  • Contibuted a total of 122 PRs throughout the internship

Ford Motor Company

Bluetooth Drivers (C/C++)

  • Developed a tool to tunnel UART bluetooth data from an Android device (car) over a TCP/IP socket to a Linux workstation in C
  • Cleaned up 10,000+ bugs and warnings in a large C/C++ and Java codebase
  • Worked on filtering PIIs from Bluetooth packets using C/C++ and Wireshark
  • Gained a solid understanding of the Make/SOONG build system in AOSP

Advanced Micro Devices (AMD)

Display Abstraction Layer (C/C++)

  • Updated 4 year old driver code for an FPGA GPU to enable DisplayPort over USB 4 using latest drivers.
  • Refined my ability to use debug tools such as gdb and WindDBG to quickly understand a massive C/C++ codebase (the AMD display driver).
  • Resolved issues and completed USB4 compliance process for Ryzen 6000 mobile GPUs using Voyager M4x, UCD-400, and debugging tools

NCR Corporation

Systems Software/Architecture (Python)

  • Developed a firewall automation portal to enhance NCR's new security policies
  • Learned and utilized new technologies such as Ansible Tower (AWX), Fortinet, and LDAP
  • Collaborated remotely with teams in India, Ireland and USA
  • Submitted a professional report to NCR's security team to support the adoption of my firewall portal

Projects


Real-time Operating System from Scratch

(C++)

  • Created a microkernel OS for a Raspberry Pi to control a model train set from the 1980s
  • Implemented a scheduler, interrupt handler/controller, and several user tasks to build up our operating system in C
  • Created several patches to QEMU's source code to implement Raspi functionality that was not yet implemented
  • Collected velocity and acceleration data of the model trains to accurately predict their positions, avoid collisions, and route them efficiently

Java Subset Compiler

(C++)

  • Created a compiler for a subset of the Java language in C++
  • Autonomously tested compiler using the Fuzzing technique via LibFuzzer and LibProtoBuf Mutator
  • Compiler performs scanning/parsing of source code, static checking on the resulting abstract syntax tree, and code generation into x86 assembly

Custom Keyboard Firmware

(C)

  • Developed custom firmware for my ATMEGAU32 keyboard using QMK
  • Implemented a feature to dynamically display my WPM on the keyboard via backlights
  • Connected the keyboard to my smart home to control the lights and AC
  • Goal: To gain experience with open source software, creating firmware in C, and APIs

Chess Endgame Solver

(Python)

  • Developed a program that can arbitrarily solve endgame chess positions using graph theory
  • Optimized algorithms to work with large datasets upwards of 4.5 million graph connections
  • Utilizes data structure and algorithms knowledge to reduce time and space complexity

Flight Simulator

(JavaScript + Docker)

  • Developed an accessible flight simulation experience that uses a smartphone accelerometer to control the airplane
  • Implemented camera controls and movement from scratch using primative computer graphics (vectors, quaternions, etc.)

CNN Image Classification

(PyTorch)

  • Developed a project focused on improving CNN accuracy for image classification from unlabeled data
  • Utilized Principal Component Analysis (PCA) to normalize and reduce image complexity
  • Clustered images together using K-means clustering approach