User:Tcholas

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 am a Mechatronics Engineering student, with great passion for programming. As any Brazilian, I am really communicative, love to make new friends and enjoy gathering knowledge from other fields, such as economics and international relations. I am also a Boy Scout for the past 9 years and practise volleyball and Aikido.

    • Which languages do you speak?

Fluent: Brazilian Portuguese and English Intermediate: French and Spanish

    • What's your overall background?

I am in my 4th year of Mechatronics Engineering at the University of Brasília, currently on an exchange at the Australian National University. Besides my usual courses, which includes Control Systems, I have studied Human-Computer Interfaces, Algorithms, Artificial Intelligence, Compute Vision, Machine Learning, Signal Processing, Digital Communications and Robotics. During my degree, I have done undergraduate research in probabilistic robotics (more specifically in simultaneous localisation and mapping) and HCI (using gaze tracking to correct misunderstood words in speech recognition systems). I was integrant of the robot soccer team of my university, developing the simulator using C++/ODE and the strategy module. We finished our first national competition, last year, in 4th place, out of 12 teams.

  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?

For me, free software is a philosophy for which I have enormous appreciation. In my opinion, technologies would be able to evolve much faster if all code was free and shared between communities. As a matter of fact, a few years ago I decided to bring this philosophy to my day-to-day life by using GNU/Linux, Android and free software instead of proprietary variants whenever possible. Being part of this movement is a dream that, now, can be realised. I expect that, by participating of the Google Summer of Code for the first time, I will have end up with enough experience to keep helping the free software community.

  • Why are you choosing Octave?

As any engineering student, I often need to use numerical software. However, using Matlab was never comfortable for me due to its proprietary and expensive licenses. In my first semester of university, though, I was introduced to Octave as a free software and light-weight alternative and it was perfect for me for a while. However, the previous semesters at the university required for me to use Matlab tools that are still not as intuitive to use in Octave, mainly because of a lack of GUIs. When I saw at the Ideas Page that I would be able to help Octave developing these instruments, I realised that this was the perfect opportunity for me to help this spectacular project.

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.

My nickname is tcholas.

  • Which time zone do you live in? Will that change over GSoC duration?

Until July, I will still be in Australia - UTC +10. However, when I return to Brazil, I will be in Brasília - UTC -3.

  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?

I usually like to code from the late morning to the early night, from between 10.00 to 20.00 in local time. Converting to UTC +0 it will be the following: Australia: 0.00 to 10.00 Brazil: 13.00 to 23.00

E: Coding experience[edit]

  • Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.

I have been programming in C/C++ since my first semester of the university, first for course assignments, then for the robot soccer team. In this sense, I have coded about 5,000 of lines in objected-oriented paradigm. Although the robot soccer code is not public due to strategic reasons, the assignments of the probabilistic robotics course, developed with two more students, is available in the following repository: https://code.google.com/p/probabilistic-robotics/. During the previous semester, I have focused in GUI programming using Qt. My first project was a program to control Model United Nations debate sessions. Although still unfinished, the code is available in my GitHub repository https://github.com/matheusportela/sinus. I have been using Matlab for university courses, specifically for Computer Vision (programming several applications, such as feature extractors, face recognisers, k-means clustering etc), Signal Processing and Digital Communications (using for BPSK and QPSK simulations, for instance).

  • Please describe your experience with other programming languages.

My first and favourite programming language is Python, which I have used countless times for small scripts (such as downloaders, HTML information extractor etc), for some university courses (Artificial Intelligence and Machine Learning) and, during the last summer, to develop a user study about gaze tracking for correcting speech recognition. The last project was developed with PyQt and PyWin32 and the results can be seen in the following video: https://www.youtube.com/watch?v=xdBoNsMthr8.

  • Please describe your experience with being in a development team.

Although I have never participated in open-source or free software development, I have some experience in developing with my robot soccer team. During the period I have integrated the team, I learned the importance of having regular communication channels and the necessity of setting tasks and due dates.

  • 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.

The robot soccer team was the biggest project I have written code for. When I became part of the team, I was in my second semester of university and didn't have much experience in developing. It was in the team that I learn that code styles are really necessary, that communication and collective engagement is a sine qua non for the success of the project, that repositories save a lot of time and that it is better to talk about problems as soon as they occur instead of trying to solve by myself and delaying the whole project. I was part of the strategy group during the two years I participated. My first task was to develop a simulation module, that could be connected with the strategy, using C++ and the physics library ODE. This task was successfully accomplished and it is the standard simulator for the soccer team. It was my first time using third-party libraries and it took me a long time (between six and eight months) to have it done. After that, me and other three developers programmed the initial part of the strategy module, defining its architecture, the base classes and AI, and the communication with the simulator and the vision module. I also was the maintainer of the Makefiles of the project. My last contributions involved programming the first set of tactics and plays for the robots.

  • Please state the commits and patches you already contributed to Octave.

Unfortunately, I have never contributed to free software, Octave included. I will use the Google Summer of Code to give my best shot as a contributor to the free software community.

F: Feeling fine[edit]

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists

