45
edits
Nvs-abhilash (talk | contribs) (→E: Coding experience: Completed the coding experience section) |
Nvs-abhilash (talk | contribs) mNo edit summary |
||
(35 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
== A: An introduction == | == A: An introduction == | ||
* Please describe yourself in three sentences, one of them regarding your current studies. | * Please describe yourself in three sentences, one of them regarding your current studies. | ||
*: | *: My name is NVS Abhilash and I have a profound interest in Machine Learning and A.I. | ||
*: I am a third-year/Junior student at NIIT University, Neemrana, Rajasthan, India. | |||
*: I am majoring in Bachelor of Technology in 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? | ** What's your overall background? | ||
**: I | **: I love mathematics and programming. | ||
**: | **: I have a good understanding of the process of Software Engineering, statistics, Linear Algebra, calculus, programming tools. | ||
**: | **: I am learning in-depth about Information Retrieval, Internet of Things and Digital Image Processing in my current semester. | ||
**: I have a good understanding in the processes of Software Engineering, Statistics, Linear Algebra, Calculus, and Programming Tools. | |||
* Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so? | * 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 | *: 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 | *: 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. | ** Please also describe your previous experience with the GSoC, if any. | ||
**: This is my first experience with GSoC. | **: This is my first experience with GSoC. | ||
* Why are you choosing Octave? | * Why are you choosing Octave? | ||
*: 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. | *: Also, Octave has a great community of developers. They are welcoming and motivating. | ||
== C: Contact == | == C: Contact == | ||
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. | * Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. | ||
*: nick: | *: nick: '''nvs232''' | ||
*: Github: '''nvs-abhilash''' [https://github.com/nvs-abhilash https://github.com/nvs-abhilash] | |||
*: Bitbucket: '''nvs232''' [https://bitbucket.org/nvs232/ https://bitbucket.org/nvs232/] | |||
* Which time zone do you live in? Will that change over GSoC duration? | * Which time zone do you live in? Will that change over GSoC duration? | ||
*: I live in UTC+05:30. | *: I live in UTC+05:30. | ||
Line 29: | Line 31: | ||
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? | * 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 | *: I can work from 4:30 AM - 11:30 AM (in UTC+0) | ||
*: I | *: I can also work from 1:00 PM-4:00 PM(in UTC+0) if my project requires it. | ||
== E: Coding experience == | == E: Coding experience == | ||
Line 36: | Line 38: | ||
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt. | * Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt. | ||
*: '''C++''' | *: '''C++''' | ||
*::* I have 5 years of coding experience in C & C++. I have a | *::* 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 | *: '''Octave or Matlab m-scripts''' | ||
*::* I started using Octave for my online [https://www.coursera.org/learn/machine-learning ''Machine Learning Course by Andrew Ng''] | *::* I started using Octave for my online [https://www.coursera.org/learn/machine-learning ''Machine Learning Course by Andrew Ng''] | ||
*::* I also use Matlab Image Processing Toolbox for my Digital Image Processing Course. | *::* I also use Matlab Image Processing Toolbox for my Digital Image Processing Course. | ||
*::* I have also contributed to [https://github.com/cbm755/octsympy/commits/master?author=nvs-abhilash Octsympy (Symbolic Package)],[https://bitbucket.org/mtmiller/pytave/commits/d1e00e614b4ced282f12ff23e7a6f1c24e000227 Pytave], and [http://hg.savannah.gnu.org/hgweb/octave/rev/e6bf4f8920d3 Octave core]. | *::* I have also contributed to [https://github.com/cbm755/octsympy/commits/master?author=nvs-abhilash Octsympy (Symbolic Package)],[https://bitbucket.org/mtmiller/pytave/commits/d1e00e614b4ced282f12ff23e7a6f1c24e000227 Pytave], and [http://hg.savannah.gnu.org/hgweb/octave/rev/e6bf4f8920d3 Octave core]. | ||
*: '''OpenGL and Qt''' | *: '''OpenGL and Qt''' | ||
*:: I have no prior experience with either of them. | *:: 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. | * Please describe your experience with other programming languages. | ||
*: '''Python''' | *: '''Python''' | ||
*::* I have a fair idea of basic Python syntax. I have also learned to use some mathematical libraries like ''numpy'' and ''pandas''. | *::* 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 | *::* I have started learning the intricacies of ''sympy'', as it is helpful for the GSoC project. | ||
*::* I have a basic knowledge of calling Python/C API which is a necessity for removing boost dependencies in Pytave. | |||
* Please describe your experience with being in a development team. | * Please describe your experience with being in a development team. | ||
*: I am new to the open source community. | *: 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. | * 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 designed and implemented an algorithm to tackle the scalability problem in recommender systems. | ||
*:* My contributions were to | *:* 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. | * Please state the commits and patches you already contributed to Octave. | ||
*: I have contributed mostly to the [https://github.com/cbm755/octsympy/ Symbolic Package], I have also contributed to [https://bitbucket.org/mtmiller/pytave Pytave] and [http://hg.savannah.gnu.org/hgweb/octave Octave core]: | *: I have contributed mostly to the [https://github.com/cbm755/octsympy/ Symbolic Package], I have also contributed to [https://bitbucket.org/mtmiller/pytave Pytave] and [http://hg.savannah.gnu.org/hgweb/octave Octave core]: | ||
*::* Symbolic package contributions: | *::* '''Symbolic package contributions''': | ||
*:::: '''''Merged''''' | |||
*:::# sympref: add support to restore settings from a structure: [https://github.com/cbm755/octsympy/commit/b29bc8d24690747cf87630a188f291fbc1b01d67], [https://github.com/cbm755/octsympy/commit/9301334e83684128d1ca2b26ecf5dc54356cf491], [https://github.com/cbm755/octsympy/commit/9c216fae121ea857819f8ab0003c39fe04edcb67] | *:::# sympref: add support to restore settings from a structure: [https://github.com/cbm755/octsympy/commit/b29bc8d24690747cf87630a188f291fbc1b01d67], [https://github.com/cbm755/octsympy/commit/9301334e83684128d1ca2b26ecf5dc54356cf491], [https://github.com/cbm755/octsympy/commit/9c216fae121ea857819f8ab0003c39fe04edcb67] | ||
*:::# @sym/prevprime: added prevprime: [https://github.com/cbm755/octsympy/commit/a2ad71a3a6730ac204c704e9d5851f22a530a8ce], [https://github.com/cbm755/octsympy/commit/853450c1b60b94b3e11b001df78fcc06638037bb],[https://github.com/cbm755/octsympy/commit/9de27024b776fe952ed6bfe80c5dde8594e35dbd] | *:::# @sym/prevprime: added prevprime: [https://github.com/cbm755/octsympy/commit/a2ad71a3a6730ac204c704e9d5851f22a530a8ce], [https://github.com/cbm755/octsympy/commit/853450c1b60b94b3e11b001df78fcc06638037bb],[https://github.com/cbm755/octsympy/commit/9de27024b776fe952ed6bfe80c5dde8594e35dbd] | ||
Line 61: | Line 65: | ||
*:::# isequal: added isequal for @symfun class. (fixes #740): [https://github.com/cbm755/octsympy/commit/238bb57985a0364a4f538ed506a712618f75b604],[https://github.com/cbm755/octsympy/commit/af587cb6086f6de9fc4da73a81cdcfe1ad88d01a], [https://github.com/cbm755/octsympy/commit/e850fbdd7f22810b764e7679fe3f07705b68df2e], [https://github.com/cbm755/octsympy/commit/29c3f37cf32d7342c3da1cdf067928ff865aae8a], [https://github.com/cbm755/octsympy/commit/110d307cf9ea773904d4c987d30596ec09b0fa1f], [https://github.com/cbm755/octsympy/commit/eb28830d0a81cddde442da1d4e23d801bf1e6252], ''I got to learn a lot from this one, all thanks to Colin and Abhinav''. | *:::# isequal: added isequal for @symfun class. (fixes #740): [https://github.com/cbm755/octsympy/commit/238bb57985a0364a4f538ed506a712618f75b604],[https://github.com/cbm755/octsympy/commit/af587cb6086f6de9fc4da73a81cdcfe1ad88d01a], [https://github.com/cbm755/octsympy/commit/e850fbdd7f22810b764e7679fe3f07705b68df2e], [https://github.com/cbm755/octsympy/commit/29c3f37cf32d7342c3da1cdf067928ff865aae8a], [https://github.com/cbm755/octsympy/commit/110d307cf9ea773904d4c987d30596ec09b0fa1f], [https://github.com/cbm755/octsympy/commit/eb28830d0a81cddde442da1d4e23d801bf1e6252], ''I got to learn a lot from this one, all thanks to Colin and Abhinav''. | ||
*:::# @symfun/isequaln: implemented isequaln to support NaN's equality in @symfun: [https://github.com/cbm755/octsympy/commit/95afb9a9f91f00c1fe69c234cd34a4b0c977b2a2] | *:::# @symfun/isequaln: implemented isequaln to support NaN's equality in @symfun: [https://github.com/cbm755/octsympy/commit/95afb9a9f91f00c1fe69c234cd34a4b0c977b2a2] | ||
*::* Pytave contributions: | *:::# warning in subsref and subsasng removed (fixes #714): [https://github.com/cbm755/octsympy/commit/c53563b7eeca635f5bd114511da375962de2844d] | ||
*:::# * @pyobject/methods.m: OPTION to view private methods added (fixes issue #22): [https://bitbucket.org/mtmiller/pytave/commits/d1e00e614b4ced282f12ff23e7a6f1c24e000227] | *:::: '''Issues opened | ||
*::* Octave core contributions: | *:::# Cannot create abstract @symfun object using Pytave IPC: [https://github.com/cbm755/octsympy/issues/769] ('''Closed''') | ||
*::* '''Pytave contributions''': | |||
*:::: '''''Merged''''' | |||
*:::# * @pyobject/methods.m: OPTION to view private methods added (fixes issue #22):[https://bitbucket.org/mtmiller/pytave/commits/d1e00e614b4ced282f12ff23e7a6f1c24e000227] | |||
*:::# Rewrite exception handling using Python/C API [https://bitbucket.org/mtmiller/pytave/commits/f777dca5836119484c1c1a23e6614d6897a28ecc] - ''This commit is a step to remove all the boost dependencies in Pytave.'' | |||
*::* '''Octave core contributions''' ('''''merged'''''): | |||
*:::# * data.cc (Fisinteger): Add BIST tests: [http://hg.savannah.gnu.org/hgweb/octave/rev/e6bf4f8920d3] | *:::# * data.cc (Fisinteger): Add BIST tests: [http://hg.savannah.gnu.org/hgweb/octave/rev/e6bf4f8920d3] | ||
== F: Feeling fine == | == F: Feeling fine == | ||
* Please describe (in short) your experience with the following tools: | * Please describe (in short) your experience with the following tools: | ||
** IRC and mailing lists | ** IRC and mailing lists | ||
**: I am comfortable using the mailing list and IRC. These are my interactions in the mailing list: [http://octave.1599824.n4.nabble.com/template/NamlServlet.jtp?macro=user_nodes&user=372104 Posts] | |||
** Mercurial or other source code management systems | ** 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 | ** 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 | ** make, gcc, gdb or other development tools | ||
* What will make you actively stay in our community after this GSoC is over? | **: 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 == | == O: Only out of interest == | ||
* Did you ever hear about Octave before? | * 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? | ** 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? | * 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. | |||
*: It is overwhelming as there exists more than one wiki explaining similar steps in various ways. | |||
*: It might be better to update the Octave docs frequently with latest installation instructions. | |||
*: Here is what the octave docs show now: [https://www.gnu.org/software/octave/doc/v4.0.1/Building-the-Development-Sources.html#Building-the-Development-Sources link]. | |||
*: Apart from this, the Octave manual has been very helpful with useful examples to understand concepts. | |||
== P: Prerequisites == | == P: Prerequisites == | ||
* Please state the operating system you work with. | * 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. | ** 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 | * Please estimate an average time per day you will be able to access | ||
** an internet connection | ** an internet connection | ||
**: 24 Hours | |||
** a computer | ** a computer | ||
**: 24 hours | |||
** a computer with your progressing work on | ** 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. | * 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 == | == S: Self-assessment == | ||
* Please describe how useful criticism looks from your point of view as committing student. | * 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: | * 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 [https://github.com/cbm755/octsympy/pull/749 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 == | == Y: Your task == | ||
* Did you select a task from our list of proposals and ideas? | * Did you select a task from our list of proposals and ideas? | ||
** | *: Yes, I would like to work on the project: "Symbolic Package" [http://wiki.octave.org/Summer_of_Code_Project_Ideas#Symbolic_package Wiki link to the project] | ||
** If | *: | ||
* | * 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) | |||
*::# Try to move from 'familiar' to 'proficient' in Octsympy and Pytave code base. | |||
*::# I will make efforts to learn more about '''Python/C api''' so as to contribute more to Pytave to remove boost depedencies. | |||
*::# Contribute as much as I can to Octsympy. | |||
*::# Continuously interact with the mentors and better define the steps to complete the project. | |||
*: '''May 30 - June 30, 2017''' (First term) | |||
*:: '''Week 1-2''': Improve Pytave code | |||
*::# Migrate away from Pytave legacy [https://bitbucket.org/mtmiller/pytave/issues/74/migrate-away-from-remaining-pytave-legacy #74] [https://bitbucket.org/mtmiller/pytave/issues/80/remove-code-for-calling-octave-from-python #80] | |||
*::# Resolve [https://bitbucket.org/mtmiller/pytave/issues/79/sympy-function-objects-cause-errors #79], this causes test failures in Octsympy. | |||
*::# Remove the boost dependencies from Pytave and use native API calls for the same. | |||
*:: '''Week 3-4''': Making @sym a subclass of @pyobject. | |||
*::# Fix core Octave classdef issues: | |||
*::#: Understand the currently available features of classdef in Octave. | |||
*::#: Fix the bugs related to classdef in core Octave. Some of the major ones that I want to focus on are: | |||
*::#:* [https://savannah.gnu.org/bugs/?49169 49169] Defining a classdef superiorto some other classdef. | |||
*::#:* [https://savannah.gnu.org/bugs/?45833 45833] support load/save of classdef objects. | |||
*::#:* [https://savannah.gnu.org/bugs/?48693 48693] classdef subsref method is not called with correct nargout value. | |||
*::#:* [https://savannah.gnu.org/bugs/?43047 43047] and [https://savannah.gnu.org/bugs/?49169 49169] Documentation problems in classdef (Optional) | |||
*::#: Add more features if feasible. | |||
*::# Make this [https://github.com/cbm755/octsympy/pull/590 PR] by Abhinav mergeable. (If possible in the time frame) | |||
*::# Discuss and decide which implementation (classic @class style or classdef) style to use for the project. | |||
*: '''July 1 - July 24, 2017''' (Second term) | |||
*::# Make @sym instance a @pyobject instance by calling the constructors, and fixing tests and bugs. | |||
*::# Implement all the class functions required to allow OO style function calling. (e.g. calling f.diff(x, x)) | |||
*::# Write tests for the new functionality added. | |||
*::# Optimize the functions in @sym and @symfun to use the OO features added. | |||
*::# Replace the python_cmd interface with the pytave fuctions. | |||
*::## This step wants to directly use pyexec and pycall commands, instead of delegating the task to python_cmd. | |||
*::# Write / Modify tests for the above changes. | |||
*: '''July 28 - August 21, 2017''' (Final term) | |||
*:: '''Week 9-10''': Write Documentation | |||
*::# Complete any pending tasks (if any). | |||
*::# Write documentation for Pytave both user's guide and developer's guide. (This will help in attracting more developers to use Pytave) | |||
*::# Write extensive documentation for Octsympy. | |||
*::# Write documentation for the current implementation of classdef in Octave. (I think this is not completed yet.) | |||
*:: '''Week 10-12''': Fix further issues | |||
*::# Fix issues in Pytave [https://bitbucket.org/mtmiller/pytave/issues?status=new&status=open issue list]. | |||
*::# Fix issues in Octsympy [https://github.com/cbm755/octsympy/issues issue list]. | |||
*::# Add missing functions and functionality to Octsympy. | |||
*: This is a very rough timeline. The exact steps will become clearer when I do some more discussion with the mentors. | |||
[[Category: Summer of Code]] | [[Category: Summer of Code]] |
edits