From Octave
Jump to navigation Jump to search

A: An introduction[edit]

  • I am Eugenio Gianniti, a student from Italy. I am pursuing my master's degree in Mathematical Engineering from Politecnico di Milano (Polytechnic University of Milan), currently attending my last year.
    • I can speak fluently English and Italian
    • I have a background in Mathematics and Electronics. I have done courses on Linear Algebra, Numerical Analysis, PDEs, Scientific Computation and Solid State Electronics
  • I am interested in coding, but have little experience in such a big cooperative project. I find the GSoC an amazing opportunity to learn how to interface to other developers in a fruitful fashion
    • I have no previous experience in the GSoC
  • I have been using MATLAB during all my studies, so I think that Octave is a valuable alternative and deserves effort. Moreover, my background gives me familiarity with the problems Octave is meant to solve

C: Contact[edit]

  • eg123 is my nick on the Octave IRC channel, bug tracker and wiki. Anyway, in the mailing list and when contributing patches I usually sign with my full name
  • My time zone is UTC+1:00, but due to DST in the period of GSoC I will be in UTC+2:00. I live in Italy.
  • I usually code between UTC 08:00 to UTC 18:00

E: Coding experience[edit]

  • I have been using MATLAB throughout my studies and attended courses in my master's degree about programming in C++. I have no previous experience with OpenGL and Qt
  • I have some experience in Bash scripting and Python
  • I currently do not have any experience with development teams, nor with open source projects
  • I have no previous experience with collaborative projects. Till now I have worked only on small, one-day projects as part of my course of Algorithm and Parallel Computation
  • I have so far contributed to Octave Forge packages, and to Octave core as well:
    • [1] A patch to change the error string of a utility
    • [2] A patch adding functions to the mapping package
    • [3] A patch to improve fem-fenics package build system

F: Feeling fine[edit]

  • I am comfortable using the mailing list. I have not been hanging around a lot on IRC, but I do not have problems with it
  • I do not have a large experience with DVCSs, anyway I have already grasped the basics of Mercurial and of the workflow involved in its use
  • I am learning Mediawiki, anyway I find it quite intuitive
  • I am comfortable using make, gcc and gdb. I can use the Autotools, usually exploring the documentation when I need a feature I do not already know how to implement. I know the basics of valgrind and gprof

O: Only out of interest[edit]

  • I first heard about Octave in my studies, but it was always cited just as an alternative to MATLAB and never really suggested
  • My first problem was related to Octave Forge: I find difficult accessing the development repositories of the various packages, I cannot find a link on their pages

P: Prerequisites[edit]

  • I have a computer installed with Mac OS X and another one with Arch Linux. On the first one I also have a development VM with Ubuntu 13.10 on Virtualbox
  • I will have access to the internet and my computers with my progressing work all day long
  • I administrate my computers, so I can install any supported software

S: Self-assessment[edit]

  • I think that criticism is fundamental to learn the best ways to interact with the community and contribute in a meaningful manner
  • When coding I prefer to get a preliminary general idea and then start to code to have a proof of concept, in order to have a basis on which to build further improvements. If in the process important implementation details emerge, I then like to widely discuss them to understand the better approach

Y: Your task[edit]

  • I selected General purpose Finite Element library. I would continue the work done last year in fem-fenics, with the ultimate goal to have it included in the main FEniCS distribution. Here is a preliminary list of features to implement in this project:
    • Reduce copies when passing matrices from Octave to dolfin
    • Avoid useless compilations of .oct files when they are not needed
    • Avoid using separate .ufl files, introducing the possibility to write UFL code in .m files
    • Implement in fem-fenics further FEniCS functionalities, preferably according to the FEniCS developers' directions
    • Improve the build and distribution system, so that end users can enjoy full functionality right away after installing from Forge
  • A tentative agenda for my project proposal follows. In the week 6 May - 9 May I will be attending compulsory intensive classes at the university, otherwise I am not planning any further non-coding periods
    • 22 April - 18 May: Study of the documentation and interaction with my mentor and the Octave community to understand thoroughly the code base and the contribution expected from my project
    • 19 May - 22 June: First phase of the project. I will implement bindings for the UFL language in Octave and adapt accordingly the provided examples. I will also work on the build and distribution system to allow for feedback on it from the community. In the end, I will commit a first set of new functions
    • 23 June - 27 June: Period for the submission of the mid-term review, I will double check the functionalities already implemented and improve their documentation
    • 28 June - 10 August: Second phase of the project. I will improve the package performance, both reducing copies of matrices between Octave and dolfin and implementing checks to avoid useless just in time compilations. Furthermore, I will add a second, probably larger, set of new functions, as suggested by the community and FEniCS developers. I expect to code some new examples which make use of the freshly introduced capabilities
    • 11 August - 22August: Week devoted to final minor fixes and to the improvement of the documentation