A: An introduction
Hello! My name is Ahsan. I am a third year undergraduate doing Electrical (Computer) Engineering from COMSATS INSTITUTE OF INFORMATION TECHNOLOGY, Islamabad. I love and enjoy writing code and a big fan of FIFA games. The languages that I know and can speak are English, Urdu and Punjabi. Currently I am interested in Control theory, AI and Web Engineering. I am now in my third year of Bachelors Program.
I heard about Google Summer of Code at the end of last year while looking for a solution of a problem on Drupal Site. A person there had written about her participation in the GSoC in her profile. So I went on the GSoc 2012 website and learnt about the program over there. and that day I decided that I will participate in the program next year. I am passionate about working with Open Source Projects. I am willing to learn new things and working with organizations. I have never done that and I think that it is a big oppurtunity for me to be a part of a large Open Source Organization. I think there will be a lot of stuff for me to learn especially new experience in meeting new people and to work with the people that are out there with the passion of helping others.With the whole summer to spend in coding something worthy, I think it will improve my skills and will provide me a way to learn new things and to learn how to manage programming projects while working with others , and a good feeling of helping others while working with an Open Source Organization. And with a certificate offered by Google alongwith a worthy stipend there is a lot to gain during the whole summer.
This is the first time that I am applying to GSoC program.
I have heard about Octave while taking online classes on Coursera. And since it is similar to Matlab and its free, I think its a better choice for students who cannot afford to pay license fee of Matlab. I have chosen Octave because it offers things that helps a lot in Engineering. And being an Engineering student, I think it is a good choice for me to work with Octave to make it better and more accessible to others.
My nick on IRC is 'Ahsan'. My timezone is +5 GMT and it will remain the same during the course of GSoC. My work time will (most probably) be from 0700 GMT to 1500 GMT or From 1400 GMT to 2100 GMT.
E: Coding experience
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.
C++ is the first programming language that I learnt when I was in high school 5 years ago. I learnt that all by myself. At first I didn't seem to have any idea of what I was doing and I was felt deserted at times while learning it, but after a few months of constant struggle and continuing my habit to "hang on", I was able to learn both the language and object oriented concepts. So I am comfortable with coding in C++ . I have also participated in the University level programming competitions with C++ as my primary language(Although I have used JAVA as well). So I would say that most of the programming that I have learnt today is based primarily on the knowledge that I gained while learning C++. I used C++ to make a Library Management System as my semester project.So I would say that I am comfortable with coding in C++. I used Matlab in my second year of Bachelors.Fortunately it is available in Unversity on University computers to use, so I have used Matlab in several of subjects that I have studied(this includes Signals and System, Digital Signal Processing and Analog Communication Systems), and I had used it in my semester projects as well. I heard about a free alternative to Matlab(and that is Octave) when I took an online class on Coursera which was about Image and Video Processing. I havent used Octave that much but whenever I was at home and had to attempt some exercise, I used Octave for that and I was happy because it was free. Coming to m-scripts, now its around 2 years now that I am using Matlab and Octave, so I am more than comfortable with these tools.
- Please describe your experience with other programming languages.
PHP was really easy to grasp as I had already passed a rugged time with learning C++. My first project on PHP was to make a website like Facebook, and I spent my whole summer two years ago on that but it never got completed due to commencement of my regular classes. Afterwards, I tried to play with Facebook API and made an application named "My Top Ten Friends". I made that around two years ago but published that last year. I also tried the Youtube "gdata" API and made a simple searching page with Custom CSS styling.I have a made like 4 websites using Drupal framework. Two of which are still online. I had spent an year learning the concepts behind Drupal framework.One of these website was made on CodeIgniter but then I portedd the whole site to Drupal. Currently the new site is on Drupal and I still have the CodeIgniter version on my PC. Besides , I also tried CSS and JScripting.
In C# I made a visual Calculator in which I implemented the shunting yard algorithm which calculates an arbitrary length mathematical expressions. I found both C# and Java almost the same in many ways. I learnt Python last year when I decided to take an online class on algortihms and AI. I implemented some graph algorithms using Python. It was quite easy to learn.
- Please describe your experience with being in a development team. Do you have experience working with open source or free projects?
I have never worked with any Dev team, but I did spent a few days on a project with some Web Dev expert while working on a Drupal site. The site was about some Musical School , and I was really inspired by the person with whom I worked on that project. Infact I did help him with a custom module which was about Custom Registration form. But the research that I did while customizing the form was really time-consuming and I had to experiment a lot to get that to work. So this is the only experience that I had in my life while working with a Professional.
- 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.
I have not written code for any organization but I do maintain a website which helps students in my country that are going to take admissions in University. I am an admin of the site named EntryTestPrep.com . The site is still in the experimental stages and hopefully will be completed in a year. The other one is WannabeTech.com site which is kind of inactive now. I did spent a significant amount of time on that one too.
- Please state the commits and patches you already contributed to Octave.
I was GSoC 2013 participant for Octave. I had worked on Agora website during the summer. Right now I have submitted one patch that fixes this bug(https://savannah.gnu.org/bugs/?41474).
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 used IRC just to chat but I do not it in-depth.Like I wanted that if I have to save all the chat logs discussed on the Octave IRC channel, how I would do that, but I have not searched for that yet. I am a bit familiar with the mailing lists although I have subscribed to a number of mailing lists but I have only used only a few times.
- Mercurial or other source code management systems
I do not have any experience of using Mercurial. I think I have seen Mercurial while downloading the source of Agora website, but I know very little about it.
- Mediawiki or other wiki software
Yes I have some experience in using MediaWiki. Infact I do have edited a few pages on Wikipedia. So this should not be a problem for me.
- make, gcc, gdb or other development tools
I have used gcc for windows in university for C coding. I mostly use sublime text ,Notepad++ or visual studio for development purposes. I donot have any idea about other tools mentioned.
- 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 :-)
I will definitely help the community after GSoC based on free time I get during regular days. Ofcourse the motivation behind is the feeling of doing good while helping others.
O: Only out of interest
- Did you ever hear about Octave before?
- If so, when and where? How far have you been involved already?
I did hear about Octave last year when I enrolled in an online class. I am not involved yet but this summer I will contribute as much as I could.
- 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, …
it was How to install Octave on windows? :)
- Please state the operating system you work with.
I am currently using Microsoft Windows 8.
- If you have access to more than one, please state them and the conditions under which you are granted this access.
I do have a plan to install Ubuntu in coming on my desktop PC.
- Please estimate an average time per day you will be able to (if separated) access
I have all day access to my computer and internet.And I am talking about the computer on which I code.
- Please describe the degree up to which you can install new software on computers you have access to.
Since I have a my own PC, I can install anything that I want.
- Please describe how useful criticism looks from your point of view as committing student.
I think it is the only way to improve yourself by accepting critism, and being a learner it is critical for me to accept critism on my work so that I can improve myself by doing the things in right way and not repeating the mistakes again and again.
- How autonomous are you when developing? If you answer both subquestions with "Yes, definitely", we are a tad confused. ;-)
I am comfortable with writing code as long as I understand the things that I am developing and for that I always like to make a to-do list so that I do not get lost in-between the project.
- Do you like to discuss changes intensively and not start coding until you know what you want to do?
Umm, That depends. If the changes that I have to make are large , then surely I would be discussing the changes in a great detail until I am pretty much clear about 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?
Well, if the things are going the way they are supposed to, then surely I won't do that. But if I am stuck at some point during the whole project and things become a bit difficult for me , then maybe I will experiment a bit and make appropriate changes to a minimum extent until I found a solution.
Y: Your task
- Did you select a task from our list of proposals and ideas?
Yes I have a selected a project from the ideas list.
- If yes, what task did you choose?
I have selected to continue the development of Agora Website where people will share snippets and ready-to-use bundles. For that I am studying the django Framework which seems relatively easy and hopefully I will be comfortable to work with it before the start of the program. I am yet to make a list of tasks but I will make one later. For start I will continue with the one that is available in the Agora clone's README.
The schedule that I have thought of is that I will work for around 35-40 hours each week. And there will be two weeks off during the GSoC program.
Rough Timeline and Milestones:
(24th May - 17th June): To work with mentor about the ideas to implement on the Agora website and to create a to-do list to implement in the coming days.And to know Octave a bit more in detail. (This also includes my final semester exams).
(17 June - 02 August): Start working on the Agora website and try to finish the first half of the To-do list that I will be creating during the community bonding period.
(August-3 to End of the Program): Complete the rest of the work of the Agora website and make it available public so that people can begin start posting and share stuff on it.