javisantana.com

subvenciones

En un post de stratos se está comentando el tema de las subvenciones en España y en general la idea que ronda por las cabezas de los asiduos es que suelen usarse para producciones de baja calidad.

Algo que llevo pensando algún tiempo es sobre el tema de las subvenciones al software. En general, cuando hay una actividad que es calificada como una externalidad positiva, esto es, que por su ejecución beneficia a personas que no han pagado por ella, el gobierno trata de “premiar” a esa empresa dándola subvenciones. El caso del software libre (y quizás el freeware) creo que está perfectamente enmarcado en ese tipo de acciones. Por un lado alguien hace su software obtiene cierto beneficio y por otro todas las personas que usan ese software, ya sea para su uso personal, o para modificar su código, se bebefician sin aportar un solo céntimo a los bolsillos del origen de ese soft. ¿cual es la razón por la cual se habla tan poco de este tema?

Java rocks

Últimamente java me flipa cada día más, sobretodo viendo piezas de código tan bestiales como esta. Increíble lo que se puede hacer con tan pocas líneas de código y tal claridad. Un 10 para Sun y sobretodo para su estupenda plataforma J2EE y su soporte para componentes XDD.

sin palabras

Fuente: blog de Jare

España

En un país en el que existen gravísimos problemas de educación de la ciudadanía y con la cultura de que el enfrentamiento a la autoridad es un acto de valentía no se pueden tomar ciertas medidas.

El caso es que desde hace unos años el gobierno invierte una buena cantidad de dinero en enseñarnos lo que debemos hacer cuando nos ponemos al volante, endureciendo las sanciones, aumentando los controles, incluyendo medidas administrativas, como el carné por puntos, y para mejorar la seguridad, como los asientos para niños. Sin embargo, toda esa gente que quizás puede que esté empezando a mentalizarse, a levantar el pie en el cruce peligroso, a beber “solo” 3 copas cuando va a coger el coche o a pensar que puede palmar en la siguiente curva, ve que es posible viajar en un coche sin carné de conducir, a gran velocidad, sin respetar las señales luminosas, atropellar a un peatón que pasaba por un paso para los mismos, darse a la fuga sin ayudar y encima intentar engañar a la policía, sin tiener apenas penalización.

Como siempre en este país cuenta lo negativo y se corrobora que cuanto más cabronazo seas, más posibilidades tienes de salir airoso. Sinceramente al tío ese lo hubiera cortado el rabo en público (previo lavado no siendo que se me pegara algo) para que la gente viera que quien la hace, la paga, y mucho más en un tema tan peliagudo como es el tema de la seguridad vial, en el que cada día veo como mi vida corre peligro cuando voy por la cuidad andando, por la autovía a 120 o símplemente cuando estoy en casa y veo por la ventana como por la cuesta de en frente viene un (jóven) energúmeno con su “tunning” a 100 por una vía de 30 kmh sin saber que acelerar sabemos hacerlo todos, basta con apretar el pedal. Lo que no sabe es que el buen conductor es el que sabe cuando no debe hacerlo.

Una anecdota al respecto es que el otro día a la redacción de TVCYL llegó una noticia en la que un radar “pillaba” todos los días a un “señor” que entraba a las 7:00 a 190 a valladolid (en una zona de 50).

Cagada de 20 minutos

Muchas veces no sé si es que soy tonto, despistado o las dos cosas (posiblemente más juntas). Muchas veces cuando haces algo que reqiuere cierta concentración, por ejemplo un exámen, haces una cosa y en mente tienes otras, relacionadas con ella, que más tarde tienes que hacer. A menudo pasa que se te olvida o que, no sé porque, asocias que esa tarea ya está hecha.

Hoy en TVCYL me ha pasado exactamente eso. La presentadora del informativo de castilla y león ha llegado con una noticia (la del chaval que se tragó una flecha) que había que enviar a TV León. Los envíos de imágenes se realizan a través del mismo canal que se usa para enviar la programación regional a las TV locales y que después estas deben lanzar al aire. Lógicamente estos envíos se realizan cuando se está emitiendo programación local, que es cuando el canal queda libre.

Después de acceder a enviarlo, seguimos los pasos para realizar la conexión en la matriz de video, conectamos un magnetoscopio a el encoder de MPEG2 que a su vez manda a fibra óptica y procedemos a enviar las imágenes.

