jueves 26 de junio de 2008

Conferencias de videojuegos en españa

0 Comentarios

Habrá que animar todo esto porque está muy parado. Este año tenemos tres eventos dedicados a la industria del videojuego en España, lo que anima bastante viendo el panorama. Sólo falta que también tomemos ejemplo de otros países.


Por una lado tenemos el GameLab, que se celebra en mi ciudad natal Gijón los días 10 y 11 de Junio. Los más observadores habréis visto el logo que lo he puesto simplemento porque ayudo un poco en la organización. Si tenéis alguna duda con el programa, podéis consultarme


También se celebra en Valencia el Congreso de desarrolladores de videojuegos en la UPV, del 20 al 22 de Noviembre.


Por última, pero no menos importante, también en Valencia y en la UPV tenemos GameOn del 17 al 19 de noviembre.



martes 10 de junio de 2008

Nuevos contenidos!

0 Comentarios

He añadido algunas cosas más al blog. Esto tiene un poco de descontrol porque la verdad, es que voy añadiendo cosas según las descubro y si me parecen interesantes. El que quiera organización, pues la verdad aquí no la va a encontrar ;)

Lo primero es un calendario de google, donde iré poniendo eventos más o menos interesantes. Se acepta cualquier tipo de colaboración, ya sea comentando algo en cualquier entrada, o directamente al mail gmail-envelope y así podré añadirla (ya que es un calendario público de google calendar, y no se muy bien si se pueden compartir, o cómo) Esperemos que sea útil.

La otra es una nueva sección para alimentar mi ego: una serie de links a algunos de mis proyectos que he subido a Google Code:

Para empezar el Columnas: un clon del Columns en J2ME que programé hace un par de años. Tengo la mala costumbre de comentar bastante el código, y de aquella lo hacía en español, así que espero que a alguien le pueda servir.

 

Y luego MIDP10GameAPI, una implementación de la API para videojuegos que se incluye en los dispositivo MIDP2.0, de forma que podamos utilizar casi el mismo código e implementarlo para dispositivos MIDP 1.0.

Aunque sea por software no va nada mal (rinde igual que la implementación nativa en mi Nokia 6630) Al parecer sólo los dispositivos de gama alta lo aceleran por harware, así que la única desventaja que tiene que es no sigue la API de MIDP2.0 exactamente igual por limitaciones de los dispostivos MIDP10, y que ocupa espacio, algo de lo que los móviles más antiguos, que serían el target de esta librería, no van muy sobrados precisamente.

Como nota curiosa, sun liberó una implementación de MIDP2.0, incluyendo el GameApi, y no es especialmente diferente de lo que yo hice en su momento. ^_^

Sólo me falta encontrar un documento que tenía de introducción a la programación en J2ME y así puedo poner otra entrada :)

lunes 9 de junio de 2008

KeyNote de Jobs en la Apple WorldWide Developers Connection

0 Comentarios

Dado que ya soy un Maquero de pro, (aunque esto lo siga escribiendo en Windows y la partición de BootCamp ya la tengo preparada :P), pues digo yo que ahora habrá que abrazar la religión y acudir raudo y veloz a los sermones anuales.

O no, por que lo que me interesa es que en esta conferencia se presentarían cosas sobre el iPhone, y dado que yo tengo la versión barata, pues no está demás saber por dónde van a ir los tiros. El puntazo del iPhone 3G a 199$ es jugoso pero muchísimo, y a me da igual que la parte posterior sea de plástico si me lo ofrecen por 200$ menos y le meten 3G, GPS y una mejor batería.

Cuál es mi sorpresa al descubrir que se han presentado algunos juegos, y disponibles a precios más o menos asequibles (sobre los 10$). Incluyendo por parte del estudio español Digital Legends llamado Kroll

kroll2

Pues nada, en cuanto acabe algún libro de los que estoy leyendo habrá que pillarse uno de Objective C

Infraestimando

