User:Vishnuparammal

From Octave
Revision as of 18:16, 27 March 2020 by Vishnuparammal (talk | contribs)
Jump to navigation Jump to search

A: An introduction

  • My name is Vishnu Harikish Parammal. I am a third-year Electronics and Telecommunication engineering student at Veermata Jijabai Technological Institute, Matunga, Mumbai. I am a highly passionate, self-motivated individual with a never-give-up attitude.
    • Languages I speak: Malayalam (native), English (upper-intermediate), Hindi (upper-intermediate), Marathi (Intermediate).
    • I have a strong background in electronic circuit designing, computer science(data structure, OOP, database management, cryptography), mathematics (linear algebra, numerical analysis and calculus) and robotics.
  • I believe that GSoC will be an absolutely amazing learning experience. I have been working in small groups, but to be able to work in a massive code contribution network is what GSoC introduced me to. The level of expertise available here will help me hone my developer skills. It has been my entry point to the open-source world to which I am highly indebted. Not to mention the prestige of being a part of GSoC and its effect on my future opportunities.
    • I don't have any previous experience with the GSOC.
  • Since my under graduation days began, I have been relying on Octave as my mathematical genie. From finding an inverse of a matrix to plotting brain wave samples, Octave has helped. I have been feeling a very strong sense of giving back. With whatever limited knowledge I have, I wish to contribute. I know there is a lot to learn, and I am really excited about it.

C: Contact

  • Nick name on IRC: vishnuparammal
  • I live in Mumbai, India (UTC +5.30). My location won't change over GSOC duration.
  • I usually code from 10:00 to 14:00 and then from 17:00 to 21:00.

E: Coding experience

  • C/C++: I started using C++ as a part of my college curriculum. Additionally, I studied data structures in C++. I moved on to use it in various micro-controller based projects. Describing a few of them:
    • 3D Mapping and odometry: Obtaining 3D point cloud of a closed room and performed odometry using 1D LiDAR sensor and servos. The C++ code was written into Atmega16 micro-controller. For plotting the points, I used python matplotlib library. Project Link [1] [2]
    • Maze-runner: Designed a C program to completely explore a complex maze in first-person perspective. Implemented graphs to store the entire maze dynamically. Obtained the shortest path using Dijkstra's algorithm. Project Link[3]
    • WiFi-bot: Designed a web-page controlled bot connected to a common WiFi network. The C++ code was written into NodeMCU chip with HTML elements embedded into it. Project link [4]
  • Octave: Octave has been by far the most used language in my curriculum. Needless to mention the simple yet powerful syntax has made life of engineers quite easy. I have been using octave for 2 years now in the following subjects:
    • Analog Communication Systems
    • Digital Communication Systems
    • Digital Signal Processing (mini project - audio filtering)
    • Computer Communication Networks
    • Data Compression Techniques
    • Numerical Techniques
  • OpenGL: The first project I mentioned in my C/C++ experience (3D mapping) required plotting. I had tried an implementation with OpenGL for the purpose. To be honest, I had a reference code and only modified it as per my needs. This gave me an extremely basic idea of OpenGL.
  • Python: This language has been the beast of my projects. My goto language for scripting purposes and project-Euler problems. Describing a few of my projects:
    • PLC security: I have worked on vulnerability analysis and penetration testing of PLC devices. I was responsible for writing malware scripts and modifying CIP protocol packets in a network
    • LiFi: Visible Light Communication implemented for sharing of data between multiple devices (text, images and other formats). I was responsible for managing the data fragmentation, packaging and directing data to the USB port on the sender device, and all the reverse operations by the receiver device using python. Project link[5]
    • The n game: It was the very first code I wrote for myself. A generalized version of the famous "21 game". Project link[6]
    • Astro-shoot: A shooting game set in space. Used pygame library for GUI. Project link[7]
  • JavaScript: Intermediate experience in front-end development
    • Simulighter: A browser-based Ray optics simulation software. Used p5.js library for GUI. Project Link[8]
    • Visualizing Fourier: A graphical visualization of Fourier series and transform with an application of convolution in audio processing. Project link[9]
  • Java: Part of the college curriculum. Intermediate experience.
    • Trace_It: A software capable of plotting graph of any polynomial. Cross-platform implementation for Windows, Linux and Android. Used JavaFX for GUI.
  • I have experience using PostgreSQL for database management.
  • My best experience being in a development team was for my Java project, Trace_It. Earlier, I liked to 'code' my projects single-handedly (thinking it was better-off alone), but then working with a team gave me some new insights. I understood the importance of why and how tasks should be defined and divided among the team. I also got the gist of time and resource management and the inevitably important role they play in a team project. I learnt to use git with collaboration. We faced many merge conflicts. Even had to delete the repository and start over. There were suggestion, revisions, conflict of ideas, differences in coding style, but we worked through it all. I learnt many skills like coordination, communication, feedback, trust, focus and a sense of respect for opinions different than mine. After weeks of early-morning and late-night efforts, we completed the project. The feeling itself was rewarding for me.
  • Bugs solved: I have submitted a patch for the octave bug(#57774)[10].

F: Feeling fine

  • I am new to IRC. I have used mailing lists to communicate my doubts and ideas very often.
  • I am new to Mercurial but I used it to clone the main octave repository and during my work the latest days in the bug (add, commit, generate the patch)
  • I have 3 years of experience using git. All my major projects are being maintained there.
  • I am new to the wiki.
  • Familiar with gdb, gcc and make.
  • After having spent some time with the community, I have started involving my peer group here. They motivate me and I would love to keep contributing with them.

O: Only out of interest

  • I heard about octave two years ago in college as an open-source alternative for MATLAB and have been using it for our digital signal processing, data compression, numerical techniques lab since.

P: Prerequisites

  • I have a Windows 10 home with an Ubuntu 16.04 LTS VM and WSL.
  • I have my own laptop and a good internet connection at home.
    • I can access internet connection any time during the day.
    • I estimate that I can code around 10 hours a day.
  • This is my machine, I can access it anytime I want and install any software.

S: Self-assessment

  • I view criticism in a positive way. It is honesty, and it spurs me to do better. I take it as an opportunity to improve.
  • I believe that discussions are a very important part of development. But, I usually start working with the tasks on hand. Later on, after any changes are discussed, I get to learn the error in my ways and make necessary improvements. This method also helps me explain my ideas better during discussions, as I have parts of my implementation ready. I realize that in the process, some parts of work may have to be discarded. But I believe the learning experience is more worthwhile.

Y: Your task

  • Did you select a task from our list of proposals and ideas?
    • If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. Please also wiki-link the page for your elaborated proposal here.
  • Please provide a rough estimated timeline for your work on the task. This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.