Open main menu

I got involved with Octave on the Winter of 2010, at the end of my first year as PhD student. My project involved using a Matlab piece of code written by a collaborator but I refused to use it, I wanted free software. So I convinced the collaborators to release it under GPL and ported it to Octave (released as frapinator, but I really should go back and write it properly).

Since then, I have contributed to Octave many times, became maintainer of the Octave Forge project and its image package. While I have no formal education in programming or computer science, it was the freedom of Octave and its community that allowed me to learn so much.

Contents

GSoC 2013 application

An introduction

  • Please describe yourself in three sentences, one of them regarding your current studies.
I am a PhD student in Biochemistry and Bioinformatics, doing microscope image analysis and automatic catalogue and curation of biological data on online databases. I have taught myself own to program by scratching my own itches. I believe in software freedom which allowed 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 will apply for a job of software engineering after my PhD and want the experience of being involved in a large plan with a well defined goal. This will also allow me to gain experience with C++, something that I have been delaying for too long and will give me scratch access to a whole new world of itches. Finally, the proposed project will be a chapter on my PhD thesis, and part of a planned 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 and it's relevant for my studies. The project being proposed also has a direct impact on my research work.

Contact

  • 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 IST (GMT+1 during the summer) 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 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 with Octave m functions, through my contributions to Octave and Octave Forge in the last 3 years. I have minimal experience with C++, the minimum required for maintenance of some Forge packages. Though I have been improving my C++ lately, 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:

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, …

Prerequisites

  • 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
24/7
  • a computer
24/7
  • 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.

Self-assessment

  • 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
  • document ND support for padarray
  • double check usage of deprecated erode and dilate functions (bwhitmiss)
  • default __spatial_filtering S to zeros of same dimension as DOMAIN
  • implement im2java2d
  • implement bwareaopen
  • implement imclearborder
  • port FIESTA

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