Hi. I am Ayush Dwivedi, a Computer Science and Engineering undergrad who loves Mathematics and Theoretical Physics. I want to participate in the Google Summer of Code to learn and evolve as a Programmer and a scientist. This is my first time applying for a SOC. I chose Octave because Octave is everything I want to achieve through programming and I think it is the most ambitious Open Source initiative since I always found it weird that Matlab is proprietary. I am interested in how we use computers to solve problems of Mathematics and Physics. Octave is fascinating since it is a Mathematical programming language aside from that Programming language design has always been an area of keen interest for me.
My IRC freenode nick is: oneiro-naut. I live in India, time zone is Indian Standard Time(IST = UTC+05:30). I usually code around 9.00 to 23.00 in that 19.00 to 23.00 are my peak hours(I am mostly active after 18.00 because of college).
My Coding experience
I have done some projects in C++ using the SDL2 library due to my interest in simulating and visualizing Physics(and Mathematics) using GUI libraries. I have mostly programmed in C which includes writing a simple GNU Nano like text editor and a Bash like Linux Shell without using any external library(main goal is to implement my own Shell Interpreter). Interpreter design and state machines implementations have been a part of my projects in C++ which includes writing simple game sprite editors and minimal game engine. I have very basic knowledge of GUI development using Qt and little knowledge of OpenGL. I have never worked in a development team and have no experience in open source contribution. My biggest project till now is writing my own Unix Shell. I learned many concepts and developed many habits. I am still working on it. I learned to borrow code from open source repositories and use online developer communities for help and suggestions because of it. As of now I haven't contributed anything to the Octave project as I am still exploring and experimenting with it. I have aim to fix bugs and improve classdef and OOP support in Octave project.
My experience with Community platforms
I am quite active on community platforms like IRC, discord and have subscribed to developer mailing lists in the past.
Experience and familiarity with Developer tools
I use git quite often and am comfortable using it. Mercurial is relatively new for me but I am learning it as I explore more about the Octave project. I have never used Mediawiki neither have I contributed to any documentation before. Since I have programmed in C and C++ mostly, I have used GNU build and debugging tools like make,gcc and gdb at some point or the other. I have experience of using memory debugging tool Valgrind as well. When it comes to Octave project there is always going to be new things to learn and work on since it's all Mathematical here and Mathematics has no end. And I wish Octave to be as accepted and widely used as Matlab and even beyond that.
How I got to know about Octave
In college we have to use Matlab quite frequently for signal plotting and analysis. Therefore I have some experience of m-scripting already. I have known about Octave for quite some time now mainly because of my interest in Mathematical tools and knew it as the Open Source alternative to Matlab, which means a lot for me since I am a Linux user. As of now I have used Octave for completing my college assignments. But recently I separately built it from source so that I can start understanding the actual code behind the project.
I use Arch-Linux 64-bit linux distribution as my development OS. Currently I have limited access to internet which is roughly 1 GB of data transfer per day.
Criticism can feel discouraging at times but is a really important source of learning and improvement since knowing our mistakes is the key to evolve. As of now I have always worked alone but contributing to a large project and working in a community is something I always wanted to do. Before I start to work upon anything I usually take a lot of time just designing a basic flow of what I want to achieve on paper and when it comes to projects I will take more time to read the pre-existing code than coding something myself. And as a part of my understanding process I give more time community discussion to get my concepts and ideas right before I actually implement them. But when I will actually start to code I will not shy away from iterating over and over on something I am working on. At times when I was writing my Linux shell I had changed the entire skeleton of the project discarding entirely what I was doing previously and I did that many times. It was necessary to make it work but more than that it was necessary to make things work resulting from my own ideas.
My GSOC Idea
My Idea for a GSoC project:(it's not specifically listed in the idealist section of the getting started page)
- Improve classdef support in Octave.(there is a list of missing functionality and associated bugs which is not there in Octave but is supported in Matlab)
Currently these 3 features of classdef are yet to be implemented in Octave:
- events and listeners
- Property Validation Functions
Implementing any of these 3 features will be a milestone for me.
Link to my Project proposal is: []
Estimated timeline for my tasks and related sub-tasks is: