User:Atuljangra

From Octave
Jump to navigation Jump to search

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.
    • Which languages do you speak?
    • What's your overall background? The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...
I am an undergraduate student from the department of Computer Science and Engineering at Indian Institute of Technology, Delhi(IIT).
English and Hindi are the major languages that I prefer to use.
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
    • 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!
I am participating in Google Summer of Code, because it's "Google". GSoC is a great learning experience. There aren’t many opportunities for computer enthusiasts like me to make a difference in the field while still in school/college.I am not well established in the world of open source. I'll use this platform for my entry into the open source world. Open Source communities are great to work with. From last few weeks, I have been in contact with GNU Octave. And it was one hell of an experience to work with such awesome guys.
It's my first attempt for GSoC. But I have done research on how the program goes and what are the rules and regulations.I have talked to many old students and mentors.
  • Why are you choosing Octave?
I am choosing Octave because I love the Octave community. People are so enthusiastic about their work. Plus the project that I'll be doing is a great project. Improving the Octave GUI and general User Experience. I am a GUI person who very well understands the value of GUI and User experience of any software.

C: Contact[edit]

  • 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.
My unique IRC nick is atuljangra. I have been using this from last few weeks so I guess I am identifiable by this nick.
  • 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.
I live in UTC +5:30. My location won't change during the summer.
  • 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 in the afternoon and late night i.e. ~16.00 to ~20.00 (UTC +0) and/or ~7.00 to ~12.00(UTC +0) . But I can surely adjust my timings according to the situations.

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.
I have done may projects in C++, few of them are :
1.Multiplayer Carom Game : a 3-D multiplayer carom in C++ using OpenGL for graphics, TCP/IP and traces of UDP for networking and implemented three levels Artificial Intelligence for the computer player.
2.Class-room booking system: Designed and developed an efficient workflow based classroom booking system using daemon, server (TCP/IP) and multiple clients connecting to it.
and many more like Calculator for large numbers(~50-digit numbers).
In QT, I am pretty experienced. I have created few applications like Music Player, Group Chat client in QT. The UI of almost all my major C++ projects was created in QT.
  • Please describe your experience with other programming languages.
I have programmed in many languages, majority includes Java, C/C++, SML, Prolog, and languages like AJAX, PHP, JavaScript etc.
  • Please describe your experience with being in a development team. Do you have experience working with open source or free projects?
I have been in development teams like Assistive Technology @ MIT. More details can be found at link this page.
Many projects described above were team projects. This project was also one of the team projects:
Architecture Simulator:Designed and developed a computer architecture comprising of an inorder 5‐stage pipeline, a 2‐level cached memory subsystem and a branch predictor (97 % accuracy). The caches were set associative caches using FIFO and LRU

replacement policies. The branch predictor was a tournament predictor, which employed a GShare predictor and a bimodal predictor

  • 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.
I can't say which project was the biggest. I have learned many lessons from each of the projects. I have developed a sense of working together from all such projects. I have developed coding skills by working on such projects only.
  • 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 have created few patches for GUI of GNU Octave. Details of them can be seen on mailing list.
1.Modifying Settings option in Octave. (http://octave.1599824.n4.nabble.com/Patch-for-adding-features-in-Settings-GUI-td4478371.html)
2.Creating NewFolder option in FileDockWidget in the GUI of Octave.(http://octave.1599824.n4.nabble.com/Patch-for-GUI-of-Octave-td4478320.html)
I am working on other patches. This section will be soon updated.

F: Feeling fine[edit]

  • 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 am quite active on IRC and mailing list as you can get from the logs and archives. I am quite comfortable with IRC and mailing lists.
  • Mercurial or other source code management systems
I haven't used source code management systems for long. I am currently working on this part.
  • Mediawiki or other wiki software
Not that much experienced in this section , currently in learning phase.
  • make, gcc, gdb or other development tools
I am quite used to such tools. I feel comfortable in this section. I personally love make tool.
  • 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 would stay in GNU Octave community as long as there are opportunities for improvements in GUI( which I guess is a long time ;) )

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?
I have just heard about Octave before. I was not using it.
  • If not, where would you expect or advise us to do advertising?
I guess there can be more involvement with the educational institutions. You people can motivate professors to use Octave instead of MATLAB ( which generally have license issues). Taking example of my institution,here students are not aware about Octave, they generally use cracked MATLAB, or go to the labs so that they can use licensed MATLAB.
  • 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, …
Personally,I got all the information that I needed to know about GSoC and Octave by doing a little bit research. So I am sorry, I won't be able to suggest anything in this section.

P: Prerequisites[edit]

  • Please state the operating system you work with.
    • If you have access to more than one, please state them and the conditions under which you are granted this access.
I love working with Linux. Though I have Windows too.
  • Please estimate an average time per day you will be able to (if separated) access
  • an internet connection
I will be having access to internet connection 24*7.
  • a computer
I have a personal computer plus a computer in my General Computing Lab which I can use to connect with servers of IIT for faster computations. So I will be having access to P.C. 24 hours a day, and to computer in Lab 7-10 hours a day.
  • a computer with your progressing work on
I would be able to dedicate 45-50 hours per week for this work. I have ability to work continuously, so I will be able to work 10 hours a day. I would like to relax one day in a week, and will work continuously for other days.
  • Please describe the degree up to which you can install new software on computers you have access to.
I have my personal computer, I have full freedom to install anything on it.

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.
I take criticism in a healthy way only if it is delivered in a healthy way. It's like if you say "It is wrong", then I would ask for a reason and a better solution, or at least a motivation to do so.If you are saying "This is simply wrong" without any reason that I am afraid that I would hesitate in making any changes. In short, I can take criticism in a very healthy way if that criticism leads to a better result.
  • How autonomous are you when developing? If you answer both subquestions with "Yes, definitely", we are a tad confused. ;-)
    • Do you like to discuss changes intensively and not start coding until you know what you want to do?
