Rajesh Mani

Project Team Lead at Caterpillar Inc.

Chennai, Tamil Nadu, India

About

Project Team Lead at Caterpillar Inc

Experience

  • Caterpillar Inc. (Full-time · 14 yrs)
    • Project Team Lead
      Jun 2020 - Present · 6 yrs 1 mo

    • Senior Software Engineer Team Lead
      Aug 2018 - May 2020 · 1 yr 10 mos

      Product : Locomotive Interface Gateway Pushing Locomotive Blackbox data to REST Endpoint for IoT applications: - Designed Architecture and developed s/w for pushing locomotive data to REST apis - Developed REST API's with Node JS-Express backend & python flask for data transfer - The data pushed to REST api's is served to customers by fleet management solution via Web interface Stack used: - libcurl for http communication - JSON for Modern C++ library - Postman, python requests for REST api testing Performance tuning and benchmarking:  Identified areas of bottleneck in app with perf and google benchmark  Optimized code in hot path with move semantics, efficient cache access, elimination of cache line false Sharing, use of appropriate data structures to reduce cache misses  Introduced optimizations to gain 7% increase in application runtime performance ==>GRPC Common Data Access(CDA) Server: Development of Microservices solution using GRPC (HTTP/2) / protocol buffers - This service runs on Linux platform - Generated Server code and Client stub using proto compiler - Defined protobuf schema for message exchange - Support both unary and server streaming - Implementation of server business logic to handle client requests RESTful API development with restbed C++ library ==>C++17 improvements in support tools - Replaced SFINAE with if constexpr (compile time metaprogramming ) - Replaced heavy usage of std::string with string_view for perf gains - Used C++17 parallel STL algos for heavy number crunching ops ==>Modern C++Trainings - Delivered hands on technical trainings for STL containers, algorithms, Smart pointers, move semantics, Async c++ with future/promise, Boost libraries, C++11, C++14, C++17 features, Performance tuning & optimization techniques, Best practices and idiomatic C++ development, compile time meta programming, Basics of GPU computing with Cuda/OpenCL https://github.com/rajeshceg3/cpp_training

    • Senior Software Engineer
      Sep 2015 - Jul 2018 · 2 yrs 11 mos

      Product ownership :  Locomotive Computer  Wayside Data Processor - Tech stack : C++, Linux , gcc - Workflow : Agile Environment Developed on board locomotive system software and new features requested by customers Protocols : HTTP, REST, SSH, SFTP, CAN, TCP/UDP Achievements: ==>Optimization of Data Meters Architecture, - Proposed the solution to migrate Data Meters from software to config (xml) based architecture - Implemented the software framework changes required to bring this change - Received Innovator award for implementing this solution, as it led to $35K dollar cost reduction / year ==> Delivering solutions for field issues: Field issues are reported from running locomotives. It is imperative to minimize downtime to avoid revenue loss. Provided timely fixes and solutions for field issues through following process, - Collection of logs from back office tool - Analysis of the logs to identify root causes with gdb, top, valgrind, strace, vmstat, timestamps in logs, looking for sudden spikes in CPU/ RAM usage, spotting skewed behaviors - Reproducing the issue in a controlled lab environment with requisite hardware setup - Subjecting the fixes to multiple levels of testing (Functional, Acceptance, Long run) ==>Developed logging and benchmarking libraries for debugging purpose: - Logging library enables developers to locate the offending function quickly during a crash - Used RAII to track function entry and exit, used singleton design pattern - For benchmark, used RAII with chrono library functions to create a new type. This class is used to identify execution time of any function ==>Transformation of a C++98 based codebase to C++14 standard: Features incorporated : Smart pointers for memory management, RAII style resource managing classes, Lambda functions, Replaced raw loops with intuitive STL algorithms ( Yes, Inspired by sean parent !!!), constexpr, Implementation of Concurrency with std::thread, async, future