My knowledge in IRC is very limited, only knowing how to send standard messages. I have been subscribed to some mailing lists, but only have basic experience.

    • Mercurial or other source code management systems

I am very familiar with SVN and, more recently, Git. However, I have never used Mercurial.

    • Mediawiki or other wiki software

I know only the Wiki syntax because of the robot soccer team tutorials I wrote.

    • make, gcc, gdb or other development tools

I am very familiar with Makefiles and gcc, but have only limited knowledge in gdb.

  • What will make you actively stay in our community after this GSoC is over?

A good experience during GSoC will definitely make me stay as an active member of the community. In fact, that is my plan even if I am not selected for the GSoC this year.

O: Only out of interest[edit]

  • Did you ever hear about Octave before?

Yes, as a free alternative to Matlab.

    • If so, when and where? How far have you been involved already?

During my first semester at the university, in Brazil. However, I have never been involved in the Octave community.

  • What was the first question concerning Octave you could not find an answer to rather quickly?

Sincerely, I don't remember questions about Octave that I could not find an answer, since even the limitations can be found by a Google search.

P: Prerequisites[edit]

  • Please state the operating system you work with.

I usually develop using Linux, either Ubuntu or Arch.

    • If you have access to more than one, please state them and the conditions under which you are granted this access.

I have also a Windows 7 and, more recently, a Mac, which I have total access at any time.

  • Please estimate an average time per day you will be able to (if separated) access
    • an internet connection and a computer with your progressing work on

Whenever I am not sleeping or attending my classes - about 12h/day.

  • Please describe the degree up to which you can install new software on computers you have access to.

Both the Linux and Mac laptops are my own, therefore I have root access and can modify the systems as much as I want.

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.

Criticism is an essencial part of growing as a person, since no human is perfect. Therefore, I tend to look critics to my work as opportunities to change for better.

  • How autonomous are you when developing?

Usually, I work very well by myself. Whenever there is a point where I don't know what to do, I first do some internet search or try to find similar procedures in books. When this is not enough, I use to let my advisor aware of the situation (for the case he or she has an alternative) and post questions in forums. This reflects my way of learning programming, which have been most autodidact.

    • Do you like to discuss changes intensively and not start coding until you know what you want to do?

Honestly, I start coding as soon as I have an idea for the initial prototype of the idea. Then, I keep refactoring the code by discussing the necessary changes. In my opinion, it is better to make changes at the beginning of the particular part of the code than not discussing them at all and have to redo a big part of it.

    • 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?

Sort of. I start doing discussions by sketching ideas on the paper to check whether I completely understood the task. Then, I will do an initial small prototype based on the paper sketches which will be the base of the following developments if it does match the original idea. It is better to throw a small portion of code away that develop an entire application that is wrong and will need severe modifications. This last situation costs a lot of time and effort that we cannot wast, specially in a tiny schedule such as the GSoC period.

Y: Your task[edit]

  • 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.

Yes, I chose the "Create a graphical design tool for tuning closed loop control system (control pkg)" project. I want to focus on elements that can graphically tune a control system, namely root locus, Bode plot, Nichols plot and step, impulse and ramp response, instead of focusing on mainly analysis plots, such as Nyquist plot. http://wiki.octave.org/Summer_of_Code_Project_Ideas#Create_a_graphical_design_tool_for_tuning_closed_loop_control_system_.28control_pkg.29

  • Please provide a rough estimated timeline for your work on the task.
    • June 1 - June 11: Exams weeks

Some work for the preparation period may be done, although it will not be the priority.

    • June 12 – June 17: Preparation period

Study drag and drop actions using Qt. Study necessary Octave control package functions. Gather user requirements. Develop paper- and graphical-prototypes of the GUI elements.

    • June 17 – July 5: Version 1: Root locus plot and mouse dragging feature

This version will present a root locus plot widget and allow to drag poles and zeros by dragging with the mouse. Besides, there should be options for zoom in, zoom out and pan the plot. A first layout, in which the other widgets will attach, should be prototyped.

    • June 22 - July 1: Possible trip to New Zealand

If this trip does occur, the flexible weeks can be used to compensate if version 1 cannot be concluded in time.

    • July 5 - July 7: Return to Brazil
    • July 8 – July 28: Version 2: Bode plot and mouse dragging feature

This version will present both open loop and closed loop Bode plots and integrate with the mouse dragging feature, updating in real-time. There should be options to choose the input as either step, ramp or impulse. Code and usability review.

    • July 29: Mid-term evaluation
    • July 29 – August 18: Version 3: Step, impulse and ramp plots

This version will present step, impulse and ramp plots that update in real-time when poles and zeros are moved.

    • August 19 – September 1: Version 4: Nichols plot and configuration menu

This version will present a Nichols plot, which is updated when zeros and poles are moved, and a configuration (or customisation) menu that will allow to select which plots will be shown and their positions. Code and usability review.

    • September 2 - September 15: Flexible weeks

These weeks can be used if any previous work was not completed in time or to introduce new features if all work was done.

    • September 16 - September 23: Final reviews

Final code, usability and documentation reviews.