-
Notifications
You must be signed in to change notification settings - Fork 2
About myself
This page contains basic information about myself, my background, my motivation for working for the Gambit Project, and the basic original guidelines of my contribution to it inside GSOC.
Hi :)
My name is Alfonso Gómez-Jordana (username: alfongj), and I am a Gambit contributor, starting as it thanks to Google's GSOC 2011 initiative.
I am currently (2011) a second year student taking two simultaneous degrees on Business Administration and Computer Engineering/Science in Carlos III University (Madrid, Spain). My califications have been very good by now (an average of 9.5/10 last year, 9.7/10 this year).

From these studies I have knowledge in, and enjoy, both coding (mostly in Java and Matlab), and Game Theory, so that's why I decided to collaborate in this project.
I am also helping a little in my free time with researches for an Applied Artifical Intelligence Group(GIAA) which works in my Campus, specifically working on Evolutionary Strategies and other genetic algorithms.
Background in mathematics and Game Theory
I have a very good background in mathematics: firstly, while I was at school, I participated in lots of mathematic championships, obtaining very good results (please ask me if you want concrete references). Also, I have a more mature understanding of maths thanks also to a translation I made last year of a mathematics textbook almost on my own, from English to Spanish, for a non-profit organization.
Secondly, during my university degree I have continued studying some branches of mathematics. Calculus, algebra and number theory, from one hand, related to my Computer Engineering studies, and Statistics, Probability and Game Theory, on the other hand, related to my business management studies. In particular, I had a full subject on Game Theory, in which I studied, among other things, finding Nash equilibriums in dynamic (with complete and incomplete information) and static games, finite or infinite games, finding Bayes equilibriums in Bayes games, etc.
Background in computer programming/software engineering In my university degree I am using Java most of the time, although I sometimes have to code in C, MatLab or Assembly. Apart from basic programming, I have had specific subjects on object-oriented programming, software engineering (structuring and time lining work), and data-structures and algorithms.
However, I have not been taught anything related to graphical interfaces. BUT, on my own, I have been playing for some years with:
a) Web design: I know HTML (although not HTML 5.0 yet), some basic Javascript, basic Flash and PHP. And I have more experience with is with design tools, such as Photoshop, Corel Draw, Dreamweaver, Flash, After Effects... (mostly, the Adobe suite), as well as a beginner level with 3D applications (Maya and Blender).
b) Processing: Processing is an open source programming language, based on Java (it is actually Java + some integrated libraries and special framework), in which making graphic applications is very easy and straightforward, while being very "powerful" (there are tons of libraries for it, and visual artists use it a lot). I have been coding in Processing for some years now, and although I haven't done any "big" project with it, what I have done is tons of little games and visual applications, just for fun.
c) Android: Android, as well as iOS, is a very visual-oriented platform, in which GUIs are one of the most important components (if not the most) of applications, so they need to be dedicated a considerable amount of time of design and coding. I have started programming for Android some months ago, and I have also taken an official course on it, so I have an intermediate level on it, and I plan to develop, if I have time, one or two little apps this summer. This can be useful in my project because, as stated, it has made me learn and be more mature in implementing interfaces (although, however, it is touchscreen oriented, therefore there are some differences :) ).
NOTE: For a current and detailed description of the project status, please visit Project-description
My project consists in working with Graphical User Interfaces for GAMBIT (firstly improving and extending the actual one used for representing games in their extensive form, afterwards creating interfaces for other models). Further on, I will possibly as well also immerse myself into creating conversion modules between file formats.
NOTE: For the current timeline I am actually using, please view this Google calendar
For this timeline, I will suppose that my project will consist in taking the three projects I propose in the first section.
Firstly, from the date being told that I'm in the project, until mid-May, I would immerse myself into Gambit and its source code, as well as introduce myself to the other developers and mentors, to "warm up" for the summer.
Then, unfortunately until the 26th of May I have examinations at University, however, on the 27th I would start and work hard to recover the 2 or 3 lost days (I believe the GSoC starts officially on the 24th). From then until the 20th of June or so, I would do the first of the projects (improving the existing GUI for representing games in their extensive form). I would choose this project first as I don't have to code from the start, but continue and extend something already done, which will help me to have more mature and better ideas to take on the second project:
From the 20th of June until the 15th of July (mid-term) I would do the new GUI for representing other type of games, basing myself in the knowledge acquired with the first project.
Then, until the 15th of August, I would do the third project, on converting between file-formats.
Finally, in the last one or two weeks, I would finish documenting and testing anything that I had left without doing so (although I use to test everytime I introduce new components to the program, as well as documentate them), I would also improve or modify anything that my mentor recommends me to do, and, if I have enough spare time, I might try taking on a 4th project.
Also, on a daily basis since I start the project, and if I'm allowed by your organization, I would like to write little updates on a personal blog about my experiences, problems, etc. during this initiative. :)
I will try to keep as much as possible the same programming languages, techniques and styles that were used before I got into the project, that is: ActionScript and Java, mostly, using FlexUnit and JUnit test libraries for testing, an ant script for compiling, Google App Engine for the server and Git for sharing the code.
However, I will also probably use Processing for prototyping as a previous step to whatever I pretend to code, as it is a tool which I know really well, with an easy syntax, and which can make it easier to focus, at first, in usability.