A: An introduction

My name is Alex Provan I am from the Philadelphia area, and I am currently sophomore at Clarkson University, I am a mathematics student with a heavy interest in computer science and software engineering. At school I am involved in the local chapter of the National Society for Black Engineers, and the Clarkson Open Source Institute. I speak the english language.

Currently I am studying mathematics with a focus on computer science, so I am taking courses in calculus, math modeling, and statistics, as well as courses in general programming in C++ and MATLAB. In the future I hope to get into graph theory and complex systems.

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

I want to participate in GSoC firstly because I would like to get experience contributing to a larger already established open source project, and experience working with others in software development. I think the skill of working within the context of something larger, as well as project management skills are incredibly valuable to have. Secondly I want to begin working with an open source project in specific, I frequently use open source software and would like learn how to work within the free software community as a whole. Lastly I would like to use GSoC as an opportunity to learn new programming skills and solidify programming skills that I am already familiar with.

  • Please also describe your previous experience with the GSoC, if any. Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!

I have no real previous experience with the GSoC, I followed it a bit last year, and I had afriend who did it, but this is the first year that I am eligible to participate and therefore the first time I have really looked into it in any depth.

  • Why are you choosing Octave?

I chose Octave for a few reasons. The first reason is that for school I have to use mathematical languages like Matlab or R or Octave for many of my assignments, I want to be able to contribute to a project that I actually use. The second reason is that Octave interests me, I am very interested in learning more about how math and programming languages interact. I see working with Octave as a step towards solidifying mathematical concepts I already am familiar with, and learning new ones through programming. Octave is also very similar to MATLAB, which I am already fairly familiar with.

C: Contact

Email: alex.provan.ssh@gmail.com

irc nick: provana

If I need to I can give my phone and facebook, I am on the IRC as much as I can be but the best way to contact me directly is phone or email.

time zone: UTC -4 (EDT) this will most likely not change during GSoC

During GSoC I am best working between 14.00 to 22.00 UTC any day of the week, but I am very flexible. I will not be availible the week of April 25 2016 as that is the week I have final exams.

E: Coding experience

C++: In C++ I have experience working both by myself and contributing to projects in groups. Just using the C++ standard libraries last semester for class myself and 2 other students had to build a program that dealt with some sample student data (grades, account balance, attendance, etc). The program was not super complex but the project did allow me to get some experience working with other people on software projects. I have also worked with the GNU scientific library and boost libraries. Those have mostly been for working through some of the Project Euler challenges. Each of those things I have done both on windows and on linux. Outside of personal computing I have quite a bit of experience writing C/C++ scripts on the arduino platform. On the arduino platform I am familiar with the serial, networking, time, and lcd libraries.

Octave/Matlab M scripts: I use MATLAB almost daily with school, I first learned it in highschool and now I use it in many of my math modelling classes. I also use it outside of that if i need to generally calculate something. m scripts is something I am still learning but it is something I am actively experimenting with to get a good handle on it. As with C++ I am working through the Project Euler problems with Octave/MATLAB in order to learn some of the features. Since discovering Octave I have largely switched to using that in place of MATLAB (as long as assignments do not require it) as it is easier for me to run on my laptop. I have not done any large projects with MATLAB or GNU Octave

Python: I was introduced to programming through python, I mostly use it for computer organization or small scripts when I need to do something quick. In python I am comfortable programming procedurally or OOP. I am comfortable with the pythonic idioms.

C programming language: This overlaps a lot with C++, I learned C before I learned C++. Most of my work with C has been working with/tweaking other peoples code for my own use. tools such as the suckless.org tools (dwm, dmenu) and busybox.

  • Please describe your experience with being in a development team. Do you have experience working with open source or free projects?

I have done lots of group programming projects in programming and math classes for university. In highschool I had to work in a group of 5 other people to create a mario clone using the DarkJDK 2d library over the semester. In university I worked with a team of 2 other students creating a simple program to manage and process an amount of sample student data.

  • 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 largest project by volume of total code in the project that I have written code for was an informal experiment I conducted with one of my friends. Using virtualbox we built a tiny linux distribution. It was largely just cross compiled utilities. Starting with just the linux kernel, and busybox. Initially the suckless.org init script was used. However eventually I was able to write an init in C and a minimal getty type program. It was a few hundered lines of code however the entire system booted up and was able to make use of the programs that I had written for it. Even though the system could not do a whole lot functionally I learned a good amount through the experience. Through the project I learned how to cross compile code for another system. I learned how the arch linux install system works. I learned the minimal components an operating system need to boot up and I learned how those components interacted. I learned how to take multiple projects that different people had written, some who weren't even around anymore and assemble them into a working whole.

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

