From Octave
Jump to navigation Jump to search

My GSoC application.

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.
    • Which languages do you speak?
    • What's your overall background?
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
    • Please also describe your previous experience with the GSoC, if any.
  • Why are you choosing Octave?

My name is Andrej Lojdl. I love programming, mathematics, and electronics, as well as any combination of these. I’m a first year student working towards a Bachelor degree in Computer Science at the Faculty of Technical Sciences in Novi Sad, Serbia. I speak Slovak (primary), Serbian and English.

Beside my regular course work consisting mostly of math this year, I’ve read most of the SICP book from MIT, I’ve been reading about Python, and I’ve been introduced to VCS with Git and unit testing by a friend from the industry. Before college I’ve been working on a few projects. My first project was “Signature segmentation and replication”, where I was scanning signatures and then segmenting them, using Matlab. Segmentation consisted of detecting nodes and arranging them in a sequence that matched the sequence of writing. My second project was “SPH Fluid Simulation”, where I was trying to replicate the behaviour of incompressible fluids. Code was transferred from C (and OpenGL), to C# (and XNA framework) and finally to Processing. There was some flaw in the mathematical model and I was trying to get around it. These two projects were part of my work in the Petnica Science Center. As a final project in high school I wrote Sudoku solver/generator.

By participating in Google Summer of Code program, I hope to learn something new, gain more real world experience and spend the summer flipping bits, not burgers. The philosophy of sharing aligns well with my own values. I hope to get a better idea how it is to work in software engineering and how open source communities work, and how can I as an individual participate in the community.

This is the first year I’m trying to participate in GSoC. I’m choosing the Octave project because I have been using it for some course work, and because it has helped me alot with some online learning courses, like machine learning on Coursera.

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
  • Which time zone do you live in? Will that change over GSoC duration?
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?

Lojdl_ is my nickname on IRC. I live in UTC/GMT +1 timezone (current time zone offset is 2h). I’m most comfortable to work from 9AM to 5PM (+/- 1h), but I’m flexible.

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.
  • Please describe your experience with other programming languages.
  • Please describe your experience with being in a development team.
  • 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 state the commits and patches you already contributed to Octave.

I’ve been using Matlab, C, Processing and C# for projects. C was the first language I learned and I’m using it for a quiet time now (4 years). On a couple of occasions I used Octave, PHP, HTML/CSS and JavaScript, but I’m not skillful in these languages. In the second/current semester we have a course on assembly, we’re working with the x86 architecture. I have been experimenting with Python lately. I don’t have any experience with Open Source, and I have not made any commits to Octave yet.

F: Feeling fine[edit]

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists
    • Mercurial or other source code management systems
    • Mediawiki or other wiki software
    • make, gcc, gdb or other development tools
  • What will make you actively stay in our community after this GSoC is over?

I started using mailing lists about month ago, and I’m comfortable using them. And I started using IRC with the beginning of GSoC student application period. I have not used wiki except for Wikipedia. We are using gcc and ddd in programing courses.

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

I used Octave in online learning courses. Octave has quite a good database of tutorials and books on wide space of internet so I didn’t have any problems when I was using it.

P: Prerequisites[edit]

  • 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.
  • 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
  • Please describe the degree up to which you can install new software on computers you have access to.

I have my own laptop, where I’m dual booting Ubuntu 12.10 and Windows 7. I have broadband internet access at home 24/7. I’m the only user of my laptop, so I don’t have any limits for installing software.

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.
  • 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 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?

My opinion is that criticism is good, because it can give you information about progress and quality of your work. But only constructive criticism, because uninformative criticism can kill my will to work. I’ve good experience with mentors and I love regular feedback, because I think it’s the backbone of every successful project. I can work on something for two-three days, without contacting mentor. In Petnica I was getting feedback every two days, and this suited me well. More than four days is sometimes too much time without supervision. I like discussing projects intensively but with a limit. After some time I lose focus of discussion and all what has been discussed won’t be implemented in code, so it’s like talking about the problem instead of trying to fix it. Giving up on some part of code, and just starting over again is something what I’m used too. We were doing that often during the “SPH Fluid Simulation” project in Petnica.

Y: Your task[edit]

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

I’m choosing to add TeX/LaTeX markup to text objects in OpenGL plots as my project for this year of GSoC. I would like to build my solution based on the approach used by a similar effort in the matplotlib community:

The solution will first extract the LaTeX formatting from the code, create a TEX file, which will be then converted to a DVI file using the LaTeX system. Then using dvipng the DVI file will be converted to a PNG file, and ‘pasted’ onto the OpenGL rendered graph.

Rough estimated timeline for my work:

Week 0 - (28.05 ÷ 16.06) - Preparation
During the period before coding (where students get to know mentors), I will read source, fix a few bugs, and prepare all things necessary for this project.
Week 1 - (17.06 ÷ 23.06) - Prepare for cooperation/work
Discussing ideas and possible solutions with my mentor. How often and by which means will we communicate. Create a repository if necessary, set up everything needed, and start coding.
Week 2 - (24.06 ÷ 30.06) - Extracting LaTeX formatting of title and wasp labels
Develop the extraction code for LaTeX formatting from the M-file, which will extract formatting of title and wasp labels from source code. And then transform it to TEX file for further usage.
Week 3/4 - (1.07 ÷ 14.07) - Connecting our system with LaTeX generator
Connecting given system with LaTeX generator to generate the labels. We need to make sure that after extraction, LaTeX generator is run. And that it will produce DVI file for conversion to image file.
Week 5 - (15.07 ÷ 21.07) - Rendering graphs
The DVI file should be converted to PNG image via dvipng part of LaTeX generator. Implement formating of titles and wasp labels directly to OpenGL.
Week 6 - (22.07 ÷ 27.07) - Testing
The aim of this week will be to test the solution, find bugs and fix them, refactoring and revision of the solution layout/architecture. Make sure that all possible LaTeX formatting tags work correctly, with OpenGL rendering.
Mid/term evaluation - (29.07 ÷ 1.08)
Week 7/8 - (2.08 ÷ 18.08) - Position extraction
At this point, the system should be functional. So next part will be to extract the position of the text (formulas and legends) from source code. This information is needed to properly place the PNG image on the final image (graph).
Week 9/10 - (19.07 ÷ 1.09) - Size extraction
The main problem with converting LaTeX formatted text to PNG image will be with size. Size of the text and size of rendered graph have to be kept in sync - font size must be corrected according to size of image (rendered graph).
Week 11 - (2.09 ÷ 8.09) - Configuration
So far we would have everything we need for OpenGL rendering with LaTeX formatting. However, it would be useful to have some way of adding default LaTeX formatting for text, which would be applied to every text rendered via LaTeX. So this part will be about making that possible.
Week 12 - (9.09 ÷ 16.09) - Clean up
As recommended, I will use the last week for writing documentation, polishing code, adding comments and testing.