Wednesday, September 10, 2008

Cambios

No hace mucho os comentaba algunos detalles desagradables sobre la licencia de la Enterprise Library de Microsoft.

Pues bien, hoy via el blog de Migel de Icaza me entero de que la nueva version (para .Net 3.5) ha sido publiada bajo la Microsoft Public License que es bastante mas amigable, permitiendo ejecutarla en plataformas diferentes a Windows.

No dejan de ser gratas noticias :)

Tuesday, June 10, 2008

Uno

Tan solo un recordatorio personal

Friday, June 6, 2008

Viernes

public class Friday : WorkingDay
{
public override void Work(Person person)
{
while (this.PreviousDay.StillInParty)
{
person.Drink();
}

Datetime arriveHome = DateTime.Now;
TimeSpan sleeping = this.WorkStartTime - arriveHome;

if (sleeping.Hours < 4 && person.Beers.Count > 10)
{
throw new WorkingDrunkException();
}

}
}

Thursday, May 29, 2008

Notacion Hungara

Desde que estoy programando, me he topado con diferentes estilos a la hora de darle nombre a los elementos de un programa.

El clasico "con una letra sobra" que se empleaba al poner nombres a las variables en basic, cuando programaba con mi C64.

La Camel Case que tanto me gusto que usaba en Java y C++.

Luego llego Vb6 y .Net. Lo primero que me choco fue el que los nombres de los metodos empezasen con mayusculas, como las clases. Pero, la verdad, eso era lo de menos.

Y fue en esos codigos legacy de "Visual Basic" cuando descubri a la grandiosa notación hungara. La idea es anteponer al nombre de la variable informacion sobre su tipo. Si es un miembro de una clase ponemos una m, un parametro de un procedimiento una a, si es un entero una i, un entero sin signo una ui... de esta forma potenciamos la expresividad de la variable por ejemplo:

private int migota; // contador de gotas que han caido en el vaso

Pero esta notación, casi perfecta, puede ser mejorada para albergar aun mas información, hacerla una notación dignos de machos. Asi es como he decidido emplear en mis proyectos la notación hungaro romana. Consiste, en caso de variables numericas, ademas de informar sobre su tipo, informar tambien sobre su rango. Y dado que los desgraciados que inventaron la semantica de los lenguajes no nos dejan emplear numeros en el comienzo de nuestros identificadores, emplearemos para ello numeros romanos.

En el ejemplo anterior, si en un vaso caben entre 0 y setecientas cuarenta y ocho mil ciento doce gotas, la variable quedaria como sigue (ojo al "hack" para solventar la ausencia de numero cero en romano):

private int zeratum_MMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMCXII_migota;

Con esta notación no solo aumentamos considerablemente la legibilidad de nuestor codigo si no además es altamente portable a otros marcos temporales como el medievo o la epoca dorada del imperio romano.

Espero que todos empeceis a emplear tan potente nomenclatura, o por lo menos la notacion hungara.

Solo para terminar:

Me cago en la notacion hungara y la madre que la pario.

Saturday, March 8, 2008

Homenajes al Primer Dungeon Master

Tras la lamentada muerte de Gary Gygax, han sido muchos los homenajes que han ido apareciendo en la red. Os dejo con algunos de ellos, especialmente emotivo el que le han hecho en "The Order of the Stick".

http://www.giantitp.com/comics/oots0536.html

http://xkcd.com/393/
http://betote.wordpress.com/2008/03/05/gary-gygax-dep/
http://kano.amrys.net/?p=136

Por mi parte ya tengo convocado a mi grupo de siempre para una partida de D&D basico, el de borras, con el que todo comenzo para nosotros. Como le gustaba al viejo DM: 3d6 y en orden!

Wednesday, March 5, 2008

Gary Gygax, descansa en paz

Gary Gygax, cocreador de Dungeons & Dragon, y uno de los padres de los juegos de Rol.

Se merece esta esquela en el blog ya que no puedo negar que ha sido una de las personas que mas han influido en mi adolescencia, y por tanto en la persona que ahora soy.

Mientras haya gente que nos reunamos, para matar dragones y tirar dados, seguiras con nosotros.

Que tu alma, este donde este, siga haciendo ruido con huesos de melocoton tras la pantalla.

Friday, February 29, 2008

Microsoft y sus licencias

Ultimamente Microsoft ha estado en boca de todos. Hemos tenido la ultima sancion de la UE a la grande de Redmond, y tambien hemos tenido algunas noticias sobre la comparticion de los protocolos para comunicarse con sus aplicaciones, o incluso la liberacion de la especificacion del formato binario de Word.

No tan ultimamente tuvimos iniciativas suyas coma el Shared Source o sus acuerdos con Novell, los benefactores de Mono.

Todo esto hace pensar que quizas el Grande este sufriendo cambios, aunque no lo conviertan en emblema del software libre como ha pasado con Sun (bueno, quizas lo de emblema es pasarse). Pero entre tanta flor uno siempre acaba encontrandose una mierda como me ha pasado a mi hoy.

En mi empresa trabajamos con .Net, y empleamos la Enterprise Library de Microsoft, una coleccion de soluciones "empaquetadas" para su uso rapido: logs ala log4java, cacheo, acceso a bases de datos...

Pues, bien, resulta que uno de nuestros partners (con los que nos fusionaremos en breve) trabajan bastante sobre linux: el clasico LAMP... asi que me he propuesto tratar de migrar nuestra plataforma a Mono. Bien, el cambio en un principio es bastante directo, ya que no usamos pinvokes ni otras cosas que compliquen la "transformacion". Y cuando lo ves todo tan facil te encuentras con cosas como estas:

http://msdn2.microsoft.com/en-us/library/aa480459.aspx

En la licencia, tras hablarnos de que disponemos de libre distribucion, modificacion y copia siempre que respetemos la licencia actual nos encontramos con el siguiente punto:

(F) Platform Limitation - The licenses granted in sections 2(A) & 2(B) extend only to the software or derivative works that you create that run on a Microsoft Windows operating system product.

WTF!!!

Tanto miedo tiene Microsoft a las otras plataformas? Donde queda eso de que .Net es un framework multiplataforma? Si, ya se que no es lo mismo .Net que la Enterprise Library pero... bueno... habra que esperar a que hagan un remake :S