From Octave
Jump to navigation Jump to search

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.

I was born in Mexico but live in London, where I study Computer Science at University College London as a first year. I started programming when I was 13, using TI-BASIC on a TI-83 I found at school (Ugh. It was horrible). Outside programming, I like cooking and subsequently eating said food.

    • Which languages do you speak? English and Spanish, both natively.
    • What's your overall background? I'm a first-year Computer Science student at UCL. In High School I did CS, Math and Physics at IB Higher Level.
  • Why do you want to participate in the ESA Summer of Code? What do you hope to gain by doing so? First of all, I want experience working in a field I like - not finance or defense. I also want to contribute to a very exciting project with real-world applications. I also want to give back to the open source community.
    • Please also describe your previous experience with SoCiS, if any. I first learnt about ESA's SoC yesterday night. I had heard about Google's but I didn't know of what it consisted. When I read about ESA's summer of code I got extremely excited and applied here. Needless to say I'm aware of the basic mechanics of the whole thing, but not the intricacies in it.
  • Why are you choosing Octave? Because it combines my love of mathematics and programming, and I feel like I can make a tangible contribution that will be used in real-world applications.

My CV can be found here.

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. mateoi
  • Which time zone do you live in? Will that change over GSoC duration? At first I will be in London - UTC+1, but I will probably visit Mexico for a few weeks - UTC-5.
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? When I'm in London, I would be available from about 1000 to 2300 UTC, and in Mexico from 1400 to 0400 UTC.

E: Coding experience[edit]

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 am very familiar with C, and by extension C++. I have used Octave only sparingly (just to see what it's like), but I do have experience in Matlab scripts using data manipulation, file IO and for numerical analysis.
  • Please describe your experience with other programming languages. My strongest programming language is Java, but I also know Haskell, OCaml, Scala (can you tell I like functional programming?) and Python, plus I'm currently teaching myself Perl.
  • Please describe your experience with being in a development team. I'm currently working for a small, three-person team developing an Android app for an art gallery. It involves writing the code for static tablets that display video and audio about different pieces, and the files can be managed remotely from a desktop computer using a simple UI we wrote. Also, there is an Arduino-based ultrasound and motion sensor to attract passerby by playing audio snippets and to record usage statistics (i.e. percentage of people who interact with the tablet). I am in charge of the Arduino development, on top of being the project leader so having to manage internal communication, deadlines, deliverables, as well as communicating with the client to find out her requirements and proposing solutions. We fully intend to release the source code under the GPL once we're finished. My GitHub page can be found here.
  • 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. Probably the app I just mentioned. It has taught me to work in and manage teams, to deal with schedules and deadlines, to write reports and user-level documentation, and that I definitely do not understand art.
  • 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[edit]

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists I have used IRC before, and I'm subscribed to mailing list but I've never posted to one
    • Mercurial or other source code management systems I've used git, both from the command line and from GitHub's UI, but not hg.
    • Mediawiki or other wiki software I am an occasional contributor to Wikipedia, so I know the syntax well.
    • make, gcc, gdb or other development tools Very basic make and gdb knowledge; GCC is my compiler of choice.
  • What will make you actively stay in our community after this SoC is over? If it turns out (like it seems to be so far) that the community is friendly and welcoming, and that I can take part in an ongoing project.

O: Only out of interest[edit]

  • Did you ever hear about Octave before? Yes
    • If so, when and where? How far have you been involved already? Browsing the Ubuntu repositories for software that seemed cool, and used it to get its flavor, but not for any serious work.
  • What was the first question concerning Octave you could not find an answer to rather quickly? A good tutorial for beginners (or, as a question, "Where can I find a good tutorial for beginners?")

P: Prerequisites[edit]

  • Please state the operating system you work with. I run Linux Mint 16 64-bit (KDE version) and Windows 7 64-bit. I also have a VM running Linux Mint on the Windows install.
  • Please estimate an average time per day you will be able to (if separated) access
    • an internet connection All day, as long as I'm awake
    • a computer Same as above
    • a computer with your progressing work on As long as I'm not out with friends or family, most of the day.
  • Please describe the degree up to which you can install new software on computers you have access to Full admin access

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student. Very useful - of course I don't know much, that's why I'm learning. I always try to take advice seriously and understand the other person's ideas.
  • How autonomous are you when developing? I prefer to discuss plans and ideas with other people, but to actually write code by myself, at my own pace.
    • Do you like to discuss changes intensively and not start coding until you know what you want to do? I tend to want to start coding right away, but I've been trying to stop myself from doing that and planning what we have to do beforehand. It always works out better, of course, but it's also not as fun as writing code.
    • 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, for big projects I usually write a unit test suite and gradually modify it, adding features as they become the next logical step. I'm lucky enough to have never had to completely discard a work package I was working on, but I've come close. Usually it's a relief to start from scratch or almost-scratch to avoid all the little inconsistencies and bugs that accumulate in the code.

Y: Your task[edit]

  • Did you select a task from our list of proposals and ideas? Yes
    • 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. The Mapping package. I intend to decide the priority of the unimplemented functions with my mentor and work on them by groups. I'm especially interested in the Data analysis ones.
  • Please provide a rough estimated timeline for your work on the task. I would probably begin by deciding the priority of the functions, grouping them into packets and working on them. I would make the packets worth two weeks of work, and include testing in them. Every two weeks I would deliver my mentor a report on those packets, with a list of things I've worked on, what needs to be done next, problems I encountered, etc.