GSOC 2012/Student Application thomk

Contact Information
For additional information about me, see my profile.
 * Email Address: thomkoenders@gmail.com
 * Telephone: +31613091851
 * Blog URL: thomkoenders.blogspot.com
 * Freenode IRC Nick: Wolk

Why do you want to work with the Fedora Project?
I have been using Fedora for quite some time and I like it a lot. I have been considering to contribute to the Fedora project for quite a while but had a hard time taking that final step. The GSoC  program seemed to me like the perfect opportunity to change this and therefore I decided to try and join this way. I would like to be able to contribute to the Fedora project this way in order to make it an even better distribution than it already is.

Do you have any past involvement with the Fedora project
Unfortunatly, as mentioned earlier, I have not been involved in the Fedora project other than using it.

Did you participate with the past GSoC programs, if so which years, which organizations?
I did not participate in past GSoC programs. I wanted to participate last year but was just a little too late.

Will you continue contributing
I would very much like to continue contributing to the Fedora project after the project, preferably in the area I worked on in the GSoC since I would be familiar with this area.

Why should we choose you over the other applicants?
I have been studying software engineering for the past five years, the practical side as well as the academical side. I enjoy developing software and feel I learned a great deal about software development in these five years. I have worked with a lot of different object oriented programming languages like C++, Java, C#.NET, PHP, Python. Using this programming languages to develop applications, school assignments as well as my own projects, has given me quite some developing experience. I also take every possibility I can to try and learn new things. Ofcourse I am well aware I still have a lot to learn and therefore I hope I will be given this possibility in order to further develop my skills. Also, as mentioned in the upcomming section, I have been developing applications dealing with networking multiple times in the past. I think this experience with networking in applications will be quite handy. I have been working in groups a lot, interdisciplinary as well as with other software developers, which gave me a lot of experience in working in teams. Also for most of the school project I have done, I had to write documentation and reports. Therefore I also have experience in writing documentation.

And also quite important when developing software, I have experience in architecting software projects. From my experience it is important to first determine how the software should be build before starting to write even a single line of code. Ofcourse it is close to impossible to have the correct architecture at the first try, architecting software is a recurring process. However it is in my opinion very important to start a software project determining what the architecture of the software will look like and to keep updating the architecture while developing. All the software projects I have been working on have been started by first determining the architecture, which gives me quite some experience in this field. I have done this mostly by using a high level of UML, seeking balance between being to precise and being too vague. Also it is important to find the proper balance between architecting and the actual developing. After I make a proper first architecure I start developing, while developing I keep updating my architecture so that the best possible result is being achieved. In short
 * Studying software development and computing science for past five year.
 * Lot of experience in multiple programming languages and object oriented programming as a whole.
 * Willing to learn.
 * Open to new things.
 * Experienced in developing applications with networking, which is related to the project of my choice.
 * Experienced in working in groups.
 * Experienced in writing.
 * Experienced in architecting software projects.

Some sample projects I have worked on
As requested, here I have added some links to projects I have worked on.

A Sudoku solver in C++
This has been a hobby project of me. A couple of weeks before I wrote this I had to make a Sudoku solver for a educational assignment. Because of the time pressure I decided it was best to do this in Java. The results of this were more than suffient for the assignment but it did not take long before I grew unhappy with the performance. Therefore I decided to redo the project in C++.

I made this decision not solely based on the speed upgrade that is gained because C++ is ran native. It also allowed me to use pointers to use a faster algorithm, which could not be implemented in the same way in Java. I enjoyed working on this project a lot and think it came out quite okay. Therefore I decided to upload the code which can be found on http://xp-dev.com/svn/CPPSudokuSolver/

Webbased chess game
A couple of months ago me and another student were working on a webbased chess game as a educational assignment. In this chess game there were two teams competing against each other. Players in each team could vote for the next move the team should be making. After a certain time limit, the move with the most votes was made.

This assignemnt was focused on the networking part rather than making a fully functioning chess game. Therefore it was possible for teams to play a game of chess to some extent, but no rules were implemented, resulting, for instance, in a game in which all the pieces could be moved everywhere on the board. However this was not considered a problem since it was about the networking and correctly handling a large quantity of connections, which in the end worked well.

As mentioned before I worked on this project with another student. Nevertheless I worked on most of the code, especially the code focused on the networking part which was most of the application. The other student worked on the "GeneratePicture/" package leaving the rest of the source to me.

The source code for this project can be found on http://xp-dev.com/svn/ChessGameh/ChessGameh/src/.

Location monitoring
Last couple of days I have been working on a school assignment with another student involving location monitoring. An android device is used to determine the current and past locations of an individual. It is developed with in mind the ability to monitor patients suffering from Dementia.

This software system consists of three parts
 * A server application, which saves incoming position messages in a database.
 * An android device, which retrieves GPS locations and transmits the coordinates to the server application.
 * A web interface, in which the coordinates are shown on google maps.

It is a work in progress which means everything is completed and succesfully tested except for the web interface which I am currently still working on. Apart from that I have been responsible for the server application which seemed a perfect example for me to show. It is a small efficient application which does what it has to do, retrieve and store coordinates.

The source code for this project can be found on http://xp-dev.com/svn/LocalisationServer/.

Please also take a look at my proposal