User:Daniel: Difference between revisions

Jump to navigation Jump to search
4,957 bytes added ,  27 March 2015
no edit summary
(Created page with "== A: An introduction == * Please describe yourself in three sentences, one of them regarding your current studies. ** Which languages do you speak? ** What's your overall bac...")
 
No edit summary
Line 1: Line 1:
== A: An introduction ==
== Introduction ==
* Please describe yourself in three sentences, one of them regarding your current studies.
** Which languages do you speak?
** What's your overall background? ''The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...''
* 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. ''Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!''
* Why are you choosing Octave?


== C: Contact ==
I speak Chinese and English.
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. ''We really want unique nicks. You might want to bold it.''
I have 12 year experience using Linux as desktop and I have seven-year experience of image processing and analysis in biomedical area, specifically writing custimized scripts with Octave/Matlab, ImageJ plugins in Java and macro scripting to process and analyze super-resolution images.
* Which time zone do you live in? Will that change over GSoC duration? ''Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.''
Currently, I am a PhD student at New York University studying molecular topology network prediction using graph theory, primarily programming in C++ on Unix/Linux.
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? ''Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)''


== E: Coding experience ==
== Why GSoC? Why Octave? ==
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 ;-)
I have known about GSoC program since 2010 or 2011 from the maintainer/help mailing list. Initially in 2007 for image processing purposes, when I was searching Matlab alternatives for Linux system, I found Octave, so I started to subscribe Octave mailing lists started reading the contributor communication seeing passionate and serious discussion, hoping someday I also have an @octave.org email account. Until one day, I found people discussing topics regarding GSoC, four or five years ago. So I have been having this idea of contributing to the Octave community for a long time.
* 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. ''Do you have experience working with open source or free projects?''
* 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. ''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.''


== F: Feeling fine ==
Contributing to open-source is a great way to improve myself, and has always been my plan to get to know how the work in real life is done. Participating Google Summer Code is going to enable me get an in-dept understanding of Google's spirit and culture. Work and communication with other software engineers and scientific computing scientist in the open-source community in an coorperative way will allow me grow up fast.
* 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
** 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? ''You can also tell us after applications close and we'll happily try to fulfill :-)''


== O: Only out of interest ==
It will be an exciting and fruitful experience for me to code throught the summer, with the purpose also directly realted to my own research. My peer-review publication manuscripts will include much image processing/analysis, which will employ modules reated to Octave Image packages and topics about Image IO. Therefore, the GSoC project will directly benefit my research project and this motivate myself highly.
* 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? ''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, …''


== P: Prerequisites ==
I chose Octave because it is Octave introduced me to open source community; to let me see how a particular open-source community grow and evolve; how Octave gets more and more powerful, over the last eight yeaers.
* 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.


== S: Self-assessment ==
== Contact ==
 
'''E-mail Addres'''s: daniel27183@gmail.com
 
'''IRC Handle''': '''dl11159'''
 
'''Location''': New York, New York, USA
 
'''Time zone''':  UTC-5
 
I usually code around 6.30 to 14.30 (UTC-5), i.e., 1.30 to 9.30 (UTC+0), and could also try to adjust to a different time slot upon discussion. The above information is effective during GSoC.
 
I can devote 40 hours per week and more if necessary. My PhD graduation will be in 2018.
 
== Coding experience ==
I took C++ programming course during my undergrad and now I code in C++ on a daily basis for my PhD thesis project.
I started using Octave in 2007 for image processing/analysis. Later on I started using it for any general processing/analyzing/computing/ploting purposes. I also used it for my Scientific Computing course in graduate school.
I followed online tutorial C++ OpenGL programming, eventually made a single user game.
I do not have experience with Qt, only installed it on my computer three years ago to see how it looks.
 
I worked in a development team during an business competition during undergrad. I was responsible for the database design and implementation.
 
My current PhD thesis work is the my biggest project so far. It's writtn in C++. I got to learn to get source code organized and its design pattern, even just the documentations plays very important role in maintaince and debugging efficicy.
 
Other related courses I took include Fundamental Algorithm, C programming, Java programming, Computer Nextwork, Database Management, and Big Data Programming (Hadoop ecosystem).
 
"""Progress of Commits and patches""": Not yet. I have been playing with imtranslate and imadjust. As we know imtranslate.m in Octave image package implemented the translation using Fourier interpolation for 2D images only, differing from or incompatible with the MatLab version.
 
I changed my computer lately for some reason, and there was only Matlab 2009 installed on the Mac OS, cannot run imtranslate. Yesterday I found I could access the Matlab 2014 version from the cluster of my universty, so I just got a chance to test it this morning.
 
I was trying to install the image package on Octave 4.0.0, found out the one of the dependency package --- control package has yet to work on Octave 4.0.0. So I may have to use 3.8.2 to test it and start implementing the imtranslate possessing both 2D and 3D processing capability and being compatible with Matlab.
 
