

Results-oriented and innovative Senior Software Engineer with 7.8 years of experience. Easily communicates complex technical requirements to non-technical stakeholders. Excellent leadership record of leading development teams in enterprise-wide development projects.
Programming Languages:
C, C, Shell Scripting (Bash), Python (Beginner – Script Level)
Build Systems & Virtualization:
Yocto Project, Buildroot, Docker
Communication Protocols:
I2C, SPI, RS232, RS485, CAN, RTSP, OCPP
Debugging & Profiling Tools:
GDB, JTAG, Valgrind, Trace tools
Project & Version Control Tools:
Agile, Jira, Git, Gerrit, RCS
Operating Systems:
Linux (Embedded and Desktop), Windows
Networking & Testing Tools:
Socket Programming (TCP/IP, UDP), WebSocket, CURL, Wireshark, Postman
System & Kernel Development:
Linux System Programming, Linux Kernel Programming, Character Device Driver Development, Kernel Module Debugging
Security & Cryptography:
OpenSSL, OP-TEE (Trusted Execution Environment Integration, Secure Boot, TA Management)
Database:
SQLite (Embedded Database Integration)
Embedded Linux BSP & Board Bring-Up:
Experience with BSP customization and board bring-up for:
Emulation & Virtual Platforms:
QEMU (Open-source emulator for embedded Linux bring-up and testing)
Character Device Driver (Parallel Port Driver):
Developed a virtual SCULL-based character device driver in kernel space to simulate peripheral memory-type I/O behavior., Implemented character-by-character read/write operations using copy_from_user() and copy_to_user() system calls., Added support for trimming, seeking, IOCTL operations, and timing mechanisms to mimic real peripheral device behavior., Designed the system to operate without actual hardware, demonstrating proficiency in kernel module development and low-level memory management.
Client-Server communication using Sockets, Threads and IPC:
Developed a multi-threaded client-server architecture using Sockets, Threads, and Linux IPC in C and Bash., Employed FIFO, Pipes, Message Queues, and Shared Memory for inter-process communication, used Semaphores and Mutexes for synchronization., Supported both intra-system (AF_UNIX) and network-based (AF_INET) communication using Socket APIs., Server spawns a dedicated direct pipe, which further creates a processing thread to handle client data independently., In network mode, data is exchanged via file descriptors; processed results are written back through the same descriptors., In local mode, data flows through shared memory, and results are routed via message queues using client PIDs for identification.