Difference between revisions of "User:Gabba"

From The Battle for Wesnoth Wiki
m (GSoC Projects)
Line 28: Line 28:
This said, I'm available to work on any other project that helps improve Wesnoth, in case you have something else in mind for me :).
This said, I'm available to work on any other project that helps improve Wesnoth, in case you have something else in mind for me :).
I should mention was also interested by the Eclipse Plugin, the WML debugging, Rewrite wesnoth network stack using boost::asio and the New alliance system, but I had to settle on something.
I should mention that I was also interested by the Eclipse Plugin, the WML debugging, Rewrite wesnoth network stack using boost::asio and the New alliance system, but I had to settle on something.
==Disponibility this summer==
==Disponibility this summer==

Revision as of 05:45, 5 April 2010

This page is related to Summer of Code 2010
See the list of Summer of Code 2010 Ideas


IRC: gabm

  • I'll be on IRC approximately from UTC 15:00 to 22:00.

Wesnoth forums and GNA!: gabba

Languages spoken: French, English, Spanish

Skype: I'll provide my Skype handle on request.

Telephone: Will submit it with my application to Google.


I'm on my third year of a four-year bachelor's degree in Software Engineering at Polytechnique Montréal, in Québec, Canada. This is my last summer as a student, since I graduate next winter.

I've been itching to contribute to Wesnoth for a long time, but the lack of time and especially the size of the codebase were a serious barrier. The Summer of Code seems like the ideal opportunity to start what I hope to be a long-term commitment.

GSoC Projects

I have submitted two proposals:

This said, I'm available to work on any other project that helps improve Wesnoth, in case you have something else in mind for me :). I should mention that I was also interested by the Eclipse Plugin, the WML debugging, Rewrite wesnoth network stack using boost::asio and the New alliance system, but I had to settle on something.

Disponibility this summer

I'm available for the whole GSoC period, from May 24 to August 16. That's 12 weeks of work: 8 before the mid-term eval, 3 between the mid-term and the unofficial pencils down date, and a last week between that and the official pencils down date.

In addition, I'll be free from final exams from May 1st on. Therefore I have an extra free month before the official beginning of the summer of code.

Possible plans for what to do with this month include:

  • take a summer course that'll keep me busy until the end of June; since it occupies about half my weeks I could start the GSoC as soon as may 1st, so in total I would still have a full 12 weeks to work on my GSoC project
  • or, start the GSoC at least two weeks early, and use that "credit" to go on vacations at some point in the summer -- a little mountain hiking helps refresh the mind after weeks of programming! Of course if I do that I'll inform my mentor of my vacations period several weeks in advance.

Overall I intend to follow a regular work schedule as if I was doing an internship at a company's site (like last summer), and therefore I'll work at least 7 hours a day, 5 days a week on Wesnoth.


Google Summer of Code

I haven't participated in a Summer of Code yet.

I did submit a GSoC proposal to Wesnoth last year (Improving Savegame WML), which didn't get accepted, but allowed me to take a good look at Wesnoth's WML-related code and the structure of savegames.


I've worked a year and a half as assistant webmaster for a large company, so I'm able to deal with tight schedules, dealines, and having to manage several projects at a time.

