SummerOfCodeProposal carlestyle

From The Battle for Wesnoth Wiki

Brief Summary

Account nicknames

  • gna: carlestyle
  • Forum: carlestyle
  • Irc: carlestyle

About

Contact information

  • email: carlestyle [at] gmail [dot] com

Basics

1.1) Write a small introduction to yourself
My name is Carles Fernandez and I’m a 22 year old boy living in Barcelona, Spain. I’m passionate about photography and love travelling around the globe.

1.2) State your preferred email address
carlestyle [at] gmail [dot] com

1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?
It is carlestyle for both IRC and Wesnoth.

1.4) Why do you want to participate in summer of code?
I would like to participate in Google’s Summer of Code because I think it’s a great opportunity to widen my horizons and gain experience in open source development.

1.5) What are you studying, subject, level and school?
I’m a final year student of Computer Science degree at Universitat Pompeu Fabra.

1.6) If you have contributed any patches to Wesnoth, please list them below.
-

Experience

2.1) What programs/software have you worked on before?
Mostly personal and university projects. I've worked on lots of fields like Graphics, AI, Web Development, Computational Linguistics, image and video algorithms, sound processing, and so on.

2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)
Almost all university work I’ve done so far (except for some cases) has been done in groups of two or three students. I know it is not a large group but that trains us to work in team and coordinate with others.

2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?
Nope, if I’m lucky that will be my first GSoC :)

2.4) Open Source

2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
Nowadays I’m not involved with any open source project but last year I attended an introductory course to open source development where we were asked to make a little modification to Moodle. My task was to make an implementation of the GNU GPL comments system for the Assignment Module. You can check my work, it is posted in the Moodle’s tracker here

2.5) Gaming experience - Are you a gamer?
Yes :D

2.5.1) What type of gamer are you?
I’m a casual gamer. I love games but I’m not playing all day.

2.5.2) What type of games?
Almost any kind of games. But if I had to choose I’d definitely go for RPG and Shooters.

2.5.3) What type of opponents do you prefer?
Real ones. I mean real people, not AI. Whenever is possible I like to play online with others

2.5.4) Are you more interested in story or gameplay?
Hmmm, interesting question. I think I’m interested in both! In my opinion a good game has to have a good story and a good gameplay.

2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.
I can say I’ve tried it but just single player (at least for the moment). I've played just half an hour but it left me kinda good impression ^^


Communication skills

3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.
I’m from Barcelona, so my native languages are Spanish and Catalan but I also speak, read and write English. I’ve attended an English academy since I was little until two years ago when I successfully obtained my Certificate in Advanced English (CAE) from the University of Cambridge.

3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.
I think I’m a friendly person and can easily communicate with others :)

3.3) Do you give constructive advice?
Whenever I know I can give useful advice I try to do it as constructive as possible.

3.4) Do you receive advice well?
Yup! In fact I prefer being given advice, that’s the best way to learn when I make mistakes.

3.5) Are you good at sorting useful criticisms from useless ones?
During my 4 years as a student at the university I received lots of criticisms (good and bad ones) in many of my works and projects. So I had to learn to filter those which really helped from those which did not.

Project

4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?
I would really like to work on Implement a campaign statistics reports on stats.wesnoth.org

4.2) If you have invented your own project, please describe the project and the scope.
-

4.3) Why did you choose this project?
I have experience in Java and MySQL web developing (using MVC pattern) and I've also have got a little bit experience in Hibernate and Struts. I also know PHP and Python and I think that by choosing the right tools I can finally contribute with a good stats page.

So why this project and not another? Because I think I could be really useful to it and meanwhile I would learn new things too (I'm always willing to learn!)

4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".

  • holidays: I have a planned trip from April 19th to April 26th.
  • exams: this semester I only have three subjects and only one has exam. It will be by the end of June.
  • summer: I have summer holidays starting from June the 24th up to mid September.
  • summing up: that means that excluding one week from April (trip) and one week from June (exam) I'll have the rest of the time to work on the project.

Project Timeline:

  • April:
    • 3rd to 17th: do some research, find which are the community most needed statistics and additional ideas. Determine language(s) for the project implementation.
    • 19th to 26th: trip holidays
  • May:
    • 1st to 10th: first tests with the DB.
    • 11th to 25th: basic implementation of the most critical statistics needs. basic UI.
  • June:
    • 1st to 10th: continue implementation of more statistics handling. basic UI with some Google Charts usage.
    • 11th to 20th: improve UI with AJAX modules and make extensive use of Google Charts API.
    • 20th to 30th: exam period.
  • July:
    • 1st to 7th: finalize the first part of the UI and do some hard testing (both to the UI and statistics gathering)
    • 7th to 13th: correct bugs and errors. End with a working implementation of the main statistics needs with a working and fancy UI.
    • 14th to 29th: retrieve feedback from the community. See what could be improved, which parts are still missing, see if there any new additional ideas that could still be implemented, etc.
  • August:
    • 1st to 10th: make corrections, correct errors and finish the final implementation.
    • 11th to 17th: pencils down -> scrub code, write tests, improve documentation, etc

Okay, so now I realize I've made something that might be too specific but changes could be made to this timeline. But in general I think it is feasible :D


4.5) Include as much technical detail about your implementation as you can
Although I still haven't decided which would be the definitive language I would use, I think that maybe the most appropiate one would be PHP for this kind of project.

Implement fast and low cpu consuming methods to retrieve, organize and sort data from SQLs database. I plan on using google charts API in order to plot data. Use AJAX in order to be able to sort and recalculate data without having to reload the current page. Of course: use the Model View Controller pattern.

4.6) What do you expect to gain from this project?

  • Gain lots of general experience (learn, learn and learn :D)
  • Open source development skills
  • Improve my web developing skills
  • Better teamworking skills

4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?

  • It's People (nowadays I don't know almost anyone, but I'm sure I'll find great people here)
  • My willingness to make improvements to the stats project and bring it further and further. Make it awesome.
  • Learn more and more about open source development and its sorrounding (hey.. maybe in a future I can become a mentor to some future student like me)

Practical considerations

5.1) Are you familiar with any of the following tools or languages?

  • Sub­­version: yes
  • C++: yes
  • Python: yes
  • build environments: I’ve used scons once but very roughly

5.2) Which tools do you normally use for development? Why do you use them?
I use to work with Windows and Linux. When it comes to Java and PHP development I use Eclipse (in both Windows and Linux). For C++ projects I use Microsoft Visual Studio (under windows of course) and Codeblocks if I'm working in Linux.

Depending on the size of the project and if I have to do it alone or with other students sometimes I use Sub­­version.

I also like to use Vim for small projects or rapid editing.

Debugging tools: I'm keen on GUI debuggers like the one included in Eclipse, but if it is necessary I can use gdb without problems.

5.3) What programming languages are you fluent in?
C++, Java, PHP and Python. I know C too but I'm not as fluent in it as the others.

5.4) What spoken languages are you fluent in?
Catalan, Spanish and English.

5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)
Barcelona is UTC+1. So based on that I am awake from 8am to 11:59pm (okay, somtimes I go to sleep later, like 01:00am).

I will generally be able to be in IRC from 4pm to 10pm (Monday to Friday) and from 10am to 10pm every weekend.

5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.
I wouldn’t mind. Any way to improve communication flow is absolutely welcome!

This page was last edited on 21 March 2013, at 01:10.