A: An introductionEdit
I am an English speaking postgraduate student at the University of Edinburgh studying statistical signal processing in the Engineering school. My interests include mathematics and programming and I am always trying to learn more. This has led me to take online courses on Coursera in various subjects.
I would like to participate as I enjoy contributing to open source projects, particularly to projects I have used and will use in the future/ The benefit is of course two-way: I contribute useful code and gain experience working on a large project, which also helps me understand how they work at a low level. I have no previous experience with GSoC.
I am choosing Octave as it is a software package that I have used in the past. Because I find it useful, it makes sense to me to help out.
C: ContactEdit
On IRC, I use ashh87. My time zone is currently BST (UTC+1). I can code from midday to about 22:00 on most days except Saturdays, however I can't dedicate every day to GSoC as PhD students don't get a summer break!
E: Coding experienceEdit
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.
I use C/C++ in my spare time and have contributed to several open source projects. I use Matlab scripts daily at university.
- Please describe your experience with other programming languages.
I am also familiar with Perl and shell scripts.
- Please describe your experience with being in a development team. Do you have experience working with open source or free projects?
I have contributed to, amongst other things, the Linux kernel and ffmpeg. In both cases, feedback was given to me, pointing me in the right direction to improve my contributions,
- 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.
For me, this was probably adding support for a new ARM board to the Linux kernel. Doing this taught me about using version control and common tools to search through code. Since doing this, I have found getting to know large software projects' code easier, as knowing the appropriate place to make even a simple patch is very important.
F: Feeling fineEdit
- 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 - I have used these briefly
- Mercurial or other source code management systems - I have not used Mercurial, but I regularly use git and svn.
- Mediawiki or other wiki software - little experience - I have edited a wiki page on NAS central...
- make, gcc, gdb or other development tools - Familiar with make, gcc, gdb, valgrind, etc.
- What will make you actively stay in our community after this GSoC is over? General interest - once involved, I'd like to help out in my spare time!
O: Only out of interestEdit
- Did you ever hear about Octave before? Yes!
- If so, when and where? How far have you been involved already? I have used Octave as an open source replacement for MATLAB during my time at university.
- What was the first question concerning Octave you could not find an answer to rather quickly? I couldn't immediately find the ideas list from the main page. It wasn't a problem really, I just went to the SOCIS page and clicked on the relevant link.
P: PrerequisitesEdit
- I have full access to Linux and Windows machines.
- Please estimate an average time per day you will be able to (if separated) access
- an internet connection - all day!
- a computer - almost all day
- a computer with your progressing work on - almost all day
- I can install new software on any of the machines I will be working on.
S: Self-assessmentEdit
- Please describe how useful criticism looks from your point of view as committing student.#
Criticism is very useful, it helps catch bugs and improve the quality of the software. Even simple code style advice is good, keeping new code in line with the existing code.
- How autonomous are you when developing?
I am reasonably autonomous when developing. Most of my previous contributions to open source projects have been developed without guidance and then submitted. Feedback has been received and acted upon and the process repeated. I tend to think about the task and come up with a solution on paper and then start to code it up. With a mentor, I can see that this process may well be improved by running ideas past them first to avoid going down dead ends.
Y: Your taskEdit
I have chosen the "Incomplete sparse factorizations ichol, ilu" task - http://wiki.octave.org/Summer_of_Code_Project_Ideas#Incomplete_sparse_factorizations_ichol.2C_ilu
- 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.
I would like to take a week or two to familiarise myself with the existing Octave sparse matrix code and related theory, discussing with the mentor where new C++ code should be put in the source tree. Then I would spend a several weeks understanding the algorithm (using books and the existing code previously posted for guidance) to be implemented and how it needs to be modified to use Octaves sparse representation. Finally, I would then start to implement the required code.
Personal commitments include a week long trip to a conference in September and continuing work on my PhD thesis.