From Octave
Revision as of 00:56, 15 April 2013 by Carandraug (talk | contribs) (→‎GSoC 2013 application: shaping up application)
Jump to navigation Jump to search

Somehow I got involved with GNU octave even though I don't actually need it for work anymore. I used it for 6 months during my PhD to write the FRAPINATOR.

GSoC 2013 application

An introduction

  • Please describe yourself in three sentences, one of them regarding your current studies.
I'm a PhD student in Biochemistry and Bioinformatics. I have taught myself own to program by scratching my own itches. I believe in software freedom which allows me to learn much more than I could otherwise.
  • Which languages do you speak?
Portuguese (native), english (fluent), and spanish (basic).
  • What's your overall background?
Molecular biology.
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
While I keep a constant flow of code contributions to free software (a week without activity somewhere is very rare), they are mostly small fixes. I'm planning to apply for a job of software engineering after my PhD and would value the experience of being involved in a large plan with a well defined goal. Plus, I'd expect this work to be a chapter on my PhD thesis, and hopefully part of a published paper on the usefulness of GNU Octave for microscope image analysis.
  • Why are you choosing Octave?
I have been using Octave regularly for almost 3 years so it's relevant for my studies. The project I'm choosing as a direct impact on my research work.


  • Please state the nick you use on IRC and any other communication channel related to Octave.
My registered nick the freedone IRC servers is carandraug.
  • Which time zone do you live in? Will that change over GSoC duration?
I live on GMT which is very unlikely to change during the summer.
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
I have a very flexible time schedule. I usually work between 12:00 to 20:00 and 23:00 to 03:00.

Coding experience

  • Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
I have no experience with OpenGL or Qt. I have extensive experience Octave m functions, and been contributing to Octave and octave Forge for almost 3 years. I have minimal experience with C++, the minimum required for maintenance of some Forge packages. I have been teaching myself C++ lately though I haven't contributed anything useful to the community yet.
  • Please describe your experience with other programming languages.
I'm a comfortable perl programmer (approximately 2 years) and a developer of BioPerl. I have also some knowledge of Python.
  • Please describe your experience with being in a development team. Do you have experience working with open source or free projects?
My contributions to free software are split into 3 main projects. Octave (and Octave Forge), BioPerl, and gtksourceview.
  • 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.
The biggest project I was ever involved with is Octave Forge where I have learned most of my programming skills. I submitted my first patch and bug fix to the zenity package but most of my contributions have been on the image package, mainly in morphology functions. I am currently the maintainer of Octave Forge.
  • 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.
There are too many to list here so I'll just mention some of the last ones:
  • implemented the citation() with [1]. This included making Octave's build system, and pkg() aware of it.
  • several improvements on Octave indexed images, 37a21f615d67, dffb28f47ea8, 7d21456c09d1, 14b7679891dd, 4db08f52a6ed, 89c8d8f8f87b.

Feeling fine

  • 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
Frequent user of IRC, subscriber and maintainer of several mailing lists.
  • Mercurial or other source code management systems
Frequent user of hg, git and svn.
  • Mediawiki or other wiki software
Frequent editor.
  • make, gcc, gdb or other development tools
Some experience with GNU make and SCons. Not with gcc and gdb. Plenty of experience with Unix command line tools.
  • 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 :-)
Free time. I've been around for 3 years, I'm unlikely to go anywhere.

Only out of interest

  • Did you ever hear about Octave before?
  • If so, when and where? How far have you been involved already?
  • If not, where would you expect or advise us to do advertising?
I learned about Octave by googling for a free software alternative to Matlab. My first PhD project involved using a Matlab tool, but I started by [it to Octave] instead (it's not a piece of code I'm currently proud of, but it was my first programming project).
  • 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, …


  • 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 have 2 systems running Debian testing. These are my own systems, with complete root access. If required, I can have sporadic access to a MacOS X 10.5 and Windows XP for testing purposes.
  • 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
24/7 (I keep all my development work on a public server)
  • Please describe the degree up to which you can install new software on computers you have access to.
Complete access on all systems.


  • Please describe how useful criticism looks from your point of view as committing student.
  • How autonomous are you when developing?
I like to think that I'm a fairly autonomous programmer with strong Google powers.
  • 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?
  • 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?
I'm a firm believer of think before you code and usually start by writing drafts of documentation.

Your task

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

Octave to do list

You can add stuff to my todo list (I may however move it back to your todo list on your userpage). Don't forget to sign each item with ~~~~

wiki to do list

octave code to write

  • make unimplemented check for packages as well
  • rewrite inputParser using classdef
  • implement nlinfit as wrapper to leasqr (using inputParser)
  • make test and demo deal with tests and demos in .cc packages
I don't like the first option. It's ugly and further pollutes the user namespace. And even if we have some Makefile that copies the .cc file at pkg install time, users won't know they have to make the call to test and demo differently. I guess demo and test functions would have to be modifed for that. I say just place the demos and tests on the .cc file. Later we can change pkg to copy the .cc file, and then change demo and test to look for those files if the function is .oct file. Tests are mainly used in development so users won't need them. Demos... well in the case of ellipj, it has not been working for a very long time so my guess is that people haven't been using it that much. What do you think?
  • replacement for morphology toolbox
  • port omero toolbox
  • use post_install to move oct into private directory?
  • import to octave from octave-forge
    • exifread <-- readexif (image) but should probably be implemented in C++ using GraphicsMagick. Actually maybe we shouldn't even bother. Matlab is deprecating it in favour of imfinfo.

octave-forge to do

  • finish iptcheckinput
  • get an octave-forge logo (falar com o Duarte)
  • finish zenity package
  • get hough transform function in image package compatible
  • look into [SIP] and [sivp]
  • from Perl
    • File::Temp
    • check for revision numbers
    • Getopt::Long
  • port ReadImageJROI
  • make compatible normxcorr2: [Jordi metioned this paper] and
  • fix on optim package
    • move test scripts into function test blocks
    • move example scripts into demo blocks

other octave related todo

  • update gtksourceview octave lang file
  • make gtksourceview highlight octave help text as texinfo
  • make gtksourceview highlight test and demo as octave and not comment