From Octave
Jump to navigation Jump to search

GSoC 2013 - Application

A: An introduction

  • Please describe yourself in three sentences, one of them regarding your current studies.
I am LYH, studying Computer Sciense and Information Management. I am also a technical enthusiast. My interest includes compiler, run time system and operating system.
  • Which languages do you speak?
  1. Mandarin (native)
  2. English
  • What's your overall background?
Computer Sciense and Information Technology
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
I am a technical enthusiast and has used serveral opern source project in my research. So I want to contribute to open source organization via participating GSoC. In addition cooperating with open source group, I hope to gain experience with Octave IR, JITC internal and JIT optimizations (trace/method-based compilation … etc).
  • Please also describe your previous experience with the GSoC.
I have applied GSoC last year so I am familiar with how this program goes.
  • Why are you choosing Octave?
I have noticed that Jordi Gutiérrez Hermoso post an idea related to JIT compiling on GSoC discuss group. Since I have some experience using LLVM JIT to improve runtime system performance. I want to improve Octave JITC and further make it my research thesis.

C: Contact

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
My nickname is LYH.
  • Which time zone do you live in? Will that change over GSoC duration?
My time zone is UTC+8 during the whole GSoC.
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
I usually code around 9:00 to 18:00 and could also try end later (~20:00) for need.

E: Coding experience

  • Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
I have been programming in C/C++ for six years. When I was a freshman, I got the highest score in my C++ programing class. My technical experience comes from not only studies but also projects. Here are the C/C++ projects I finished before:
  1. Instant Manager - Use C, POSIX Threads, BSD Socket and GTK+ to construct a server and a client. The project ranked first in Computer Networks class
  2. VNC (Virtual Network Computing) on EFI (Extensible Firmware Interface) - Under bios development environment, I Implement full VNC client on EFI.
On the other hand. I have taken a numeraical methods course before. I use Matlab to implement algorithm about solving one variable equations, interpolation and polynomial approxiamation, numerical differentiation and intergratation … etc. Matlab m-scripts is not new to me.
  • Please describe your experience with other programming languages.
I have a lot of experience in Java, a large part of my contribution to Scilab was made in the language, in addition, I also developed some applications for small and medium size. I also have extensive experience in web development, especially with PHP, HTML, CSS and SQL. I did a lot of modifications on the shareware platform Vbulletin (PHP + MySQL). //
  • Please describe your experience with being in a development team.
I developed some jobs to automation robots, applying some genetic algorithms. These works have been developed in a team of 6 developers in laboratory automation at my university, we met in the lab three times a week and we communicated by IRC, managing code with GIT. Most parts of the development in Scilab also required group work, for this I used mailing lists and IRC. //
  • 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.
My biggest project is “VNC (VirtualNetwork Computing) on EFI (Extensible Firmware Interface)”. We can remote control the other computer without entering OS. As far as I know, there is no one do the project I did. So I have met many problems and there is no relevant information on web. I use background knowledge about BIOS and System Software to solve these issues by myself. I learned not only EFI skill but also the ability to find the solution of problems during the project.

F: Feeling fine

  • Please describe (in short) your experience with the following tools:
  • IRC and mailing lists
I have used IRC and mailing lists for several years. In fact, I have talked with Octave mentor about my project on IRC.
  • Mercurial or other source code management systems
I usually use Git and Subversion. But I think it may not too dificult to migrate to Mercurial. And I have use hg to format my patch submitted to Octave.
  • Mediawiki or other wiki software
None before. But I use it during post this proposal :)
  • make, gcc, gdb or other development tools
I use make to automate build process, gcc to compile and gdb to debug almost erery day. Besides this development tool. I also used Cmake for cross platform build system, clang/LLVM to compile. Learning new development tools is not hard to me.
  • What will make you actively stay in our community after this GSoC is over?
In fact, a summer is too short to implement all my idea. I would need to continue contributing to complete all my goal. On the other hand, The project I proposed has highly relationship with my professional (LLVM, compiler). So I am willing to join Octave JIT project constantly.

O: Only out of interest

  • Did you ever hear about Octave before?
    • If so, when and where? How far have you been involved already?
Yes, I do noticed Octave when I use property Matlab in my school last year.
    • What was the first question concerning Octave you could not find an answer to rather quickly?
The build process. I do not know that I need run ./bootstrap first until I read etc/HACKING. Because I usually run autoregen and configure directly.

P: 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.
Usually Linux. But I could work with Mac OSX and Windows if I need to test on variant platform.
  • Please estimate an average time per day you will be able to (if separated) access
    • an internet connection
Disconnect when I sleep.
    • a computer
All the time.
    • a computer with your progressing work on
More than 40 hours per week.
  • Please describe the degree up to which you can install new software on computers you have access to.
I have my own macbook. So I could install all softwares if I need.

S: Self-assessment

  • Please describe how useful criticism looks from your point of view as committing student.
Criticisms are essential in group work, because people are able to share knowledge, and can bring improvements to the development process. //
  • 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?
I like to dicuss direction first and reinterpret in my words. Then ask others whether I understand well. And I would start to write small program to prove my concept. If the work doesn’t match the goal, I would thrown it away early rather then coding for thousands of code and hard to debug.

Y: 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.
According to what I had discussed in previous questions, I am really very interested in developing new GUI tools for working with graphics and assist in finalizing the GUI Octave.
To develop a graphics editor (interactive), we need the objects to be recognized with just one click. Therefore, I propose to work in this first part, so that the tools are more powerful. Unless these tasks are performed by one more student, in this case, we could divide them to have more time in the development of new tools.
  1. Finish the Octave GUI [1]
  2. Implement a Qt widget for manipulating plots [2]
  3. Lighting [3]
  4. Object selection in OpenGL renderer [4]

  • 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 have a lot of time available, so I can easily work for at least 40 hours per week and eventually on weekends, always aiming at the completion of my tasks. I take responsibility and commitment never to abandon the project. In this kind of project, it is hard to predict in detail the planning because many things mutate over time.
At this time I want to talk to my mentor about the project to try to argue about new proposals and ideas that try to absorb and improve other existing projects, thinking about my strategies to work faster. In addition to performing more tests on some functions.
I'm looking to contribute in some way in bug list and other requests from the Octave team and I can do it intensely during this period.
Seeing things that have already been made, make small changes and fixes. Working in visual selection of individual points and curves.
Working in the individual surfaces.
An insight into a graphics editor for manipulating plots.
Mid-term evaluations deadline
Development of tools for manipulating plots.
Improving the tools that are in progress and integrates them with the tools that I developed.
“Pencils down” date. Leave everything well documented for final evaluation. (review the work, run tests and correct any bug)
Preparing sample codes to submit to Google, discussing them with my mentor and Scilab community.