User:Alcedine: Difference between revisions

From Octave
Jump to navigation Jump to search
(Completed F)
(Elaborated on the task and provided delivery targets)
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
== A: An introduction ==
== A: An introduction ==
My name is '''Joonas Lipping'''.
* 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.
It is currently my third year studying for an engineer's degree (DI) at Aalto university in Finland.
It is currently my third year studying for an engineer's degree (DI) at Aalto university in Finland.
I am by nature wired to analyze and try to figure things out, and problem-solving for me is almost synonymous with fun.
I am by nature wired to analyze and try to figure things out, and problem-solving for me is almost synonymous with fun.
I'm probably going to end up being a [http://www.thesoftwaregardener.com/agile/we-are-software-gardeners-developers-plan-to-engineer-but-master-gardening/ software gardener] "when I grow up",
I'm probably going to end up being a [http://www.thesoftwaregardener.com/agile/we-are-software-gardeners-developers-plan-to-engineer-but-master-gardening/ software gardener] "when I grow up",
and hopefully mine will be a beautiful garden.
and I hope that my garden will be a beautiful one.


** Which languages do you speak?
** Which languages do you speak?
Line 11: Line 13:
** What's your overall background?
** What's your overall background?
I am studying engineering physics, and I have a solid foundation in mathematics and physics from my studies.
I am studying engineering physics, and I have a solid foundation in mathematics and physics from my studies.
I have also taken courses in Python, C and C++, and I'm currently taking a course in data structures and algorithms (although most of that material I know already).
I have taken courses in Python, C and C++, and I'm currently taking a course in data structures and algorithms (though in fact I do know most of the material already).
I have also done some programming outside of school, mostly in Python.
I have also done quite a bit of programming outside of school, mostly in Python.


* 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?
Two of my main goals right now are to work on my C++ skills and to accumulate some tangible experience with software design.
One of my main personal goals right now is to get development experience and hone my programming skills, especially C++, in the context of a large-scale project.
Google Summer of Code allows me to do both of these things while helping to improve the state of free software.
Google Summer of Code allows me to do this while helping to improve the state of free software.
I really can't think of a downside to it!
I really can't think of a downside to it!
I first heard of GSoC a few months ago, and I knew instantly that it was something I wanted to do.
I first heard of GSoC a few months ago, and I knew instantly that it was something I wanted to do.
Line 24: Line 26:


* Why are you choosing Octave?
* Why are you choosing Octave?
Octave lets me make use of my existing skills in C++ and mathematics, as well as to build new ones.
Octave lets me make use of my existing skills in C++ and mathematics, as well as to learn new things and gain experience. There are lots of interesting things for me to do here, and I'm gradually building a rapport with the source code.
Besides that, Octave has been useful to me, so I'd like to be useful to Octave as well. (:
Besides that, Octave has been useful to me, so I'd like to be useful to Octave as well. (:


Line 33: Line 35:
UTC+3. This will not change.
UTC+3. This will not change.
* 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?
12.00-24.00 UTC, though I can also go later if necessary. I will also probably be available on IRC earlier than that.
Between 12.00 and 24.00 UTC, though I can also go later if necessary.