I have begun work implementing functions that are missing in the mapping package. Currently I have implemented the polyjoin and polysplit functions and have submitted them as a feature request for discussion. I am working getting those two functions formatted and documented. I have begun to work with the partial polybool implementation to figure out what needs to be done to complete it.

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 have participated in other IRC channels and mailing lists before. I use open source and free software pretty frequently and use respective IRC channels and mailing lists to ask questions if I have them.

    • Mercurial or other source code management systems

I have used Git before. I am not all that familiar with mercurial.

    • Mediawiki or other wiki software

I am comfortable and familiar with wiki software.

    • make, gcc, gdb or other development tools

I have used make and gcc before but I would not consider myself an expert on either or them. I have no real experience with gdb. When programming on linux I typically will use Clion as the editor and then switch to konsole and use make and gcc to actually build the program. I am fairly familiar with the whole process outside of this though. I frequently make use of make and gcc as I typically compile my own kernels for my server.

  • 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 :-)

This community seems pretty cool. Octave seems like a nice project and I hope to participate after GSoC is over.

O: Only out of interest

  • Did you ever hear about Octave before?

I have heard about and used Octave before. I try to use free software and when I needed a replacement for MATLAB , Octave is what came up in archwiki when I searched for a replacement. Advertising seems to be pretty good in relation to other free software projects. Especially with the addition to the GUI along with the expansion of the project I definitly see more people using it and it being more widely recognized.

  • 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, …

"Where can I find more information on the mex.h header file and functions contained within?"

P: Prerequisites

  • Please state the operating system you work with.

Arch Linux, and Windows 10.

    • 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 Arch Linux on my personal desktop computer, laptop, and server. I have access to Windows 10 on my personal desktop computer.

  • Please estimate an average time per day you will be able to access

I have access to all of these things 24/7 I own computers and have a steady internet connection.

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

They are my personal computers so I have full permissions to install new software on them.

S: Self-assessment

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

Useful criticism from my point of view is when the critic just tells me straight out what the problem is. That way they can either tell me what they would like me to do to fix whatever I am doing wrong, or we can both come to some sourt of solution. Useful criticism is best when it comes before something spirals out of control and becomes a big problem. I don't usually take things personally and would much rather someone tell me about something I am doing wrong before it causes significant problems.

  • How autonomous are you when developing:

I am very autonomous in the sense that I like to try to figure something out on my own if I have problems or if I am trying to learn a new technology or software.. I am usually able to figure something like that out on my own. However I do enjoy collaborating with people in order to have new and fresh ideas.

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

Before I start coding I usually write out the proposed changes on paper and write either some sort of pseudocode or flowchart or something. I typically like to have a solid idea of what I want to do and how that will affect other aspects of my project before I start writing any actual 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?

If I have an idea I do like to see how it would work with the rest of a project, I am fine with having that work thrown away I am usually not super attached to things like that. If I have an idea that is big enough that I would mind having the work thrown away, at that point I would however much rather like to discuss that with the others who are working on that project to make sure it fits in with the project before spending significant time on it. If it doesnt fit within the projects view that might be something I would pursue independantly on my own time.


Y: Your task

  • Did you select a task from our list of proposals and ideas?

I selected a task from the 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.

I chose the missing core matlab functions and would like to implement the boolean operations on polygon functions from the matlab mapping toolbox


T: Proposed Timeline

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

April 22 - 23 May: Week of April 25: Final Exam Week, cannot work.

Week of May 1: Ensure I have a solid handle on the mathmatical concepts regarding polygon clipping and vector data formatting

Weeks of May 6 - May 23: Begin working on programming.

June 11-15:Have a rough implementation of some of the functions finished. June 20-27 Midterm Evaluations

July 20: finish a rough version of the boolean polygon functions and use them to begin to expand the vector and polygon analysis functions that Octave has available

August 7-10: Milestone 3:finish writing code and documentation, check for bugs and typos in documentation. Implement bugfixes. August 15-23: Implement final bugfixes, and finish testing. Final week - final presentation for google SOC results.