I consider this a very basic exercise to warm me up before the dive into my real work on Image IO GNU/Octave GSoC 2015 project.
 
==== Experience with Open-Source Software/GNU products ====
I am an aficionado of any OSS.
 
I started using Linux twelve years ago. My desktop evolves from Redhat, Federo, Gentoo, Ubuntu, Archlinux, Mint, until now I have two laptops, one is for normal work on Ubuntu, the other has Archlinux just for fun.
 
I am familiar with most of the popular utilies/tools on Unix/Linux, including gcc, gdb, make, bash, perl, sed, awk, grep, cut, tr, ed, ldd, vim, ctag, tmux, screen....I have some experience with SDL, OpenCV and OpenGL.
 
Previoulsy, I played with them just for fun, so I never publically post anything, until I started thinking I could also be the one to produce some fun stuff.
 
== Feeling fine ==
I am feeling fine with all (IRC, mailing lists, source management systems, make, gdb, gcc) except I dit not know Mediawiki or other wiki software.
I have been studying in the list for many years, checking the mailing list everyday is a hobby of mine already. I will contribute more after the GSoC towards obtaining an octave.org domain email. That's my plan.
 
== Prerequisites ==
I can work 40 hours per week during GSoC.
I have access to Mac OS high performance powerstation at my lab.
I have access to Linux on the univesity cluster.
I have access to Windows on my laptop
I have access to Linux on My labtop.
 
I do not think it would be an issue even though I do not have administrator privileges over the Linux cluster/MacOS. Wouldn't --prefix be enough?
 
== Self-assessment ==
* Please describe how useful criticism looks from your point of view as committing student.
* Please describe how useful criticism looks from your point of view as committing student.
It is critically important, that's one of the reason I want to join Octave commnity.
* How autonomous are you when developing? ''If you answer both subquestions with "Yes, definitely", we are a tad confused. ;-)''
* How autonomous are you when developing? ''If you answer both subquestions with "Yes, definitely", we are a tad confused. ;-)''
I have to say I am very self-motivated. But I need guidance to avoid unnecessary mistakes.
** Do you like to discuss changes intensively and not start coding until you know what you want to do?
** Do you like to discuss changes intensively and not start coding until you know what you want to do?
Yes, I tend to gather enough information. Sometimes, more than enought.
** 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?
** 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?
Yes. But I think it is not about like or not, it has to be in the workflow, not to mention that I am learning.
== Project Description: ==
==== Improve Octave's image IO ====
I chose this project from the wiki <http://wiki.octave.org/Summer_of_Code_Project_Ideas>
In scientific research at large, there are many data recorded in the form of image; there exist many varities of image format. Presently, Octave uses GraphicsMagic (GM), a library capable of handling many of them in one single C++ interface. Nevertheless, GM still has its limitations including:
1. GM has build option quantum defineing the bitdepth to use when reading an image makes difficult to find an balance between accessable depth of image and memory usage, implying it needs extra care to rescale the image.
2. "GM supports unsigned integers only thus incorrectly reading files such as TIFF with floating point data
GM hides away details of the image such as whether the image file is indexed. This makes it hard to access the real data stored on file"
"This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first."
(zz from http://wiki.octave.org/Summer_of_Code_Project_Ideas)
== Detail Project Timeline ==
Community bonding period
    Getting familiar with the image package and octave packaing system and related octave/C++ source codes.
    Interaction with mentors and the community members when necessary
1st week (05/25 - 05/30)
        Determine the image format and make priority queue of the tasks.
        Fully communicating with mentors to figure out the feasibilities of different possibilities about listings of image formats in prority order and candidate C++ libraries to reference from. Study them briefly and start studing the target one(s).
2nd week (06/01/- 06/07)
        "Implement the Tiff class which is a wrap around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions." based on what I learn and continue learning.
3rd week (06/08-06/14)
        "improve imread, imwrite, and imfinfo for tiff files using the newly created Tiff class"
4th week (06/15- 06/21)
        "port the bioformats into Octave and prepare a package for it"
5th week (06/22 - 07/06)
        "investigate other image IO libraries"
Mid-Term Evaluation
        Load images of differnt formats and depths to test.
7th week (07/06 - 07/12)
        "clean up and finish the dicom package to include into Octave core"
8th week (07/13 - 07/19)
        "prepare a matlab compatible implementation of the FITS package for inclusion in Octave core"
9-10th week (07/20 - 08/02)
        Upon progress, flexible and add test modules for all previous work, fix bugs, make big changes and utilize new ideas if necessary
11th and 12th week(08/03 -08/16)
        Review and documentation.
== Other Commitments ==
Seeing PT for recovery from a recent leg bone fracture, cannot do anything except GSoC.


== 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. ''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.''
[[Category: Summer of Code]]
[[Category: Summer of Code]]
Anonymous user

Navigation menu