== E: Coding experience ==
== E: Coding experience ==
Line 39: Line 41:
* 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.
My most significant C++ experience is a four-person project for a university programming course in Fall 2013; the [https://github.com/quarian/revenge-moon-storm sources are available] on GitHub (my account is lippinj).
My most significant C++ experience is a four-person project for a university programming course in Fall 2013; the [https://github.com/quarian/revenge-moon-storm sources are available] on GitHub (my account is lippinj).
It's a clone of and old Finnish game called minebombers. I have hosted the project doc [http://www.lippinj.com/revenge/document.xhtml here] for convenience.u
The project is a clone of an old Finnish game called minebombers. I have hosted the project doc [http://www.lippinj.com/revenge/document.xhtml here] for convenience, in case you want to take a look.
I've recently discovered TopCoder Single Round Matches, which I usually do in C++, although [http://www.topcoder.com/member-profile/Alcedine/ I don't always do so well].


I have taken a course on mathematical computer programs, about half of which was about Matlab. I've since used Matlab or Octave here and there to help with my studies.
As for .m scripts, I have taken a course on mathematical computer programs, about half of which was about Matlab.
I've since used Matlab or Octave here and there to help with my studies.
You can see some of my code in the diffs I've submitted to [https://savannah.gnu.org/bugs/?41186 bug #41186].


* Please describe your experience with other programming languages.
* Please describe your experience with other programming languages.
I have some experience with python, both inside and outside of university courses.
It's my go-to language for day-to-day programming tasks.
For example, I use a simple script of my own to keep track of my timetable.
I also worked for one summer with ArcGIS, which involved python scripting.
I have a general understanding of HTML, CSS and javascript.
* Please describe your experience with being in a development team.
* Please describe your experience with being in a development team.
The C++ course project I mentioned above was done in a group of four people. We discussed our project on IRC Besides that, I have no experience with team development.
The C++ course project I mentioned above was done in a group of four people. We met once per week throughout the project to sit down, write code and discuss the project architecture. We also used an IRC channel for discussion and coordination in between meetings, as well as an online organization tool called [https://trello.com/ Trello] for the backlog.


* 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.
All the coding I've done before Octave has been from scratch, so Octave is my first experience with a project of this scale (though I've occasionally browsed some other sources, as well).


* 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.''
* Please state the commits and patches you already contributed to Octave.
** I have contributed a patch to [https://savannah.gnu.org/bugs/?41186 bug #41186].
** I submitted [https://savannah.gnu.org/patch/?8367 patch #8367].
** I have looked into an interpreter problem mentioned on the "Projects" page, and devised a possible solution, which is outlined [https://mailman.cae.wisc.edu/pipermail/octave-maintainers/2014-March/039554.html here] on the mailing list.
** I am working on the dither function, the current state of which you can see [http://www.lippinj.com/octave/dither.cc here]. It's functional, but needs a bit more work before it can be submitted as a patch.


== 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'm very comfortable using IRC. I have not used mailing lists before.
I'm very comfortable using IRC. I haven't used mailing lists before this, but I've made a couple of posts now and I think I've got the hang of it.


** Mercurial or other source code management systems
** Mercurial or other source code management systems
I'm comfortable with svn. I also know a bit about git.
I've used svn before, as well as a tiny bit of git.


** Mediawiki or other wiki software
** Mediawiki or other wiki software
I'm comfortable editing MediaWiki pages.
I use Mediawiki without problems.


** make, gcc, gdb or other development tools
** make, gcc, gdb or other development tools
I know how to use g++ and gdb. I can build a project with make, but I can't write Makefiles or autotools config files.
I know how to use g++ and gdb. I can build a project with make, but I can't write Makefiles or autotools config files.
I read up on flex and bison when I ran into lex.ll and oct-parse.in.yy in the source. I can mostly make sense of the rules now.


* What will make you actively stay in our community after this GSoC is over?
* What will make you actively stay in our community after this GSoC is over?
Line 71: Line 89:
* Did you ever hear about Octave before?
* Did you ever hear about 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?
** If not, where would you expect or advise us to do advertising?
 
* 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, …''
I can't remember the first time I heard of Octave, but I've been aware of it for some time. I've used it occasionally for studying. I haven't been involved in the community before.
 
* What was the first question concerning Octave you could not find an answer to rather quickly?
 
Is it possible to anti-alias the plotted figure?


== P: Prerequisites ==
== P: Prerequisites ==
* Please state the operating system you work with.
* Please state the operating system you work with.
Arch Linux
I have a desktop and a laptop computer, both running Arch Linux.
** If you have access to more than one, please state them and the conditions under which you are granted this access.
 
I have access my university's Windows and Linux workstations (well, the OSX workstations too, although that is probably not that useful, since the last Apple computer I've ever used was a G3).
I have access to my university's Windows and Linux workstations (well, the OSX workstations too, although that is probably not that useful, since the last Apple computer I've ever used was a G3).
* Please estimate an average time per day you will be able to ''(if separated)'' access
The relevant campus building is open 24/7.
** an internet connection
 
unlimited
* Please estimate an average time per day you will be able to access: an internet connection; a computer; a computer with your progressing work on
** a computer
Unlimited. I will be developing on my personal desktop and laptop computers. I have reliable access to moderately fast internet where I live.
unlimited
 
** a computer with your progressing work on
unlimited
* Please describe the degree up to which you can install new software on computers you have access to.
* Please describe the degree up to which you can install new software on computers you have access to.
unlimited on my personal computers; can't install on university computers
Unlimited on my personal computers; can't install on university computers (other than in the sense of compile + run).


== 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.
* How autonomous are you when developing? ''If you answer both subquestions with "Yes, definitely", we are a tad confused. ;-)''
 
Criticism is essential to a healthy development process. If I don't agree with a piece of criticism, I will defend my position, but it will be as a means to facilitate discussion, not to rebuke it. Feedback is one of those things where ego only gets in the way.
 
* How autonomous are you when developing?
** Do you like to discuss changes intensively and not start coding until you know what you want to do?
** Do you like to discuss changes intensively and not start coding until you know what you want to do?
Not really. If it's a large change, I prefer to have a little bit of discussion, but even then I like to start working as soon as I have a reasonably good idea about what I'm going to do.
** 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?
** 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 way of working feels natural to me.


== 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?
** 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.''
 
** 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?
Yes.
* 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.''
 
** 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.
 
My task is the one about [http://wiki.octave.org/SoC_Project_Ideas#Improvements_to_N-dimensional_image_processing N-dimensional image processing].
 
The project will consist of two parts.
The first part spans the first two thirds of the coding period and consists of extending the existing geometric transformation functions to handle N-dimensional images.
The second part begins work on geometric transformation objects.
It's difficult to predict how far it is possible to go in the allotted time, but the working target is to have a rough functional prototype of the affine2d object and an imwarp function that works with it.
 
I will also bring the relevant documentation up to speed, with examples where they are missing.
 
The first part of the project has its deliverables spread over two targets in order to provide some concrete results for the midterm:
 
====Delivery target I (June 23)====
'''makeresampler, tformarray''' -
general transformation utilities; tformarray in particular handles transformations of a more general sort than just 2D. These functions are entirely new.
 
'''imcrop, imresize, imrotate, imtranslate, imtransform''' --
simple operations on images. These will be extended to support ND images, for which the relevant operation is applied planewise. Their 2D versions already exist in the image package.
 
The functions shall be in releasable form, with code and tests in their final forms. The documentation shall be in a reasonable state, but doesn't have to be finalized.
 
====Delivery target II (July 10)====
'''impyramid''' - a compression algorithm; the paper is available [http://web.mit.edu/persci/people/adelson/pub_pdfs/pyramid83.pdf here]. This does not currently exist in Octave, but will be implemented in a form that is ND-compatible.
 
This function shall be delivered in finalized form. In addition, documentation for the functions from target I shall be finalized.
 
====Delivery target III (August 18)====
Geometric transformation objects have the same function as the tform structs created by maketform, but are class-based.
 
A functional prototype of the '''affine2d''' object shall be delivered, along with an '''imwarp''' that works with it. The implementation should describe a paradigm that can be easily applied to further transformation objects.
 
===Timeline===
 
{|
!style="text-align:right;"| May 19
|Coding starts
|-
!style="text-align:right;"| June 23
|Delivery target I. Midterm evaluations open
|-
!style="text-align:right;"| June 27
|Midterm evaluations deadline
|-
!style="text-align:right;"| July 10
|Delivery target II. Work begins on transformation objects
|-
!style="text-align:right;"| August 11
|Code complete. Cleanup and complement tests where necessary
|-
!style="text-align:right;"| August 18
|Pencils down; delivery target III. Final evaluations open
|-
!style="text-align:right;"| August 22
|Final evaluations deadline
|}
 
In the event that the geometric transformation functions take less time than anticipated, they will be finished ahead of time and work on the transformation objects will begin immediately.
 
[[Category: Summer of Code]]
[[Category: Summer of Code]]

Latest revision as of 15:44, 27 March 2014

A: An introduction[edit]

My name is Joonas Lipping.

  • Please describe yourself in three sentences, one of them regarding your current studies.

It is currently my third year studying for an engineer's degree (DI) at Aalto university in Finland. I am by nature wired to analyze and try to figure things out, and problem-solving for me is almost synonymous with fun. I'm probably going to end up being a software gardener "when I grow up", and I hope that my garden will be a beautiful one.

    • Which languages do you speak?

Finnish, English and Estonian. I also know basic German and Swedish.

    • What's your overall background?

I am studying engineering physics, and I have a solid foundation in mathematics and physics from my studies. I have taken courses in Python, C and C++, and I'm currently taking a course in data structures and algorithms (though in fact I do know most of the material already). I have also done quite a bit of programming outside of school, mostly in Python.

  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?

One of my main personal goals right now is to get development experience and hone my programming skills, especially C++, in the context of a large-scale project. Google Summer of Code allows me to do this while helping to improve the state of free software. I really can't think of a downside to it! I first heard of GSoC a few months ago, and I knew instantly that it was something I wanted to do.

    • Please also describe your previous experience with the GSoC, if any.

I have no previous experience with GSoC.

  • Why are you choosing Octave?

Octave lets me make use of my existing skills in C++ and mathematics, as well as to learn new things and gain experience. There are lots of interesting things for me to do here, and I'm gradually building a rapport with the source code. Besides that, Octave has been useful to me, so I'd like to be useful to Octave as well. (:

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.

alcedine

  • Which time zone do you live in? Will that change over GSoC duration?

UTC+3. This will not change.

  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?

Between 12.00 and 24.00 UTC, though I can also go later if necessary.

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.

My most significant C++ experience is a four-person project for a university programming course in Fall 2013; the sources are available on GitHub (my account is lippinj). The project is a clone of an old Finnish game called minebombers. I have hosted the project doc here for convenience, in case you want to take a look. I've recently discovered TopCoder Single Round Matches, which I usually do in C++, although I don't always do so well.

As for .m scripts, I have taken a course on mathematical computer programs, about half of which was about Matlab. I've since used Matlab or Octave here and there to help with my studies. You can see some of my code in the diffs I've submitted to bug #41186.

  • Please describe your experience with other programming languages.

I have some experience with python, both inside and outside of university courses. It's my go-to language for day-to-day programming tasks. For example, I use a simple script of my own to keep track of my timetable. I also worked for one summer with ArcGIS, which involved python scripting. I have a general understanding of HTML, CSS and javascript.

  • Please describe your experience with being in a development team.

The C++ course project I mentioned above was done in a group of four people. We met once per week throughout the project to sit down, write code and discuss the project architecture. We also used an IRC channel for discussion and coordination in between meetings, as well as an online organization tool called Trello for the backlog.

  • 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.

All the coding I've done before Octave has been from scratch, so Octave is my first experience with a project of this scale (though I've occasionally browsed some other sources, as well).

  • Please state the commits and patches you already contributed to Octave.
    • I have contributed a patch to bug #41186.
    • I submitted patch #8367.
    • I have looked into an interpreter problem mentioned on the "Projects" page, and devised a possible solution, which is outlined here on the mailing list.
    • I am working on the dither function, the current state of which you can see here. It's functional, but needs a bit more work before it can be submitted as a patch.

F: Feeling fine[edit]

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists

I'm very comfortable using IRC. I haven't used mailing lists before this, but I've made a couple of posts now and I think I've got the hang of it.

    • Mercurial or other source code management systems

I've used svn before, as well as a tiny bit of git.

    • Mediawiki or other wiki software

I use Mediawiki without problems.

    • make, gcc, gdb or other development tools

I know how to use g++ and gdb. I can build a project with make, but I can't write Makefiles or autotools config files.

I read up on flex and bison when I ran into lex.ll and oct-parse.in.yy in the source. I can mostly make sense of the rules now.

  • What will make you actively stay in our community after this GSoC is over?

An encouraging community and a supply of interesting problems to work on.

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 can't remember the first time I heard of Octave, but I've been aware of it for some time. I've used it occasionally for studying. I haven't been involved in the community before.

  • What was the first question concerning Octave you could not find an answer to rather quickly?

Is it possible to anti-alias the plotted figure?

P: Prerequisites[edit]

  • Please state the operating system you work with.

I have a desktop and a laptop computer, both running Arch Linux.

I have access to my university's Windows and Linux workstations (well, the OSX workstations too, although that is probably not that useful, since the last Apple computer I've ever used was a G3). The relevant campus building is open 24/7.

  • Please estimate an average time per day you will be able to access: an internet connection; a computer; a computer with your progressing work on

Unlimited. I will be developing on my personal desktop and laptop computers. I have reliable access to moderately fast internet where I live.

  • Please describe the degree up to which you can install new software on computers you have access to.

Unlimited on my personal computers; can't install on university computers (other than in the sense of compile + run).

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.

Criticism is essential to a healthy development process. If I don't agree with a piece of criticism, I will defend my position, but it will be as a means to facilitate discussion, not to rebuke it. Feedback is one of those things where ego only gets in the way.

  • How autonomous are you when developing?
    • Do you like to discuss changes intensively and not start coding until you know what you want to do?

Not really. If it's a large change, I prefer to have a little bit of discussion, but even then I like to start working as soon as I have a reasonably good idea about what I'm going to do.

    • 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 way of working feels natural to me.

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.

My task is the one about N-dimensional image processing.

The project will consist of two parts. The first part spans the first two thirds of the coding period and consists of extending the existing geometric transformation functions to handle N-dimensional images. The second part begins work on geometric transformation objects. It's difficult to predict how far it is possible to go in the allotted time, but the working target is to have a rough functional prototype of the affine2d object and an imwarp function that works with it.

I will also bring the relevant documentation up to speed, with examples where they are missing.

The first part of the project has its deliverables spread over two targets in order to provide some concrete results for the midterm:

Delivery target I (June 23)[edit]

makeresampler, tformarray - general transformation utilities; tformarray in particular handles transformations of a more general sort than just 2D. These functions are entirely new.

imcrop, imresize, imrotate, imtranslate, imtransform -- simple operations on images. These will be extended to support ND images, for which the relevant operation is applied planewise. Their 2D versions already exist in the image package.

The functions shall be in releasable form, with code and tests in their final forms. The documentation shall be in a reasonable state, but doesn't have to be finalized.

Delivery target II (July 10)[edit]

impyramid - a compression algorithm; the paper is available here. This does not currently exist in Octave, but will be implemented in a form that is ND-compatible.

This function shall be delivered in finalized form. In addition, documentation for the functions from target I shall be finalized.

Delivery target III (August 18)[edit]

Geometric transformation objects have the same function as the tform structs created by maketform, but are class-based.

A functional prototype of the affine2d object shall be delivered, along with an imwarp that works with it. The implementation should describe a paradigm that can be easily applied to further transformation objects.

Timeline[edit]

May 19 Coding starts
June 23 Delivery target I. Midterm evaluations open
June 27 Midterm evaluations deadline
July 10 Delivery target II. Work begins on transformation objects
August 11 Code complete. Cleanup and complement tests where necessary
August 18 Pencils down; delivery target III. Final evaluations open
August 22 Final evaluations deadline

In the event that the geometric transformation functions take less time than anticipated, they will be finished ahead of time and work on the transformation objects will begin immediately.