I like to discuss changes and try to understand them before starting of code. But I believe that sometimes things are more clear if we start coding them. So I believe that we should discuss the change and try to understand it and start making our hands dirty by coding them away instead of discussing the changes intensively.
    • 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, This is the thing that I was talking about. I believe in getting my hands dirty in code ;), and yes one should take the risk of throwing the code away if it does not fit into our project.

Y: Your task[edit]

  • Did you select a task from our list of proposals and ideas?
    • 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.
Yes,I did. I have chosen the project idea from the Ideas List.
Wiki link : Ideas Page
Octave is currently written in C++/QT. Though it have a great UI , but as pointed out by the organisation , it is not ready for production.
The project will basically aim at improving the User Experience of the software. This can be done by following steps:
  • Improving the MainWindow:
Terminal and Document widget are currently in tabbed in the mainWindow. But now separate area will be assigned to both of them so that they can behave as two independent units.A large part of area will be given to the command window(by default). But user will have independence of resizing and re-arranging the widgets according to their personal preference.
  • Improve the IRC client:(lower priority)
Currently the UI of IRC client is not so informative .So more UI will be made more informative by adding more custom functions.This feature will be implemented only if it’s really quick.
  • Improving the documentation browser:
The documentation browser will be provided with new improved UI. Faster navigation,control of docs from command window will be implemented.(type "doc exam" and you will be redirected to “exam” location of manual.
(optional)Search within browser will be implemented.Focusing on search,it will be an index based search, and will use an efficient algorithm that will be developed in c/c++.
  • Thread-safety:
Octave GUI is currently not thread-safe.Although interpreter and GUI are running in different threads but still there are many possibilities for improvements.Currently I am reading about debugging race conditions.
  • Other small implementations:
Other small functionalities such as:
  • a.Ability to create/delete/copy/paste files and folders in the FileExplorerDock will be added.
  • b. Changing the value of a variable in the workspace by single/double click will be added.
  • c.Repetition of commands in the historyDockWidget will be shown as a single entry(as a TreeView which can then be expanded as a normal tree)This would make wiser use of allocated space to HistoryDockWidget.
Note: Inspiration for GUI will be mainly GUI Octave and sometime Matlab also(We can figure out the best feature and implement it).
Benefits
  • Users:
Users will have benefit of faster navigation, better and informative user interface so that it can make their task easy and fast.Improved UI , Improved IRC client will be very helpful to the users. This will increase the user experience of GNU Octave.
  • GNU Octave:
GNU OCtave will itself be benefited as they will get a better product which will be ready for production. This project will result in a product that will prove that hiding source is not necessary to produce a quality GUI.This will somehow aim to satisfy Matlab users who want to be shielded from the horrors of a CLI interface.
    • If you apply for a task you have added yourself instead, please describe this task, its scope and people you already talked to concerning it. What field of tasks did you miss on the list?
I have applied for an idea from the idea's list.
  • 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"). Optionally include two or three milestones you expect.
Plan:
  • Before April 23:
(Familiarisation period).
I will familiarise myself with whole , code , try to fix and provide patches for the same.
  • April 23 - May 21:
(Community bonding period)
1.Focus will be on community bonding , know about the mentor personally and discuss things related to the project.
2.Documentation Reading.
3.To do self coding with GNU Octave to improve my further understanding with the Core Octave and GUI.
4.To discuss the methods for making Octave more thread-safe.
5.During this period I will remain in constant touch with my mentor and the GNU Octave community. I will remain active on IRC and Mailing lists to discuss and finalize on the modifications (if any) that needs to be on existing strategies and design of new strategies.
  • May 21 - July 8
(Coding Period starts)
1.Making GUI more flexible by improving MainWindow.
2.Improving Documentation Browser.
3.Improving IRC Client.(Lower priority)
4.Other small basic Implementations
  • July 9.
Mid-Term Evaluation
  • July 10-July 31 :
1.Thread safety will be considered and implemented in this time.
2 Any other implementation which can come into consideration later either by me or by my mentor or anybody(User or other Developers) will be implemented in this period.
3.Documentation of whole work done.
  • July 31-August 13:
Buffer time kept for unexceptional delays. ( And in case of no delays, we can think of more functionalities to implement or solve bugs)
  • August 13:
Official Pen Down.
Time for Testing and scrubbing the code. Whole code developed will be thoroughly tested and bugs will be resolved(if any).
  • August 20:
Firm Pencil Down.
  • If you are unable to complete the project, are the results from part-way through still useful? How?
Yes Each and every part is pretty independent, completion of each part will be useful for Octave.
  • How will everybody know whether things are on-track at the halfway evaluation point?
If all the work stated before july 9 is completed, then I will be certainly ahead of halfway of project.But if in any unavoidable circumstances, I am not able to complete the three points before July 9, then half-way will be more than two points covered. And then the buffer time will be used