User:Avbm: Difference between revisions

From Octave
Jump to navigation Jump to search
(Created page with "=Amod Mulay's Application= == A: An introduction == I am a graduate student at Stony Brook University. I have a master's in Mechanical Engineering and am pursuing a second one...")
 
No edit summary
 
(14 intermediate revisions by 2 users not shown)
Line 10: Line 10:
C/C++ was the first programming language I learnt. Have been using it on and off for various projects for a little more than 6 years. I am fairly comfortable with C/C++ code and am familiar(not an expert/advanced user) with the GNU build system however I don't have any experience working with a large code base.  
C/C++ was the first programming language I learnt. Have been using it on and off for various projects for a little more than 6 years. I am fairly comfortable with C/C++ code and am familiar(not an expert/advanced user) with the GNU build system however I don't have any experience working with a large code base.  


===Matlab/Octave===
I have used Matlab for various college projects for the last 5 years. I began using Octave as a Matlab replacement about 2 years ago. The main uses have been for simulation and image processing. I know most of the similarities and differences between Matlab and Octave.


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 ;-)
===Python===
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
I learnt python just for fun a few years ago. The only project that I have done using python is for my Computer Networks class. Other than that, I ported a few of my old college projects to python for practice but that's about it. I do like the language and would classify myself as an average user.
** ''C++ -- strong. Maybe I don't know some really dark sides of C++, but I think I know C++ language and some best practices. I use it for 5 years, 1.5 of which is usage on real projects.''
 