Después de eso debía volver a dejar las conexiones de la matriz como estaba, de hecho lo tenía en mi cabeza, pero no sé porque no lo hice. Bueno, en realidad, no lo hicismos porque la operación la hicimos entre mi compañero de prácticas y yo. A las 10:59 nos vamos a realización a estudiar el conexionado con tal mala suerte que a las 11:00 empezaba la emisión regional, y digo empezaba porque en realidad no empezó, símplemente empezó a enviar negro hasta que no sé quien dio a la tecla para que redireccionara la emisión local a la regional.

Total, 20 minutos en negro donde debería haber ido telenovela por nuestra culpa. Encima lo hicimos por hacer un favor, con toda nuestra buena intención (el infierno está empedrado de buenas intenciones). Lo peor no ha sido cometer un error, lo peor es que por nuestra culpa el jefe de Continuidad (sala donde se emite todo) se ha visto en un buen marrón.

De cualquier forma ha habido algunas buenas cosas que he sacado de esto:

- No te metas manolete.

- Cuando sea jefe y tenga que broncar a alguien, nunca hacerlo delante de todo el mundo. Digo esto porque el jefe de continuidad se le ha ocurrido broncarnos en medio de la cafetería, con bastante gente delante, cosa que se puede entender dada la cagada. Sin embargo este tipo de cosas pueden dar lugar a que el empleado no se sienta cómodo con el jefe. No ha sido mi caso, soy un becario y además soy humano, creo que no hacen falta más explicaciones.

- Cuando sea jefe antes de broncar a nadie, hay que asegurarse muy bien y hablar con las personas involucradas, porque me ha dado la impresión de que las advertencias, broncas y explicaciones se me han dado exclusivamente a mi, sin implicar a mi compañero.

- De vez en cuando vienen bien alguna cagada de este tipo para espabilar.

Al final todo ha quedado más o menos bien, de todas todas días atrás ya habían tenido 10 minutos de negro por sabe dios qué.
arg!

código del mes

En el juego que estamos preparando para art-futura05 tenemos que hacer un editor para que el usuario se construya sus propios objetos. El juego está fuertemente orientado al 3D, con lo cual el editor tiene que dar un interface sencillo pero que permita controlar perfectamente las 3 dimensiones. Lógicamente el objeto se construye en base a otros más simples que el usuario debe colocar. Aquí es cuando viene el problema, hay que diseñar un sistema que permita que el usuario con el ratón seleccione en su pantalla (un entorno 2D) un objeto que está en un entorno 3D. Para ello OpenGL aporta un mecanismo llamado picking, que dándole las coordenadas del ratón (x,y) te retorna el objeto que se ha pinchado. Dicho así resulta simple, pero tiene algunos escollos que conviene salvar antes de hacer algo decente.

Para resolver el problema he creado una pequeña clase, que, aunque es muy simple, ayuda bastante:

  
class Picking:  
 def \_\_init\_\_(self):  
  pass;  
  self.\_buf = 1024\*\[1\];  
    
 def Init(self, cursor):  
  
  #viewport = \[0,0,0,0\];  
  self.\_buf = glSelectBuffer(1024);  
    
  glRenderMode(GL\_SELECT);  
  
  glMatrixMode(GL\_PROJECTION);  
  glPushMatrix();  
  glLoadIdentity();  
   
  viewport = glGetInteger(GL\_VIEWPORT);  
  gluPickMatrix(cursor\[0\],viewport\[3\]-cursor\[1\],  
   1,1,viewport);  
    
  gluPerspective(45,1.3333,0.2,200);  
  glMatrixMode(GL\_MODELVIEW);  
  glInitNames();  
 def Push(self,i):  
  glPushName(i);  
 def Pop(self):  
  glPopName();  
  
 def End(self):  
  glMatrixMode(GL\_PROJECTION);  
  glPopMatrix();  
  glMatrixMode(GL\_MODELVIEW);  
  glFlush();  
   
  return  glRenderMode(GL\_RENDER);  

De esta forma le das las coordenadas del ratón, renderizas indicando los identificadores de los objetos y al terminar te retorna lo que has pinchado.

Lo paradójico del tema es que mirando después la documentación de pyopengl me doy cuenta que en GL__init__.py hay un wrapper muy parecido a este, pero que en vez de usar una clase, usa una función con un callback, que será la función de render.

En fins.. :_)