GSOC 2012/Student Application thomk/IntegrateProxySettingsandNetworkConnections(Locations)

From FedoraProject

Jump to: navigation, search

Contents

Contact Information

  • Email Address: thomkoenders@gmail.com
  • Telephone: +31613091851
  • Blog URL: thomkoenders.blogspot.com
  • Freenode IRC Nick: Wolk

For additional information about me, see my profile.

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

Proposal Description

I would like to work on one of the proposed project, Integrate Proxy Settings and Network Connections(Locations). I have developed applications with networking aspects multiple times. I always enjoyed working on these projects a lot and therefore I feel this experience will help me while working on this project.

Therefore I would very much like to work on the "Integrate Proxy Settings and Network Connections(Locations)" project.

An overview of your proposal

As the project of my choice is on the summer coding ideas page I will refer to this page since there is no way I could give a better overview at this point than the one that is given there.

The need you believe it fulfills

I think implementing this project would fullfil a large need. A lot of businesses need specific networking settings. Since it would waste a lot of precious time to manually configure the required settings every time a user changes places, it is desirable to have this done automatically. For me Fedora is all about stability and user friendliness once it has been correctly configured. Therefore in my opinion this would be a very important addition to further increase the user experience.

Any relevant experience you have

As stated before I have the following relevant experience.

  • Experienced in developing object oriented applications.
  • Experienced in using C++, C#, Java, php and python.
  • Experienced in writing and documentation.
  • Experienced in developing applications with networking capabilities.

How do you intend to implement your proposal

From what I can tell now, an implementation would probably result in an addition on the current code base of the network manager. This would be best described as an extension on the current application. This extensions should be able to provide the functionality to set up settings profiles. It should automatically retrieve the current network and determine the corresponding settings profile based on this information. At this point I think it would be quite neat if, for instance, it would be possible for users to add/edit a settings profile for the current network where the network is automatically retrieved. The implementation should basicly automate as much as possible taking as much burden of the end user as possible. That being said, everything should be fully configurable when desired. For instance it should be possible to add settings profiles based on a network identifier that is provided manually. Functionality like this would be quite valuable for experienced users like an IT department that is in charge of preparing the device.

Even though at this point I have a lot of ideas for the implementation, in the end I will first have to properly research the current code base and functionality with which I would be working before being able to determine the precise implementation and possibilities.

Final deliverable of the proposal at the end of the period

The final deliverable at the end of the period would be an extension of some sort providing the following functionality.

  • Set up setting profiles in an easy to understand way.
  • The extension should be automated as much as possible.
  • Experienced users should be able to configure everything there is to configure.
  • GUI interface as well as terminal.

A rough timeline for your progress

  • April 23: Hopefully get selected for the project(Thumbs up).
  • April 24 - May 21: Getting started, reading into the current code base, exploring the possibilities, first version of the extension architecture.
  • May 21 - July 9: Completing architecture, start the implementation, starting the documentation.
  • July 9 - July 13: Mid-term evaluations.
  • July 13 - August 13: Proper testing, finalizing implementation, finalizing documentation/
  • August 13: Finalize project.

Have you communicated with a potential mentor? If so, who?

I have mailed some questions to the mentor Dan Winship who was able to help me. I have also communicated with the contact for this project for additional information.