** ''m-scripting -- basic. Some learning tasks and tutorials.''
===Other===
** ''OpenGL -- basic.''
Other than the above three  I have used some basic javascript & HTML. I am quite familiar with the Mediawiki framework and am one of the site maintainers for the [http://wiki.cyanogenmod.org Cyanogenmod wiki]. I have used the CGal library for a graphics project. I have briefly dabbled with QT when we were experimenting with various frontend/interface for an embedded project which transmitted data on the serial port. I primarily used Labview for my Master's Thesis.
** ''Qt -- medium.''
 
* Please describe your experience with other programming languages. ''Mathematica, Java - basic.''
I am a bit familiar with mercurial(thanks to Jordi) and have submitted a couple of minor patches which fix Texinfo5 compatibility issues in Octave.
* Please describe your experience with being in a development team.
* 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.
''As for my experience with real projects:''
# ''CAD Software - software developer, tasks - mostly refactoring and bugfixing. I've worked remotely.''
# ''Currently I'm working on medical image processing program. My work is to integrate algorithms, to fix bugs and write new features.''
''Both of these projects are quite large - more than 10 years old, with several 100k lines of code.''
''The main lesson I've learned -- even if you have no idea at first sight, it's possible to understand your task, the way to do it and complete it.''
* Please state the commits and patches you already contributed to Octave. ''No one so far.''


== F: Feeling fine ==
== F: Feeling fine ==
* Please describe (in short) your experience with the following tools:
*IRC/mailing lists: familiar with using IRC.(IRC name: white) I have also used (subscribed and posted)the octave-maintainers list
** IRC and mailing lists ''basic - Just reading. I've never participated in discussion.''
*Mercurial: new to using mercurial but I have the hang of it(thanks to Jordi)
** Mercurial or other source code management systems ''SVN, TFS. I've never worked with Mercurial, but it seems to be quite easy.''
*Mediawiki: quite familiar with mediawiki including (slightly) advanced features such as templates
** Mediawiki or other wiki software ''Well, there is project wiki on my current project.''
*Average working knowledge of make and gcc. Haven't used gdb much.
** make, gcc, gdb or other development tools ''Only some experience with gcc. I've used similar Microsoft tools.''
*I work much better in a group (of 2/3 than individually) and prefer to have regular (constructive) feedback. Since both of those are inherently a part of OSS I should be quite happy to continue contributing to Octave after GSoC during most of my free time.
* What will make you actively stay in our community after this GSoC is over? ''If I'll be (more) familiar with Octave source code in general and my particular task, it will be good not to leave work halfway. There are (always) also a lot of bugs to be fixed. So if (when) I have enough time, I want to continue contributing.''


== O: Only out of interest ==
== O: Only out of interest ==
* Did you ever hear about Octave before?
I guess I have covered most of the topics above. My two main gripes with octave are:
** If so, when and where? How far have you been involved already? ''I've heard about Octave first time on [https://www.coursera.org/course/ml Machine Learning class on Coursera].''
*Not all of the image processing built-in functions are not supported including some of the more commonly used ones like the wiener filter
** If not, where would you expect or advise us to do advertising?
*Octave is much slower than Matlab especially for non-vectorized code (which have many loops)
* What was the first question concerning Octave you could not find an answer to rather quickly? ''No one so far.''


== P: Prerequisites ==
== P: Prerequisites ==
* Please state the operating system you work with.
My primary OS is linux (Arch linux distro if that matters). I also have access to Windows 7 professional.
** If you have access to more than one, please state them and the conditions under which you are granted this access. ''There are 2 OSs installed on my laptop: Windows 7 x64, Kubuntu 12.10 x64. I'll try to use both of them in process of development.''
I should have access to the internet 24x7 unless I am on the road/travelling (which is a remote possibility). I have two computers (laptop + Desktop) and have complete access to them 24x7.
* Please estimate an average time per day you will be able to ''(if separated)'' access
** an internet connection
** a computer
** a computer with your progressing work on
''All the time. If I have any problems, I'll try to alert in advance.''
* Please describe the degree up to which you can install new software on computers you have access to. ''I have personal laptop, so I can install any software on it.''


== S: Self-assessment ==
== S: Self-assessment ==
* Please describe how useful criticism looks from your point of view as committing student. ''It is. It can be a lot of mistakes at the beginning, so I need feedback to avoid them.''
*I am quite capable of working alone for extended periods but I prefer working in small groups and periodic review/criticism. Also working alone(in a void) for a long time tends to get boring.
* How autonomous are you when developing?
*I prefer to have a sort of holistic view of the work ahead but prefer to write code iteratively/incrementally with small improvements and testing between each step. I usually jot down my algorithm and functional blocks on paper before I start writing the code. Also usually I tend to prefer simple working algorithms(even if they have poor performance) initially and to replace them, at a later time, with more complicated but efficient ones.
** Do you like to discuss changes intensively and not start coding until you know what you want to do?
*I don't mind throwing out chunks of my work if it doesn't fit with the overall project. I have worked in a student run lab for 5 years and we did on occasion have to chuck out weeks worth of work but what I learnt from it was that the effort is never wasted and that dumped code tends to find applications elsewhere later.
** 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?
''Rather first, than second. I'd like to know what I should do, and only then code. If there are some difficulties, I usually try to think over them myself for some time, and then ask. Usually I can distinguish what I am able to handle myself, and when it's better to ask. Sometimes, if there are some problems, I can provide quick and ugly solution (not to be distracted from main task) and then remove it ASAP.''


== Y: Your task ==
== Y: Your task ==
* Did you select a task from our list of proposals and ideas?
I am interested in two tasks:
** 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. ''QtHandles.''
*Expand the built-in image processing functions to support more/most of those already there in matlab.
** 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?
*Work on JIT compilation and expand it to work with matrices/other data types than scalars.
* Please provide a rough estimated timeline for your work on the task. ''It is (currently) hard for me to make estimations for several months ahead. Could you help me with this?''
I am quite sure that I will have enough time for only <b>one</b> of the two and am leaning more towards JIT since that will be more useful in general.
 
My planned schedule is:
*May 28 - June 16: Get acquainted with llvm and familiarize myself with Octave's Abstract Syntax Tree(AST) and Single Static Assignment(SSA) property of intermediate representation(IR). Also seperate the various parts of the code into smaller functional blocks and start on llvm 3.2 compatibility.(Some work has already been done on 3.2 compatibility)
*June 17 - July 29: Make the current JITC code compatible with llvm 3.2 and work on making an llvm IR for a matrix.
*July 30 - August 30: Convert an octave Matrix IR to llvm IR and work on getting everything together.
*Sept 1 - Sept 14: Clean up the code, iron out the creases and work on final report.




<!--[[Category:Summer of Code 2013]]-->
[[Category:2013]]
[[Category:Applicants]]

Latest revision as of 09:56, 30 November 2013

Amod Mulay's Application[edit]

A: An introduction[edit]

I am a graduate student at Stony Brook University. I have a master's in Mechanical Engineering and am pursuing a second one in Computer Engineering and my primary research interest is robotics. I speak English, Hindi and Marathi. Quite honestly I wanted to contribute to a FOSS project for some time. I chose Octave because a lot of the work I do requires Matlab and Octave is the one open source alternative which is most compatible with Matlab. Participating in GSoC has the added bonus of getting paid for your work ;).

C: Contact[edit]

I usually use the nick "white" on IRC and other public forums. I live in the EST timezone(UTC-5) and will be here all of summer. I am usually more comfortable working at night but don't mind being active during the day(since most of the contributors are more active on IRC during work hours).

E: Coding experience[edit]

C/C++[edit]

C/C++ was the first programming language I learnt. Have been using it on and off for various projects for a little more than 6 years. I am fairly comfortable with C/C++ code and am familiar(not an expert/advanced user) with the GNU build system however I don't have any experience working with a large code base.

Matlab/Octave[edit]

I have used Matlab for various college projects for the last 5 years. I began using Octave as a Matlab replacement about 2 years ago. The main uses have been for simulation and image processing. I know most of the similarities and differences between Matlab and Octave.

Python[edit]

I learnt python just for fun a few years ago. The only project that I have done using python is for my Computer Networks class. Other than that, I ported a few of my old college projects to python for practice but that's about it. I do like the language and would classify myself as an average user.

Other[edit]

Other than the above three I have used some basic javascript & HTML. I am quite familiar with the Mediawiki framework and am one of the site maintainers for the Cyanogenmod wiki. I have used the CGal library for a graphics project. I have briefly dabbled with QT when we were experimenting with various frontend/interface for an embedded project which transmitted data on the serial port. I primarily used Labview for my Master's Thesis.

I am a bit familiar with mercurial(thanks to Jordi) and have submitted a couple of minor patches which fix Texinfo5 compatibility issues in Octave.

F: Feeling fine[edit]

  • IRC/mailing lists: familiar with using IRC.(IRC name: white) I have also used (subscribed and posted)the octave-maintainers list
  • Mercurial: new to using mercurial but I have the hang of it(thanks to Jordi)
  • Mediawiki: quite familiar with mediawiki including (slightly) advanced features such as templates
  • Average working knowledge of make and gcc. Haven't used gdb much.
  • I work much better in a group (of 2/3 than individually) and prefer to have regular (constructive) feedback. Since both of those are inherently a part of OSS I should be quite happy to continue contributing to Octave after GSoC during most of my free time.

O: Only out of interest[edit]

I guess I have covered most of the topics above. My two main gripes with octave are:

  • Not all of the image processing built-in functions are not supported including some of the more commonly used ones like the wiener filter
  • Octave is much slower than Matlab especially for non-vectorized code (which have many loops)

P: Prerequisites[edit]

My primary OS is linux (Arch linux distro if that matters). I also have access to Windows 7 professional. I should have access to the internet 24x7 unless I am on the road/travelling (which is a remote possibility). I have two computers (laptop + Desktop) and have complete access to them 24x7.

S: Self-assessment[edit]

  • I am quite capable of working alone for extended periods but I prefer working in small groups and periodic review/criticism. Also working alone(in a void) for a long time tends to get boring.
  • I prefer to have a sort of holistic view of the work ahead but prefer to write code iteratively/incrementally with small improvements and testing between each step. I usually jot down my algorithm and functional blocks on paper before I start writing the code. Also usually I tend to prefer simple working algorithms(even if they have poor performance) initially and to replace them, at a later time, with more complicated but efficient ones.
  • I don't mind throwing out chunks of my work if it doesn't fit with the overall project. I have worked in a student run lab for 5 years and we did on occasion have to chuck out weeks worth of work but what I learnt from it was that the effort is never wasted and that dumped code tends to find applications elsewhere later.

Y: Your task[edit]

I am interested in two tasks:

  • Expand the built-in image processing functions to support more/most of those already there in matlab.
  • Work on JIT compilation and expand it to work with matrices/other data types than scalars.

I am quite sure that I will have enough time for only one of the two and am leaning more towards JIT since that will be more useful in general.

My planned schedule is:

  • May 28 - June 16: Get acquainted with llvm and familiarize myself with Octave's Abstract Syntax Tree(AST) and Single Static Assignment(SSA) property of intermediate representation(IR). Also seperate the various parts of the code into smaller functional blocks and start on llvm 3.2 compatibility.(Some work has already been done on 3.2 compatibility)
  • June 17 - July 29: Make the current JITC code compatible with llvm 3.2 and work on making an llvm IR for a matrix.
  • July 30 - August 30: Convert an octave Matrix IR to llvm IR and work on getting everything together.
  • Sept 1 - Sept 14: Clean up the code, iron out the creases and work on final report.