User:Castarco: Difference between revisions

From Octave
Jump to navigation Jump to search
(Incomplete application.)
 
No edit summary
Line 11: Line 11:


== E: Coding experience ==
== E: Coding experience ==
* I have experience with C, C++11
* I "know" Octave since I started to learn about ML two years ago, I've jumped between Octave and R to experiment with problems of this knowledge area, Since a few months ago I'm already working with Matlab because it's a requirement for the subjects I'm studying at my university course (robotics, and computer vision).
* I have experience with C and C++11, but mainly for toy projects and university homework. I've also have experience with OpenMP (but not with GPU parallellization). I'm used to make and cmake, but autotools isn't strange to me.
* I've developed classroom projects with Qt4 and OpenGL, but nothing at professional level.
* Almost all my professional experience is related with Python, PHP, Java and C# since four years ago. I've developed tens of thousands code lines with them. I know their main package management systems (PIP, Composer, Maven & Gradle, and NuGet), and I think this experience is useful to contribute to the package management system of Octave.


* Currently I haven't contributed any patch to Octave, but I hope to do it early, luckily before April's 30th.


TODO , incomplete application.
=== The biggest project ===
The biggest project I worked on is '''Infantium''', a spanish startup aiming to apply machine learning techniques to children's learning process modelling in order to improve and optimize it, helping them to learn more and faster. The idea was to analyse their gaming sessions (with educative games) in order to compute cognitive indicators (numerical coefficients, designed to associate "bigger" to "better") and trying to maximize them. The "problem" isn't one single problem, but many difficult interrelated problems (designing models, guessing models parameters, validating the models, maximizing children's coefficients, dealing with "inflation" and "deflation" problems associated to children scores, designing experiments, making temporal series predictions...).  


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 ;-)
This is an interesting project and idea, but we didn't work in a rational way. Sadly, we hadn't psychologists nor neurologists in our team , and our bosses denied the needed resources to experiment and obtain information to validate or refute the models, and to adjust their parameters. They expected magic from their workers: parameterless perfect models (without having experts in the field), or guessing the parameters from divine inspiration. We were three non-expert workers, and many serious companies have more (and more skilled) workers for much more humble projects.
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
 
* Please describe your experience with other programming languages.
I was working in the Data Science team, and I lead it until a more experienced engineer entered into the company. This project made me return to the university. I had to work in very hard problems, but I only solved a few ones. In any case, I've learned a lot of time series analysis, ranking and rating models and artificial deep neural networks.
* 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.
=== Other not so crazy projects ===
* 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.''
 
My first programmer job was at Bananity (we were programming with PHP, it was another "online social network"), also a spanish startup. Firstly I was frontend developer, and then I jumped to backend development. My first tasks were bugfixing and code style fixing, later I started to work on improving the software's architecture, performance, and security. I also did a DB migration, I had to develop many integrity checking scripts and data transformation scripts. After that, we started working with Vert.x to create a new fast and scalable API.
 
My last 6 months in the company (I stayed there for 14 months) I started working together with the lead data scientist of the company. With him I started working on very simple NLP problems related with DBPedia (we extracted information from DBPedia because our social network was thought to allow people to tell what they love and what they hate, and DBPedia helped us to create those "things" in a simple way).
 
My last project in the company was a short-texts indexer (using MongoDB as storage system, and JBoss as application server). We could have used Sphinx or Solr, but we thought it was more interesting to develop our software (it's open source, is called Platano Indexer). The design (& implementation) of Platano Indexer is far from being perfect, but I've learned a lot doing it and implementing it.


== F: Feeling fine ==
== 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 : I'm very familiarized with mailing lists. Sometimes I use IRC, but less than mailing lists.
** IRC and mailing lists
** Mercurial or other source code management systems : I'm very familiarized with GIT and many of it's not-so-well-known features. I've also used Mercurial, but I'm not so familiar with it.
** Mercurial or other source code management systems
** Mediawiki or other wiki software : I'm used to use wikis for professional usage, but also when I edit Wikipedia articles.
** Mediawiki or other wiki software
** make, gcc, gdb or other development tools : When I program with C or C++ I usually use make or cmake, and GCC as compiler. I'm not very familiar with GDB, I usually find the bugs without having to touch it. I've also use valgrind sometimes to find memory leaks.
** 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 :-)''
* What will make you actively stay in our community after this GSoC is over? Well, I think having the sensation that my work is worth, that I'm helping people. Working for startups that only care of trends and don't solve people's real problems isn't for me. I need to solve real problems.


