A: An introduction
- Please describe yourself in three sentences, one of them regarding your current studies.
- I'm Ameya Shenoy, a fourth-year engineering undergraduate, studying Electronics and Telecommunications, at St. Francis Institute of Technology, which is affiliated to the University of Mumbai and approved by the All India Council of Technical Education (AICTE).
I'm an organized, detail-oriented, conscientious self-starter and a fast learner. Although I'm from the Electronics and Telecommunications background, I have a keen interest in programming, especially in Image processing and Data Science.
- Which languages do you speak?
- I'm well versed in English, Hindi, Marathi and Konkani.
- What's your overall background? The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...
- I'm a fourth-year engineering undergraduate, studying Electronics and Telecommunications, at St. Francis Institute of Technology, which is affiliated to the University of Mumbai.
- Following are a few of the many courses which I have an interest in and are a part of my curriculum:
- Image and Video Processing
- Data Encryption and Compression
- Discrete Time Signal Processing
- Which languages do you speak?
- Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
- I'm a self-taught programmer per say, and have learned a lot from the open source community. I'm and will always be grateful to the Open Source community for the same. Hence, I think Google Summer of Code will be a great opportunity to learn more about the development process of applications and provide me a head-start to return to the community.
- Please also describe your previous experience with the GSoC, if any. Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!
- This is the first time I'm applying for GSoC
- Why are you choosing Octave?
- I was introduced to Octave, as an alternative to MATLAB for my undergraduate degree course. Also I used it while attempting the Coursera course on Machine Learning by Andrew NG. Since then I've found it quite useful mostly because the problem statements in my areas of interest, as mentioned above, can easily be modeled in Octave. And it'd be a great opportunity to contribute to the Open Source Community of Octave.
C: Contact
- Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. We really want unique nicks. You might want to bold it.
- IRC: codingCoffee
- Wiki: CodingCoffee
- Email: shenoy.ameya@gmail.com
- Which time zone do you live in? Will that change over GSoC duration? Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.
- My time zone is UTC + 5:30. No, it'll not change during GSoC.
- Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
- Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)
- I usually code around 13:00 to 21:00 (UTC+0), however I would be more than obliged to work in a different time-frame.
E: Coding experience
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)
- Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
- C++: I have mediocre experience with C++, mostly due the fact that I use C++ for competitive coding.
- Octave or Matlab: I started using Octave as an alternative to MATLAB, initially for my Engineering courses I mentioned above. However my grasp over Octave improved while using it for Andrew NG's Machine Learning course on Coursera. Later I also attempted to write a research paper (related to Audio Processing and Extreme Learning Machines) for which I had to use the source-forge octave package, which made me realize some of the shortcomings of the package, which I would like to improve.
- OpenGL and Qt: I have no prior experience in both of them but I'm eager to learn about them if necessary.
- Please describe your experience with other programming languages.
- Python: I'm a little more acquainted in Python than Octave, since I've used it for a number of projects.
- C: This was my first language, I initially used it for competitive coding before shifting over to C++, however I've never developed projects using the same.
- Please describe your experience with being in a development team. Do you have experience working with open source or free projects?
- I, along with two others participated and won the Neebal Hackathon. We had developed a chatbot for the same.
- Also I've participated in the Mumbai Hackathon, and developed a open source python library for recognizing hand gestures, named spockpy[1]. It is sort of my first contribution to the open source community.
- Please describe the biggest project you have written code for and what you learned by doing so. Also, describe your role in that project over time.
- It cannot be called the biggest project, however in a project I'm working on currently, I'm trying to implement an Octapad (electronic drum set), using a camera and Image Processing, without any other hardware components.
- Please state the commits and patches you already contributed to Octave. This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.
- I haven't done commits till now.
F: Feeling fine
- Please describe (in short) your experience with the following tools: We only use this question to determine where you need guidance, not for rating! We by no means expect you to be familiar with all of these and you'll won't necessarily need them while working with us.
- IRC and mailing lists
- I'm comfortable using both IRC and mailing list.
- Mercurial or other source code management systems
- I have only used git as a VCS till now. However I'm interested in learning Mercurial.
- Mediawiki or other wiki software
- I'm learning to use wiki softwares.
- make, gcc, gdb or other development tools
- I'm confident in using make and gcc compiler
- IRC and mailing lists
- What will make you actively stay in our community after this GSoC is over? You can also tell us after applications close and we'll happily try to fulfill :-)
- I'll be working on Octave for some of my projects, and as and when I come across a bug or a shortcoming in Octave, I'd gladly try to make a contribution to fix the issue and/or enhance the functionality of Octave, regardless of GSoC.
O: Only out of interest
- Did you ever hear about Octave before?
- Yes, I have heard of Octave before.
- If so, when and where? How far have you been involved already?
- From my professor in college. Also at Andrew NG's Machine Learning course. I'm attempting to write a research paper related to audio processing and Extreme Learning Machine algorithm, for which I'm using Octave.
- If not, where would you expect or advise us to do advertising?
- (Doesn't apply) However, StackOverflow could be a place to start! Also maybe MOOCs are a great place to popularize Octave!
- What was the first question concerning Octave you could not find an answer to rather quickly? Of course more than one question can be stated. We try to improve based on this each year! Includes learning how to use it, code, website, GSoC application, …
- The concept of IRC was new to me. It took a while to get accustomed to it.
P: Prerequisites
- Please state the operating system you work with.
- Ubuntu 16.04 LTS
- Please estimate an average time per day you will be able to access
- an internet connection
- 24 hours
- a computer
- 24 hours
- a computer with your progressing work on
- 24 hours
- an internet connection
- Please describe the degree to which you can install new software on computers you have access to.
- I have complete administrator access.
S: Self-assessment
- Please describe how useful criticism looks from your point of view as committing student.
- I'm open to all constructive criticism. It'll helps me improve myself and also prove productive for the product being developed.
- How autonomous are you when developing:
- I initially try to come up with a solution of my own and implement it, and then test it for bugs/errors. However if after multiple attempts I'm not able to get through the problem at hand, I tend to spend time on StackOverflow for help.
- Do you like to discuss changes intensively and not start coding until you know what you want to do?
- I prefer thinking up a basic flowchart for the code and start implementing it. And then work on the individual parts of the flowchart, rather than discussing intensively initially and then writing the entire code.
- Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?
- Yes, I like to code a proof of concept. I'd take the risk of having work thrown away, since I believe one learns a lot more while failing at a particular thing!
Y: Your task
- Did you select a task from our list of proposals and ideas?
- Yes
- 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.
- I'd like to work on the Jupyter Integration, Command line suggestion feature and Octave code sharing.
- 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.
- I plan to work 35 hours a week. This is the schedule I would like to follow:
Before 30 May: I'll try to be more familiarized with the community and the mentors, while discussing and defining my problem statement for all my 3 areas of interest. Phase 1, until 30 June: - Study the current implementation of Octave kernel for Jupyter. - Study various searching algorithms, including the one implemented in the Ubuntu terminal for suggesting the commands. - Familiarize myself with the MediaWiki[2] for Octave Code sharing
Phase 2, until 28 July: - Implement the problem statement: 'provide one or more suggested corrections to the user when a command line entry produces an error' - Come up with solutions for the grey/gray problem[3]
Phase 3, until 29 August: