Using Mono.CSharp to evaluate code at runtime

When I read the first time about Mono.CSharp I thought that it was pretty cool and that for sure I will have a use for it soon.

In the past months I have been playing around with a few ideas to make gbrainy extensible using external definition files (something that I did for verbal analogies time ago). I considered using a DSL but I discarded it, at least for the medium term, since I still do not have clear the full set of actions that I would like to expose to users.

I decided finally to use XML plus Mono.CSharp to allow people to describe new games with no limitations. Mono.CSharp allows to evaluate code at runtime and then access the variables to get your results, and also, allowing to select the assemblies to expose. In the case of gbrainy I use it in the game defintion. As example:

<game>
        <_name>Tennis game</_name>
        <type>Logic</type>
        <difficulty>All</difficulty>
        <svg file = "tennis.svg" x = "0.25" y = "0.25" width = "0.5" height = "0.5"/>
        <variant>
            <variables>
                int games = 5 + random.Next (5);
                int rslt = (int) Math.Pow (2, games);
            </variables>
            <_question>There are [games] tennis games played simultaneous.
                 How many different forecast are possible?</_question>
            <answer>[rslt]</answer>
            <_rationale>Every game is an independent event with 2 possible results.
               The total number of possibilities is 2 at the power of [games].
            </_rationale>
        </variant>
</game> 

Notice how you can insert your own code between the variables tags and then reuse the results (referencing it between brackets) in different sections giving a great flexibility in terms of defining new games without full coding.

This really brings a very powerful way of extending your applications to your users, gbrainy is just one of the many use cases for this.

Starting from gbrainy 1.5x all the new games are going to be defined in this way, allowing people to extend, customize and fix them more easily.

jordi | Tuesday 22 June 2010 - 8:35 pm | | Default | One comment

Marató pencaire de Softcatalà, dissabte 19 juny

Aquest dissabte 19 de juny fem la segona Marató pencaire de Softcatalà d'àmbit general. En el passat, havíem fet orientades tasques molt específiques, com les Martons d'OpenOffice.org, de les quals fèiem una cada dos anys.

  Marató pencaire de finals del 2006. 

Objectiu de la Marató pencaire

En els últims mesos vam plantejar-ne la idea de fer-ne sense cap objectiu concret, sinó com una trobada regular cada tres mesos per tal de donar una empenta a aquells projectes que els hi cal, dels quals mai ens falten, i com darrerament havien estat les trobades per enllestir la Guia d'Estil.

També vam pensar que si ens trobàvem en un espai públic i obert, podíem convidar a tots aquells que volen col·laborar amb nosaltres perquè que puguin iniciar la col·laboració amb algú que els pot ajudar in-situ a resoldre els seus dubtes.

Voleu participar-hi?

Si heu col·laborat amb Softcatalà de forma esporàdica o voleu iniciar una col·laboració la Marató d'aquest dissabte és una bona oportunitat. Us aconsellem:

  • Familiaritzar-vos amb els requisits que acostumem a suggerir per a col·laboradors nouvinguts.
  • Llegir-vos la Guia d'estil i el Recull de termes.
  • Si teniu PC portàtil us recomanem que el porteu, sempre es treballa més còmode amb la màquina d'algú, sinó al Citilab tenen PC d'ús públic.
  • Venir amb ganes de participar en la traducció d'algun programari.

Si aneu a venir feu-nos arribar un missatge (jmas arrova softcatala.org) o podeu deixar un comentari en aquest mateix bloc.

Dades

  • Data: Dissabte 19 de juny del 2010.
  • Lloc: Cornellà de Llobregat, Citilab
  • Hora d'inici: 10.00h.
  • Hora d'acabament: 20h com a molt tard. 

Per la meva part

Per la meva part tinc ganes de donar una empenta a una nova edició del Recull de Termes, començant per la llista de termes no recollits que he anat recopilant en els darrers mesos i les esmenes que cal aplicar. En Jordi Serratosa també ha mostrat interès i segurament és on invertirem la major part del temps de la Marató.

Jordi Serratosa i jo mateix (davant del PC) a una Marató recent (foto Pau Iranzo)

jordi | Monday 14 June 2010 - 9:56 pm | | Default | No comments