From Octave
Jump to navigation Jump to search

Public application[edit]

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.
    Hello, my name is Ankush Patel and I am currently studying computer science and mathematics at the University of Tennessee - Knoxville. Because I am a strong believer of pragmatism, I enjoy applying my skills in a practical manner. I love novel ideas no matter how outlandish and I enjoy traveling.
    • Which languages do you speak?
      I speak English and Gujarati. As far as programming languages go, I am experienced with C/C++, Python, Javascript/HTML/CSS, and I'd say I am competent with Octave :).
    • What's your overall background?
      Since I am currently a Freshman (Junior by credits), I am still taking core classes within computer science; however, my main pursuit is artificial intelligence. Furthermore, I am also majoring in mathematics so that I can gain a sufficient background to understand and apply methods from computer science or machine learning.
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
    Because I wanted to stay at home and help my family this summer, I chose Google Summer of Code so that I can continue learning about the world of software development. But, that's not the only reason - I believe that working closely with an open source community will open doors for me that would otherwise be impossible in a private company (although I do not have anything against such companies). I love the idealism of an open source community - you work not because you have to, but because you ''want'' to. That freedom of choosing to work is what makes this community awesome and I believe that through this community I'll be able to meet many passionate people, who I can hopefully learn from.
  • Why are you choosing Octave?
    I was first introduced to Octave by Andrew Ng's Machine Learning course from Coursera. After learning more about Octave, I found that it was not much different from Matlab; however, the obvious difference is that Octave is free. I thought to myself why would such a useful product be free? Then it hit me - it's all about the pursuit of knowledge. Just like community service is used to make the world a better place, open source development is here to make the world a better place through the pursuit of knowledge. By sharing knowledge and engaging in creative development, no one is left out and everyone gets to learn. I believe that Octave is a tool that empowers all people regardless of their background to pursue further knowledge. Because of this, I too want to be a part of Octave's community.

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
    nick: rhendz
    github: Rhendz
  • Which time zone do you live in? Will that change over GSoC duration?
    I live in Central USA or UTC-5. I am currently under daylight savings time; furthermore, I do not expect my timezone to change during GSOC.
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
    I'm kind of a night owl when it comes to work so I usually work between 20.00 and 23.00 (late afternoon times for me) and 02.00 and 06.00 (late night times for me); however, these times are highly flexible :).

E: Coding experience[edit]

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.
    Since my courses primarily use C/C++, I believe I have significant experience with this language (~2 years). My experience with C++ includes OOP principles, propery memory handling, and implementing various data structures/algorithms. Since I am learning about Machine Learning (no pun intended), I often use Octave for my projects (~4 months). I find that Octave is easy to use and I can quickly learn more about concepts in Machine Learning rather than spending time getting lost in otherwise more difficult implementations such as C++. Although I know what OpenGL and Qt are, I do not have much experience with these APIs.
  • Please describe your experience with other programming languages.
    I am experienced with front-end programming languages such as JavaScript, HTML, and CSS. Oftentimes, I use these languages to make various simulations and edit school club websites. I have used Python a lot because of its relative ease of use and because it is good for scraping various websites.
  • Please describe the biggest project you have written code for and what you learned by doing so.
    Although this project was not fruitful, the biggest coding project I wrote code for was my weather app that displayed the current weather in Tennessee. By writing code for this project, I learned how to work with/link various APIs such as Google Maps and OpenWeather; furthermore, I learned about asynchronous functions, loading and configuring JSON files, and scraping websites with Python. My app ''did'' work, but my access to my OpenWeather API key was banned once I had made too many calls per minute - so much for real time... In the end, I found that the skills I gained through the project were more valuable than the actual project itself, which isn't too bad :).
  • Please state the commits and patches you already contributed to Octave. Ordered from most recent
    • Implemented and Patched xyz2double.m, xyz2single.m, xyz2uint16.m - New functions for Octave-Forge Image package
    • Implemented and Patched lin2rgb.m, rgb2lin.m - New functions for Octave-Forge Image package
    • Patched demosaic.m - I was planning on implementing this function; however, I found a version that passed all of its tests from the bug tracker and submitted it as a patch.
    • Wiki edits at Image package - categorizing missing image functions and identifying further missing image functions.

