Programming, Software, and Hardware
Python
I have a strong grasp of the Python programming language since most of the code I wrote in my last company was in Python. I've collaborated with my colleagues in developing a Python-based post-silicon validation tool for server class CPUs. Before that, I used Python in school for my master's thesis. There, I created a speech emotion recognition model using ML libraries such as Tensorflow and Scikitlearn. I've also used math and visualization libraries such as NumPy, Pandas and Matplotlib.
Bash
I was part of a team that created a post-silicon validation tool for server CPUs. The OS-based validation tool was written in Python and Bash.
Command-line Tools
After working with Linux for a few years, I've gotten used to using various different command-line utilities. I've used ssh to remotely log into servers and copied ssh keys for passwordless logins in order to run MPI workloads. I've used rsync and scp for copying large files between nodes. I've used grep and find to look for files/directories and their content. I've used top and htop for monitoring running processes and terminate them if needed. I've used df and du to check disk usage. And I've also used tmux for creating concurrent, persistent sessions and dmesg for checking kernel logs - both for debugging purposes.
Git
I regularly collaborated with my colleagues at Intel. We would often work on different parts of the same project. We relied heavily on Git for version control. Even for individual projects, we used Git to frequently update our code and documentation. We submitted PRs on GitHub which would then be reviewed by our peers and our tech lead.
Docker
I'm very familiar with Docker since I used to always test my code (tools, applications, etc.) inside Docker containers before creating PRs. I'm also familiar with Containerd since my previous team used Containerd images to run longer tests through Kubernetes in Jenkins and I often had to debug the container images if there were any errors during execution.
Kubernetes
Even though I haven't personally set up a full-blown Kubernetes cluster, I did create a one-node cluster using minikube and familiarized myself with concepts like pods and manifests, and learned some kubectl commands along the way. As a content and tool developer, I used to run quick tests in my development node within Docker containers just as sanity checks. Once a test was ready to be scaled out for a longer execution, we would run them through Jenkins. We updated the test parameters in YAML config files and Jenkins would then pick them up and run Containerd containers through Kubernetes across multiple machines in the execution cluster. After the tests ended, the results would appear automatically in Elasticsearch through pre-built Kibana dashboards which we used to review the stdout/stderr and kernel logs.
Software Toolchain
While working at Intel, I had to incorporate open-source as well as internal applications for our Python-based validation tool. I obtained the source code for the open-source applications and used different compilers such as GCC/G++ and ICX/ICPX along with command-line tools such as make and cmake to create binaries to be used with our tool. We had internal versions of these compilers which supported instruction sets for our company's unreleased products.
Vim
I picked up Vim not because of necessity, but because of curiosity. Growing up, I used to watch movies where the hacker character would solely rely on his keyboard in order to break into a mainframe or something along those lines. I used to find it fascinating. I heard about vi and looked up tutorials online. It took some time to get used to the different modes and commands. But once I got up to speed, I could see why it was so beloved in the developer community.
Jira
I've used Jira for a couple of different reasons at Intel so I'm quite familiar with its features. Firstly, I've used it to file maintenance tickets whenever my development node was down or required a hardware or software upgrade. The lab technicians would respond to my tickets and fulfill my requests by working on the item(s) listed on the tickets. I've also used Jira for my own progress-tracking. We used to conduct regular stand-ups in order to address and resolve any pending issues of our team members with the help of our tech lead. The tickets would make these meetings more efficient as there would be less time explaining the issues and more time solving them.
ElasticSearch
In my previous role at Intel, our execution team had set up Kibana dashboards which developers like me would look into in order to debug regression tests. We used the different filters available in Kibana for pinpointing the exact moment test failures occured and extract the error messages (standard output and error, as well as serial logs) for resolving the issues.
C/C++
C was the first programming language I learned. I took the "Structured Computer Programming" course during my first semester at Shahjalal University. In my second year, I used C in 'Numerical Analysis'. After that, I've frequently coded in C. I recently picked up C++ when taking the course "(CAE) Simulations on HPC Systems" at Texas State.
MATLAB
I first used MATLAB at Shahjalal University when taking the course "Signals and Systems". After that, I've used MATLAB occasionally. I also used MATLAB for my master's research, for adding controlled amounts of noise to audio signals.
R
I learned the R programming language when taking the "Regression Analysis" course at Texas State. We coded in R Studio.
HTML/CSS
I actually learned HTML and CSS for developing this website.
Linux
My earliest exposure to Linux was back in school. Since Texas State's LEAP cluster nodes had a Linux-based operating system (CentOS), I had to learn Linux commands in order to use the cluster for my projects and assignments. My real experience with Linux began at Intel where I had to constantly work through the shell for accessing remote servers, either using the Terminal program or a more, feature-rich terminal emulator like MobaXTerm. I'm well-versed in a wide variety of command-line utilities and know myself around the Linux filesystem. I've worked on several different Linux distributions. I've set up and used Ubuntu in my personal computer. I've extensively used CentOS at work. And I've used Raspbian in a school project.
Anaconda
I became familiar with Anaconda when I started learning Python. Jupyter Notebook is my IDE of choice when coding in Python. I find it to be very clean and easy to use.
Raspberry Pi
In school, me and my friends made an Automatic Recording Devices (ARD) for tracking a species of toads that were going extinct. For processing the sound of the toads we used Raspberry Pi 3. It's there where I learned about the I/O interface and software of a Raspberry Pi.
OpenMP/MPI/OpenACC/CUDA
I learned these parallel computing concepts at Texas State, while taking the course "(CAE) Simulations on HPC Systems". We used Texas State's very own LEAP cluster and the HiPE servers to run our codes. I selected C++ over Fortran as my preferred programming language for this course since I was already familiar with C.
COMSOL Multiphysics
COMSOL was the primary simulation software I used for my undergraduate thesis. My friends and I modeled several piezoresistive pressure sensor structures in COMSOL.
Arduino Uno
I've worked on various projects using Arduino. The fact that Arduino Sketches are made using C made it an easy learning experince for me.
Certifications
edX Verified Certification for A System View of Communications: From Signals to Packets (Part 1)
The Hong Kong University of Science and Technology (HKUSTx), January 2021.
(To view the certificate, click here.)
Coursera Verified Certification for Wireless Communications for Everybody
Yonsei University, November 2020.
(To view the certificate, click here.)