Editing User:Castarco

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 4: Line 4:
* I speak spanish, catalan and english.
* 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 (and I'm very disperse, it's difficult for me to choose a project to contribute). 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.
* 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 ==
== C: Contact ==
Line 11: Line 11:


== E: Coding experience ==
== 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, C++11
* 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 ===
TODO , incomplete application.
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 measuring their capabilities, 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.
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 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 other programming languages.
 
* Please describe your experience with being in a development team. ''Do you have experience working with open source or free projects?''
=== Other not so crazy 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.''
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 ==
** IRC and mailing lists : I'm very familiarized with mailing lists. Sometimes I use IRC, but less than mailing lists.
* 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.''
** 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.
** IRC and mailing lists
** Mediawiki or other wiki software : I'm used to use wikis for professional usage, but also when I edit Wikipedia articles.
** Mercurial or other source code management systems
** 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.
** 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? 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.
* 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 ==
== O: Only out of interest ==
* Did you ever hear about Octave before? Yes.
* Did you ever hear about Octave before?  
** 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 so, when and where? How far have you been involved already?
* 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.
** 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 ==
== 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.
* Please state the operating system you work with.
* 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).
** 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 my PC whenever I need it, I have one PC and one laptop, and I also have "emergency solutions".
* 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 ==
== S: Self-assessment ==
* About useful criticism: I think criticism is useful when it's done with respect, without insults, without condescension, and when it's done in a constructive way (all together). Put it simple, if a critic is done to help me understand that what I've done could be done in a better way, and an alternative approach is sketched or pointed, then I'll learn something. But if all I receive is something like "your work is crap", then I'll leave the project and start looking for projects with nicer people.  
* 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. ;-)''
* How autonomous are you when developing? I'm relatively independent when I develop, but evidently I'm more independent when I'm familiar with the code base. In any case, when I suspect a change can be polemic or can affect my partners work, then I think it's good to discuss it and looking for a good consensus solution.
** Do you like to discuss changes intensively and not start coding until you know what you want to do?
* I think proof of concepts are a very good idea, and I should use this "tool" more. I have to admit that I don't usually do proof of concepts. I don't mind "throwing away code", I'm used to it, even without doing proofs of concepts. If I don't do proofs of concepts is mainly because: the company doesn't want to spend money on "unproductive" work, or because I work for myself without having to agree with anybody.
** 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 ==
== Y: Your task ==
* Did you select a task from our list of proposals and ideas? Yes, from [[http://wiki.octave.org/GSoC_Project_Ideas#Suggested_projects]], Infrastructure section: '''Octave Package management''' ( [[http://wiki.octave.org/OEP:pkg]] ).
* 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 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?
** 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.''
* 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]]
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)