Difference between revisions of "User:Gabba"

From The Battle for Wesnoth Wiki
(Added a sample of my programming work)
m (Solo projects)
Line 59: Line 59:
  
 
*[http://docs.google.com/leaf?id=0B3kerkXfqhATMGI5MDg5NGEtOWZmYy00MjZhLWE1MjItMTA5ZWJmNTM2NTRkA| 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.
 
*[http://docs.google.com/leaf?id=0B3kerkXfqhATMGI5MDg5NGEtOWZmYy00MjZhLWE1MjItMTA5ZWJmNTM2NTRkA| 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.
  
 
==Open Source Involvement==
 
==Open Source Involvement==

Revision as of 04:11, 5 April 2010

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



Contact

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.

Introduction

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.

I have nothing planned for the summer except the GSoC and a two-weeks vacation, which has no set date at this point.

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 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.

Experience

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.

Work

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.

School

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.

  • 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.

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

Language

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.

IDEs

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.