== O: Only out of interest ==
== O: Only out of interest ==
* Did you ever hear about Octave before?  
* Did you ever hear about Octave before? Yes.
** If so, when and where? How far have you been involved already?
** When and where? How far have you been involved already? I discovered Octave many years ago, I can't say when exactly, but probably when I started learning ML, or a few months before.
** 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? When I was trying to parallelize the Zhang-Suen thinning algorithm, and I spent a lot of time to discover how to apply a function to each element of a matrix, but taking into account its neighbourhood. Finally I discovered the colfilt method ^^U.
* 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 ==
== P: Prerequisites ==
* Please state the operating system you work with.
* I work with Ubuntu, usually the LTS versions. I also have access to Windows 7, Windows 8.1 and Mac OS X Yosemite, but using virtualization.
** If you have access to more than one, please state them and the conditions under which you are granted this access.
* I have access to Internet whenever I need it, and I also have "emergency solutions" (3G, friends connections, family connections, or a nearby library with Internet connection).
* Please estimate an average time per day you will be able to ''(if separated)'' access
* I have access to my PC whenever I need it, I have one PC and one laptop, and I also have "emergency solutions".
** 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 ==
== S: Self-assessment ==

Revision as of 16:17, 20 April 2015

A: An introduction

  • I'm a student of Informatics Engineering degree in the `Universitat Politècnica de Catalunya` university. Many years ago I started a double degree on mathematics and computer science, but I've paused it to start working on the web development industry, then I specialized on software architecture and after that, on machine learning. Now I'm "finishing" my studies.
  • I speak spanish, catalan and english.
  • I want to participate in the SOCIS because I like programming open source software, but usually I can't devote enough time because all my previous jobs were on privative software. Almost all my open source code is inside toy projects because the remaining time I have isn't enough to make serious contributions. Additionally, I'm studying robotics and computer vision, and my teachers are fanatics of Matlab. I don't like depending on privative software for studying projects, because learning something should be economically affordable for everyone.

C: Contact

  • I always use the `castarco` nick wherever I am.
  • I'm the the Europe/Madrid timezone (UTC+2). I'll live in Barcelona this summer. In summer time I like to code from 08:00-14:00 and then from 15:00 to 17:00, but if I get up late for some reason, probably I'll be coding from 9:00 to 18:00 (with the same midday pause as in the usual case). If one day I haven't nothing more interesting to do, then probably I'll work more hours on the project.

E: Coding experience

  • I "know" Octave since I started to learn about ML two years ago, I've jumped between Octave and R to experiment with problems of this knowledge area, Since a few months ago I'm already working with Matlab because it's a requirement for the subjects I'm studying at my university course (robotics, and computer vision).
  • I have experience with C and C++11, but mainly for toy projects and university homework. I've also have experience with OpenMP (but not with GPU parallellization). I'm used to make and cmake, but autotools isn't strange to me.
  • I've developed classroom projects with Qt4 and OpenGL, but nothing at professional level.
  • Almost all my professional experience is related with Python, PHP, Java and C# since four years ago. I've developed tens of thousands code lines with them. I know their main package management systems (PIP, Composer, Maven & Gradle, and NuGet), and I think this experience is useful to contribute to the package management system of Octave.
  • Currently I haven't contributed any patch to Octave, but I hope to do it early, luckily before April's 30th.

The biggest project