6 Comentarios
Actualmente estoy desarrollando en el trabajo un proyecto en c#. Soy un programador solitario ( y arquitecto, y tester :P )
El caso es que el proyecto lleva algo de retraso, en parte por una estimación inicial más que optimista, en parte por el hecho de que no había una deadline definida y en gran parte porque se aumentaron las especificaciones iniciales, aunque eso fuera idea mía.

En este punto (sobre todo por la parte de "aumentar las especificaciones iniciales") los que hayan llevado algún proyecto probablemente ya tendrán una migraña causada por el zumbido de su
sentido arácnido.

El caso es que está última semana colmé mi vaso personal cuando yo mismo -sin presión externa alguna para mas inri- establecí una fecha para un entregable que no pude cumplir. No fue un problema grave ya que sería un retraso de sólo un día ya que me comprometí a trabajar
en ello durante el fin de semana, pero quiero evitar ésto último a toda costa: si quiero programar el fin de semana tengo mil proyectos personales por terminar (si, soy un procrastinador de libro)

El caso es que me retrasé por no centrarme en lo que el cliente requería: añadí funcionalidad que no era indispensable (que me permitió crear casos de prueba unitarios, algo que me habría ahorrado literalmete horas de haberlo hecho antes) me puse a refactorizar el código antes de terminar la funcionalidad nueva (que en algunas partes realmente lo necesitaba, todo sea dicho, ya que por ejemplo si quería soportar una versión nueva de la aplicación con la que me tengo que conectar tenía que tocar código en 5 módulos distintos)
Las mejoras me han hecho la vida más fácil, si, pero tenía que haberlo pensado antes y haber dado una fecha posterior.

La moraleja que he sacado de esto:


si tenéis la suerte de poder elegir vosotros mismos una fecha de entrega ¡no la caguéis estableciéndola!

En fin, espero que esta reflexión sea útil a alguien más, pero básicamente esa es mi excusa por haber dejado el blog tan abandonado estos días.

martes 3 de junio de 2008

Beyond Good & Evil 2

2 Comentarios
En los recientes UbiDays se ha revelado que Beyond Good & Evil, el IMHO genial juego de Michael Ancel, el creador de Rayman ;) tendrá segunda parte.

Ubisof dice que el trailer está creado con el motor de juego y la verdad es que no pinta nada mal. Sin embargo considero que ha perdido un poco de su esencia al tener un aspecto más "mature". En fin, es sólo un teaser, así que ya veremos en qué queda todo.






Si no has jugado al primero ya estas tardando, te estás perdiendo un juego muy entretenido, con una historia efectiva, y además con un cuidado doblaje al español lo que últimamente casi es un lujo. Encima el juego es sencillo, así que no te tirarás de los pelos intentando terminarlo. Y teniendo en cuenta que está tirado de precio, no hay excusa.
Yo recomendaría jugarlo en consola, porque la versión PC no tiene soporte para pad. Al parecer en esa epoca Ubisoft estaba un poco tontuna, ya que por alguna razón algunos de sus juegos multiplataforma e no tenían soporte para pad en su versión PC. Anda que no se echaba de menos en el Splinter Cell, que salió en esa época, aunque al menos si lo implementaron en el Prince of Persia: Sands of Time, que también se estrenó entonces.
Supongo que empezaréis a imaginaros porque BG&E no es muy conocido: al lanzarse junto con estos otros dos juegazos, pues fue eclipsado.

lunes 2 de junio de 2008

Las comparaciones son odiosas

0 Comentarios

Aquí tenemos una oferta de trabajo de verano en Fog Creek Software, empresa de Michael Pryor y Joel Spolsky, este último os sonará más ya que es el creador del archiconocido blog Joel On Software. Antiguo empleado de Microsoft, y responsable en parte del desarrollo de Excel, muchos de sus post, aunque no son particularmente técnicos, no tienen desperdicio (por ejemplo)

La cuestión es que a pesar de haber visto en su web miles de veces que ofrecían prácticas en su empresa, hoy me dio por mirar las condiciones, y casi hubiera sido mejor que no lo hiciera:

  • Weekly stipend of $750 (WTF!)
  • Free housing in an area dorm (usually with private rooms)
  • Free gym membership
  • Free MetroCard (gets you on any bus or subway in New York)
  • Free soft drinks
  • Free lunches

