From Octave
Revision as of 05:17, 24 March 2017 by Nvs-abhilash (talk | contribs) (→‎Y: Your task: Updated)
Jump to navigation Jump to search

Public application

A: An introduction

  • Please describe yourself in three sentences, one of them regarding your current studies.
    My name is NVS Abhilash. I have a profound interest in Machine Learning and A.I., and currently,
    University: NIIT University, Neemrana, Rajasthan, India.
    Major: Computer Science and Engineering, specializing in Big Data and ML.
    I can speak and communicate well in English and Hindi.
    • What's your overall background?
      I am currently an undergraduate in Computer Science and Engineering (Third year / Junior).
      I love mathematics and programming.
      My area of specialization is Big Data and Machine Learning.
      I am learning in-depth about Information Retrieval, Internet of Things and Digital Image Processing.
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
    I think Google Summer of Code is a great opportunity for me to jumpstart my experience with the open source community.
    I hope to gain knowledge and experience working in a professional environment while meeting new people in the process.
    • Please also describe your previous experience with the GSoC, if any.
      This is my first experience with GSoC.
  • Why are you choosing Octave?
    Octave is the open source alternative for MATLAB, and I like working with Octave.
    Also, Octave has a great community of developers. They are welcoming and motivating.

C: Contact

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
    nick: nvs
  • Which time zone do you live in? Will that change over GSoC duration?
    I live in UTC+05:30.
    No, the time zone will not change over GSoC duration.
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
    I can work from 4:30 AM - 11:30 AM (in UTC+0)
    I can also work from 1:00 PM-4:00 PM(in UTC+0) if my project requires it.

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.
    • I have 5 years of coding experience in C & C++. I have a thorough undertanding of classes and Object Oriented Programming in C++.
    Octave or Matlab m-scripts
    OpenGL and Qt
    I have no prior experience with either of them. However, I am willing to learn them if my project demands it.
  • Please describe your experience with other programming languages.
    • I have a fair idea of basic Python syntax. I have also learned to use some mathematical libraries like numpy and pandas.
    • I have started learning the intricacies of sympy, as it is helpful for the GSoC project.
  • Please describe your experience with being in a development team.
    I am new 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.
    • Algorithms for Graph-based trust models in Online Social Network: In this project, we had a large dataset of social users and we were expected to design and implement an algorithm to tackle the scalability problem in recommender systems.
    • My contributions were to help in designing and implementing the graph partitioning algorithm in C++.
  • Please state the commits and patches you already contributed to Octave.
    I have contributed mostly to the Symbolic Package, I have also contributed to Pytave and Octave core:
    • Symbolic package contributions:
    1. sympref: add support to restore settings from a structure: [1], [2], [3]
    2. @sym/prevprime: added prevprime: [4], [5],[6]
    3. sympref: removed references to whichpython: [7]
    4. isequal: added isequal for @symfun class. (fixes #740): [8],[9], [10], [11], [12], [13], I got to learn a lot from this one, all thanks to Colin and Abhinav.
    5. @symfun/isequaln: implemented isequaln to support NaN's equality in @symfun: [14]
    • Pytave contributions:
    1. * @pyobject/methods.m: OPTION to view private methods added (fixes issue #22): [15]
    • Octave core contributions:
    1. * (Fisinteger): Add BIST tests: [16]

F: Feeling fine

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists
      I am comfortable using the mailing list and IRC. These are my interactions in the mailing list: Posts
    • Mercurial or other source code management systems
      I am very comfortable using git. I have started learning Mercurial and do understand the basics of generating a patch in Octave.
    • Mediawiki or other wiki software
      I started using Mediawiki when I started writing this application. I am comfortable contributing to wiki pages.
    • make, gcc, gdb or other development tools
      I am very comfortable in using make tool, gcc, and gdb. Furthermore, I am always pumped up in learning new tools if my project demands for it (or even just out of curiosity).
  • What will make you actively stay in our community after this GSoC is over?
    I see lots of places where I can help. I am also interested in the Convolutional Neural Networks (CNNs) package. I would love to work upon that after my GSoC.

O: Only out of interest

  • Did you ever hear about Octave before?
    Yes, I have heard of GNU Octave before.
    • If so, when and where? How far have you been involved already?
      I started using Octave for my online Machine Learning Course by Andrew Ng in Coursera.
  • What was the first question concerning Octave you could not find an answer to rather quickly?
    Complete steps to build Octave from source. The reason for that is that there is not much in the Octave docs.
    And there is more than one wiki describing similar things in different ways.
    It might be better to update the Octave docs frequently with latest installation instructions.
    Here is what the octave docs show now: link.
    Apart from this, the Octave manual has been very helpful with useful examples to understand the concepts.

P: Prerequisites

  • Please state the operating system you work with.
    Ubuntu 16.10 and Windows 10
    • If you have access to more than one, please state them and the conditions under which you are granted this access.
      I have complete access to both the operating systems. However, I prefer using Ubuntu for software development.
  • 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
  • Please describe the degree to which you can install new software on computers you have access to.
    I have complete root/administrator access.

S: Self-assessment

  • Please describe how useful criticism looks from your point of view as committing student.
    I think constructive criticism plays a vital role in developing a good product.
    I like receiving criticism because it means that my work matters to someone and I take that as motivation to make my work better.
  • How autonomous are you when developing:
    While assessing myself I observed that I try to code first and then try to find bugs and remove the inefficiencies in my code.
    Recently I was working with Colin on this PR, you can see that my initial changes were very naive and incorrect, but then Colin helped me understand what else could have been done. Then I reimplemented it using the right ideology.
    I think this methodology is what makes me learn more. I understand this might turn out to be a slow process, but I think this is what makes me more experienced.
    Thomas Edison said, " I haven't failed, I've just found 10,000 ways that won't work. "
    With that said, I will also absolutely make sure that I take regular weekly feedback from my mentors so that I don't end up in a wrong path.

Y: Your task

  • Did you select a task from our list of proposals and ideas?
    Yes, I would like to work on the project: "Symbolic Package" Wiki link to the project
  • Please provide a rough estimated timeline for your work on the task.
    During Google Summer of Code, I would work 40 hours per week. This is my rough estimated timeline:
    May 5 - May 30, 2017 (Community bonding period)
    1. Try to move from 'familiar' to 'proficient' in Octsympy and Pytave.
    2. Contribute as much as I can to Octsympy and Pytave.
    3. Continuously interact with the mentors and better define the steps to complete the project.
    May 30 - June 30, 2017 (First term)
    1. Week 1-2: Improve Pytave code
      1. Migrate away from Pytave legacy #74 #80
      2. Resolve #79, this causes test failures in Octsympy.
      3. Remove the boost dependencies from Pytave and use native API calls for the same.
    2. Week 3-4: Making @sym a subclass of @pyobject.
      1. Improve core Octave classdef issues, 49169 and maybe some more from here: link.
        Understand the current available features of classdef in Octave.
        Improve the current bugs.
        Add more features if feasable.
      2. Make this PR by Abhinav mergeable. (If possible in the time frame)
      3. Discuss and decide which implementation (classic @class style or classdef) style to use for the project.
    July 1 - July 24, 2017 (Second term)
    1. Make @sym instance a @pyobject instance by calling the constructors, and fixing tests and bugs.
    2. Implement all the class functions required to allow OO style function calling. (e.g. calling f.diff(x, x))
    3. Write tests for the new functionality added.
    4. Optimize the functions in @sym and @symfun to use the OO features added.
    5. Replace the python_cmd interface with the pytave fuctions.
      1. This step wants to directly use pyexec and pycall commands, instead of delegating the task to python_cmd.
    6. Write / Modify tests for the above changes.
    July 28 - August 21, 2017 (Final term)
    1. Complete any pending tasks (if any).
    2. Write complete documentation for all the work done.
    3. Help making Pytave become a mergeable state with Octave core.
      1. Resolve some issues from the issue list in Pytave.
    4. Add missing functions and functionality to Octsympy.
    5. Initiate writing a complete user and developer documetation for Octave and Pytae. (Extended Task)
    This is a very rough timeline. The exact steps will become clearer when I do some more discussion with the mentors.