Public application template
A: An introduction
- Please describe yourself in three sentences, one of them regarding your current studies.
My name is Brayan Stiven Zapata Impatá and I am a native Spanish speaker, but I am also proficient in English. I am currently a PhD student in robotics and machine learning at University of Alicante, Spain. My background includes a Bachelor's degree in Computer Engineering, specialized in computer vision and artificial intelligence, and a Master's degree in Computer Engineering.
- Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
My desire in taking part of the GSoC is driven mainly by a need of developing further my programming skills as well as working on a real open project. I have been working on many private researches and, although research is carried out with the idea of helping grow our society, it is usually very jealous of sharing. This is my first time participating at GSoC but I hope to learn a lot from it!
- Why are you choosing Octave?
On my very first day at college when I began the journey to get my Bachelor's degree, what I was firstly introduce to was Octave. Some time has passed but I still find the Octave project a quite useful resource, I did even use it for my Bachelor's thesis. Since I feel in debt with this tool and its community I want to give it some of my time and knowledge in return.
- Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
My IRC nickname is yayan and my e-mail address is firstname.lastname@example.org
- Which time zone do you live in? Will that change over GSoC duration?
My time zone is UTC+1 and it will not change during GSoC.
- Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
Being sincere, since I am currently on a PhD program my work load is very unstable. However, I plan to work on GSoC from 07:00 to 10:00 and 17:00 to 21:00 during the weekdays. Anyway, I am very flexible and surely the excitement of working on this will lead to many more hours even on weekends. I've been working in a private company and at the same time carrying my Master studies through a year and a half so I am quite good at managing my time.
E: Coding experience
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 have been coding in C/C++ since I was in high school and I keep writing C++ code every day. As an example, during the last term of my Bachelor's degree I developed a machine learning toolkit paring with some of my classmates. I was in charge of writing the implementation of Support Vector Machine and three kernels, a Genetic Algorithm with some self-created mutation operators, the k-Means clustering algorithm and a cross-validation method. Then, I used this toolkit to create a broker bot that could predict movements in the stock market.
Regarding Octave/Matlab, as I said before I have been using m-scripts for 6 years now and my Bachelor's thesis was written solely in this tool. This principally consisted on writing preprocessing functions for treating medical signals and then implementing the Particle Swarm Optimization algorithm to optimise the training set used for a machine learning model. I have also used it to execute simple filters over images. Nowadays I keep using it as a prototyping environment. Finally, I once took a 4-hours-course at college to learn about OpenGL but I don't have further experience with it nor Qt.
- Please describe your experience with other programming languages.
I have experience working with Python 2.7.6. For my Master's thesis I created an open tool for open research data reutilisation and the scripting was whole written in Python. These scripts mainly used libraries like matplotlib, numpy and pandas. In addition to that, Tensorflow was utilised through its Python API so I could implement a simple logistic regression model. As a side project, just for the sake of learning, I once used Python and Keras (over Tensorflow) for building a cat/dog images classifier training a Convolutional Neural Network.
I do also have experience with Java, although I don't use it frequently. The same could be said about Scala, Go, R and FORTRAN that have used sporadically.
- Please describe your experience with being in a development team.
In the Open Source community I am new. I have experience working on a company (one year and a half) where we tried to follow the SCRUM agile methodology so I got some fluency in the use of GIT and building/packaging processes. I feel very comfortable working with others.
- 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.
I think the biggest project I have worked on was that Machine Learning toolkit I built with four other colleagues in the last term of my Bachelor's degree. As I wrote before, I was in charge of implementing and testing of several algorithms like SVM (linear, Gaussian and Sigmoid kernels), k-Means, GA and cross-validation. I learnt a lot about software development practices and I did also have a first contact with great libraries like boost.
- Please state the commits and patches you already contributed to Octave.
Up to this moment I have been only helping other in the IRC channel with general Octave questions. I plan to start contributing very soon but I am still deciding whether to contribute to the Image package with missing Matlab functions or try to revive the nnet unmaintained package.
F: Feeling fine
- 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
- 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, …
- 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 access
- an internet connection
- a computer
- a computer with your progressing work on
- Please describe the degree to which you can install new software on computers you have access to.
- 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?
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"). If possible, include two or three milestones you expect.