F: Feeling fine[edit]

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists
      I am somewhat experienced with these tools; however, I have been able to find anything I need to do regarding these tools with relative ease.
    • Mercurial or other source code management systems
      I have not worked with Mercurial, but I am very experienced with Github (~1.5 years).
    • Mediawiki or other wiki software
      Other than wikitext, I do not have much experience with these tools.
    • make, gcc, gdb or other development tools
      I am highly experienced with these tools as I use them daily for my computer science courses (~2 years).
  • What will make you actively stay in our community after this GSoC is over?
    As long as there are friends and fun projects to work on, I don't mind staying in the community :).

O: Only out of interest[edit]

  • Did you ever hear about Octave before?
    • If so, when and where? How far have you been involved already?
      The first time I heard of Octave was through Andrew Ng's Machine Learning course from Coursera late 2017. I primarily use Octave for my Machine Learning projects because of its ease of use.
  • What was the first question concerning Octave you could not find an answer to rather quickly?
For some reason, I had a difficult time running Octave-CLI on my Ubuntu machine and it took me ~20 minutes to figure out how to start it. I believe I began 
here, then realizing it started the GUI, I tried to look at the command line options; 
however, there was no option to start the CLI. It took me a while to realize that the CLI is a different program altogether and I have to type in octave-cli on my machine to 
start it. As of now, I can find anything I need reasonably well through the documentation.

P: Prerequisites[edit]

  • Please state the operating system you work with.
    I have a dual boot Windows 10/Ubuntu 16.04 system, but I will primarily be developing on Ubuntu.
  • Please estimate an average time per day you will be able to access
    I have 24 access to all of the below, but the below is the amount of time I spend with a computer/internet connection.
    • an internet connection
      24 hours - I regularly check my email on my phone just in case there is something urgent I need to attend to
    • a computer
      10 - 12 hours
    • a computer with your progressing work on
      10 - 12 hours
  • Please describe the degree to which you can install new software on computers you have access to.
    Full access

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.
    Great! I am always looking for ways to improve and if someone is telling me I'm doing something wrong or inefficiently then that makes my work easier.
  • How autonomous are you when developing:
    Highly autonomous and if I have any questions I tend to search various related materials and Stack Overflow before reaching out to someone.
    • Do you like to discuss changes intensively and not start coding until you know what you want to do?
      No, I enjoy discussing changes, but the extent to which I discuss them is dependent on the project at hand. Rather, I tend to discuss changes and work on the project incrementally. In other words, I think balancing discussion of changes and work on a particular project is more efficient because particular interpretations of changes may change throughout the project.
    • 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?
      No... I cannot begin immediately coding at once - I have done that too many times to know that that does not work. I like to plan out my code incrementally on a piece of paper, then begin implementing/testing a few functions at a time. I believe that this reduces the amount of effort spent coding and helps stay true to what the project originally intended.

Y: Your task[edit]

  • 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.
      I chose to base my proposal idea off of Improvements to N-Dimensional Image Processing. I want to focus on implementing the missing color functions from the Image package, which I have specified here. In particular, I believe that implementing these functions will be beneficial for Octave because information about various color spaces and ICC profiles provide a way for processing real world images easier. Furthermore, it was noted in the suggested project proposal that there is a need to implement N-Dimensional image input for applications such as medical imaging; therefore, providing support for such applications will be considered in this proposal.
  • Please provide a rough estimated timeline for your work on the task.
    GSOC 2018 Proposal: Integrate Support for ICC Profiles & Implement Color API Functions
    • Community Bonding Period - (April 23 - May 13): I plan on utilizing this time to learn more about the image package, specifically utilizing vectorization techniques, learning about profiling, and writing a good suite of tests. I plan on doing this by further researching the functions that have already been implemented and consulting my mentor/peers for further information. During the latter half of the time period, I plan on constructing detailed implementation outlines for each color function and running them by my mentor.
    • Coding 1 (Phase 1) - (May 14 - June 14): I will use the outlines to integrate support for ICC profiles. After I write each function, I will write a suite of tests to make sure the code is passing. Then, I will profile each functions to discover any possible improvements.
    • Coding 2 (Phase 2 - 3) - (June 15 - July 12): I will approximately spend two weeks implementing illuminance functions and the other two weeks implementing various color processing/information functions.
    • Debugging and Documentation Edits (July 13 - July 28): I will use this time to provide any additional debugging and final documentation edits.
      July 29 - August 6 - Will serve as a buffer period in the case of any delays.
      Coding 2 - There is a chance that the suggested deliverables may be completed at this point. Thus, work on Phase 4 will begin once Debugging and Documentation Edits is complete - the details of this will be discussed with the mentor at the time.