Vamos que te dan casa, acceso a gimnasio, transporte comida y bebida gratis... y encima te pagan un sueldo semanal!

Y encima si hacemos caso a su página web y nos creemos algunos de los proyectos típicos que según ellos ofertan:

  • A dynamic, check-as-you-type spell checker—entirely using AJAX
  • Highly optimized Monte Carlo simulations for project scheduling
  • An ASP to PHP compiler
  • Bayesian Filtering code to filter spam and sort FogBugz email messages into areas automatically
  • Adding SSL security to VNC
  • A powerful Flash-based chart engine

True Story...Te pueden gustar más o menos, pero al menos no es la típica aplicación de gestión / web dinámica de siempre. Son realmente interesantes.

No voy a poner ofertas de becas de informática de mi ciudad, porque sería demasiado fácil, pero tampoco quiero ser parcial, ya que posiblemente he escogido una empresa que realmente cuida al programador, de hecho es una de las razones de ser de la empresa como ellos mismos publicitan.

 

En fin, ¿alguien conoce alguna empresa con condiciones suculentas? aparte de CoffeCup, con sus futbolines 

smile_nerd

A Programming Job Interview Challenge #6

3 Comentarios

Solution in English below.

En fin, me perdí el reto de la semana pasada, aunque tampoco me molesta mucho, ya que no conocía la solución y no tuve apenas tiempo libre para pensar en ella. La pregunta de esta semana es relativamente sencilla (aunque también era sencilla la última que contesté, y la compliqué de narices):

Look at the following Code segment written in C#:

ArrayList a = new ArrayList();
ArrayList b = new ArrayList();

a.Add(1);
b.Add(1);

a.Add(2);
b.Add(2.0);

Console.WriteLine( a[0] == b[0] );
Console.WriteLine( a[1] == b[1] );

What will be typed into the console? And WHY? Hopefully you will “play fair” and  won’t type it in Visual Studio to see the output, you are in a job interview after all…


 


Y la solución:


Both Console.WriteLine() statements will print 'false'.


The reason is that ArrayList internally holds objects, and when we insert an integer, which is a value type. As we are inserting a value type to a collection which holds reference types, Boxing comes into play. This is what it is really happening behind the scenes when we call the ArrayList.Add() method:



  1. A new object is created in the managed heap
  2. The the integer is copied from the stack to the memory location of the newly created object
  3. The object, which now holds the integer, is inserted in the array list.

So, when we access the ArrayList with the indexer it obviously returns the object it was previously inserted, so what the equality operator is actually comparing two different objects, created during the Add() method call. As they are two different objects and as the == operator implementation for object types compares references, the comparison returns false.


What could be more puzzling is that if we use the Object.Equals() method, we get what it could be the correct expected solution:


ArrayList a = new ArrayList();
ArrayList b = new ArrayList();

a.Add(1);
b.Add(1);

a.Add(2);
b.Add(2.0);

Console.WriteLine( a[0].Equals( b[0] ) );
Console.WriteLine( a[1].Equals( b[1] ) );

The above code prints 'true' and 'false'


Why Equals compares the values and not the reference? After all, the default implementation of Equals, also compares references according to the documentation...


The reason is that Object.Equals() is a virtual method which is overwritten in ValueTypes to use a bitwise comparison. As the integer -which is an alias for Int32, which derives from ValueType- is boxed inside an Object, and Object is the base class for all types in .NET CTS (and that of course includes ValueType ), a polimorfic call to integer.Equals() its made, which compares values, and not references.


So the first comparison is true, as both values are the same, but the second comparison keeps returning false, because value 2 and value 2.0 were two different types (integer and double respectively) in the first place.

domingo 1 de junio de 2008

Artículo: Arquitectura de motores 3D

0 Comentarios
Aquí está el link a un interesante artículo que he encontrado en el blog de Pablo Zurita, sobre arquitectura de motores 3D paralelizables.
Es de hace casi un año, pero merece la pena igualmente.