Last summer I did an internship for a scientific group that does research on product lifecycle analysis. My job was to deploy the Geos-chem (http://acmg.seas.harvard.edu/geos/index.html) software at their site, and then do some modifications to it that were necessary to their research project. The technical side: I worked in Pascal (gasp!), Java, Bash script. Human side: I delt with various on-site experts, with the fine folks at Harvard, and with a few software suppliers.


Team projects

I was team leader on several 5-people school projects, with good results.

  • Assemble a robot complete with motor, wheels, microcontroller and sensors, and program it to follow lines traced on the ground and detect and avoid obstacles. This was developed in C/C++ under linux, and cross-compiled for the microcontroller.
  • Program a 3D Pinball game and an editor to create different pinball tables. The choice of technologies was imposed: C++ (for the backend) and Java (for the editor's interface), with JNI and JAWT to glue them together. We used XML to save the pinball tables (using the Xerces library), the Box2D engine for the physics simulation, OpenGL for graphics, FMOD for sound, and a couple smaller libraries for things like calculating the convex shell of a 3D model. We modeled our objects in 3d Studio MAX.
  • Refactoring of our earlier pinball game to add multiplayer gameplay on the network. We chose to implement a client-server architecture where the physics would be calculated on the server; all players share a dome-shaped table and compete for points. Technologies used: the server runs under linux, and we have a Windows XP client and a Windows Mobile 5 (Pocket PC) client. We coded in C++ and C# this time, and we used the RakNet (network), Bullet (physics) and Irrlicht (graphics) libraries.

Solo projects

I also completed successfully a large number of solo projects, here are some samples. Normally you just have to compile and execute, but if you have trouble with some of the samples, contact me.

  • A self-extending Eclipse plugin that dynamically loads classes containing file operations, and adds them to the contextual menu in the Navigator view. It's self-extending, in that it declares an extension point and uses it itself.
    • Note: to load the Eclipse project successfully, you'll need the full distribution of Eclipse 3.5, or at least Eclipse 3.5 with the whole plugin sdk.
  • An OpenGL selection demo, that puts the Composite pattern to good use. The main.cpp is not very clean, but the Composite pattern files are ok.
    • Note: it's a glut cross-platform app. Open and compile with Visual C++ 2008 under Windows, or under Linux, open with Netbeans C++ or just run make.

Open Source Involvement

Battle for Wesnoth: I'm on the forums since 2005. I played a lot, of course, and mainly contributed ideas, especially in the domain of AMLA (units improving beyond their maximum XP level). More recently I submitted a few patches and gained commit access to the wesnoth svn repository.

Submitted patches:

TA Spring (http://spring.clan-sy.com): Contributed a lot of ideas, many of which were implemented; for instance the terrain map that determines regions of the map that hinder or accelerate unit movements. I also submitted one or two small patches.

Irrlicht engine (http://irrlicht.sourceforge.net/): submitted a patch.

RakNet engine (http://www.jenkinssoftware.com/, public source code but not open-source): submitted a patch.

Gaming experience

I'm very passionate about games, and I like collecting and playing all the classic games in every genre, be they recent or old. I also love playing open-source games and following their development. My favorite genres are strategy games, RPGs, and shooter/RPG hybrids. As far as opponents go, I prefer playing against an AI, however I regularly have LAN parties with my friends (and yes, we play Wesnoth!). I also play online from time to time.

In games, I like a good mix of story and gameplay. Up to now I've mainly focused on creating the gameplay part of games, but I'm a pretty good writer (at least in my mother tongue) so that could change.

Wesnoth playing experience

I've played the main campaign (Heir to the Throne) several times, as well as A Tale of Two Brothers and The South Guard, and a lot of user-made content. I'm particularly fond of UMC cooperative RPGs. As said above I regularly have a game of multiplayer Wesnoth.

Communication skills


French is my mother tongue, but I'm perfectly fluent in English, both written and spoken. And I can hold a conversation in Spanish.

Social skills

I'm familiar with forums and the flame wars that can erupt; I generally keep my cool and try to be diplomatic, until people calm down and start reasoning instead of shouting. I give and take constructive advice, but I don't follow every random suggestion that's thrown at me either.

How I work

Overall I'm a very autonomous person, who likes to do a lot of preliminary research. If the specifications are not clear, I'll also discuss a project a lot before getting started on it: I hate wasting effort. This said I recognize the value of risk-management, and I'd rather waste some time prototyping to test several technical alternatives, rather than blindly selecting the first one that I like.

I'm not easily discouraged and I don't drop a project without extremely serious reasons.

Tools are very important for me: I like spending time to set up my development environment, to read enough documentation to use a library properly, and so on. I often make choices that take more time now but will pay off in the long run. Looking back, I'd say this has usually been a good choice.

I have a good comprehension of software development as a process, and the various methodologies (agile, UP) that exist. When designing software I base myself as much as possible on design patterns such as those of the GoF.

Practical considerations

I am familiar with most languages and tools used in Wesnoth:

  • Subversion: used on a daily basis. Now I'm trying to get started on git-svn.
  • C++: 3 years of experience
  • STL: I don't see how I'd program without this
  • Boost: Read up on it a lot (especially the various safe pointers), want to use it, haven't used it much yet.
  • SDL: Never really worked with it
  • Python: Can read/modify it without problems, haven't used it extensively.
  • build environments (eg cmake/autotools/scons): I can write a basic Makefile, and I've compiled Wesnoth with both Scons and Cmake. I've delved a bit into the options for both.
  • WML: I studied savegame WML in detail.
  • Lua: Can read/modify it without problems, haven't used it extensively.

Other languages

I'm also pretty fluent in Java, C#, OpenGL, bash scripting, and I can code in Assembly and Pascal if needed. I can write html and xml/dtds, too.

Other libraries

I've worked with Bullet, Raknet, Irrlicht, Box2D, Xerces, FMOD and Apache httpclient and log4cxx, among others.


I work with Netbeans, Eclipse, Visual Studio, Notepad++, Kate, Geany and everything except Windows Notepad. Currently I'm using Eclipse + Ubuntu GNU/Linux to hack on Wesnoth, and it works pretty well.