The biggest project I worked on is Infantium, a spanish startup aiming to apply machine learning techniques to children's learning process modelling in order to improve and optimize it, helping them to learn more and faster. The idea was to analyse their gaming sessions (with educative games) in order to compute cognitive indicators (numerical coefficients, designed to associate "bigger" to "better") and trying to maximize them. The "problem" isn't one single problem, but many difficult interrelated problems (designing models, guessing models parameters, validating the models, maximizing children's coefficients, dealing with "inflation" and "deflation" problems associated to children scores, designing experiments, making temporal series predictions...).

This is an interesting project and idea, but we didn't work in a rational way. Sadly, we hadn't psychologists nor neurologists in our team , and our bosses denied the needed resources to experiment and obtain information to validate or refute the models, and to adjust their parameters. They expected magic from their workers: parameterless perfect models (without having experts in the field), or guessing the parameters from divine inspiration. We were three non-expert workers, and many serious companies have more (and more skilled) workers for much more humble projects.

I was working in the Data Science team, and I lead it until a more experienced engineer entered into the company. This project made me return to the university. I had to work in very hard problems, but I only solved a few ones. In any case, I've learned a lot of time series analysis, ranking and rating models and artificial deep neural networks.

Other not so crazy projects

My first programmer job was at Bananity (we were programming with PHP, it was another "online social network"), also a spanish startup. Firstly I was frontend developer, and then I jumped to backend development. My first tasks were bugfixing and code style fixing, later I started to work on improving the software's architecture, performance, and security. I also did a DB migration, I had to develop many integrity checking scripts and data transformation scripts. After that, we started working with Vert.x to create a new fast and scalable API.

My last 6 months in the company (I stayed there for 14 months) I started working together with the lead data scientist of the company. With him I started working on very simple NLP problems related with DBPedia (we extracted information from DBPedia because our social network was thought to allow people to tell what they love and what they hate, and DBPedia helped us to create those "things" in a simple way).

My last project in the company was a short-texts indexer (using MongoDB as storage system, and JBoss as application server). We could have used Sphinx or Solr, but we thought it was more interesting to develop our software (it's open source, is called Platano Indexer). The design (& implementation) of Platano Indexer is far from being perfect, but I've learned a lot doing it and implementing it.

F: Feeling fine

    • IRC and mailing lists : I'm very familiarized with mailing lists. Sometimes I use IRC, but less than mailing lists.
    • Mercurial or other source code management systems : I'm very familiarized with GIT and many of it's not-so-well-known features. I've also used Mercurial, but I'm not so familiar with it.
    • Mediawiki or other wiki software : I'm used to use wikis for professional usage, but also when I edit Wikipedia articles.
    • make, gcc, gdb or other development tools : When I program with C or C++ I usually use make or cmake, and GCC as compiler. I'm not very familiar with GDB, I usually find the bugs without having to touch it. I've also use valgrind sometimes to find memory leaks.
  • What will make you actively stay in our community after this GSoC is over? Well, I think having the sensation that my work is worth, that I'm helping people. Working for startups that only care of trends and don't solve people's real problems isn't for me. I need to solve real problems.

O: Only out of interest

  • Did you ever hear about Octave before? Yes.
    • When and where? How far have you been involved already? I discovered Octave many years ago, I can't say when exactly, but probably when I started learning ML, or a few months before.
  • What was the first question concerning Octave you could not find an answer to rather quickly? When I was trying to parallelize the Zhang-Suen thinning algorithm, and I spent a lot of time to discover how to apply a function to each element of a matrix, but taking into account its neighbourhood. Finally I discovered the colfilt method ^^U.

P: Prerequisites

  • I work with Ubuntu, usually the LTS versions. I also have access to Windows 7, Windows 8.1 and Mac OS X Yosemite, but using virtualization.
  • I have access to Internet whenever I need it, and I also have "emergency solutions" (3G, friends connections, family connections, or a nearby library with Internet connection).
  • I have access to my PC whenever I need it, I have one PC and one laptop, and I also have "emergency solutions".

S: Self-assessment

  • Please describe how useful criticism looks from your point of view as committing student.
  • How autonomous are you when developing? If you answer both subquestions with "Yes, definitely", we are a tad confused. ;-)
    • 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"). Optionally include two or three milestones you expect.