Google
 

jueves, octubre 02, 2008

RockScroll

Nunca me pude imaginar que una chorrada tan grande pudiera llegar a ser tan útil. RockScroll es un addin para Visual Studio que muestra una pequeña previsualización del código que estás editando.

miércoles, septiembre 17, 2008

Mercadillo de máquines virtuales

Más allá de la guerra por los navegadores (IE, Safari, Firefox, Chrome, etc...) hay otra guerra bastante importante y sumamente silenciosa, la de las máquinas virtuales.

Sun tiene a Java, Microsoft a la plataforma .Net, Apple a LLVM y el software libre a Parrot.

Aunque Parrot promete bastante, aún esta lejos de conseguir una versión estable. La batalla está entre .Net y LLVM. Y sinceramente creo que el ganador va a ser LLVM. MSIL está realmente muy bien pero tiene serias limitaciones, en cambio con LLVM todo son ventajas. Es multiplataforma, soporta optimización de código, soporte para diferentes maquinas virtuales (¡¡incluso soporta IL!!), etc...

La única razón de usar Reflection .Net en lugar de LLVM es que vayas a crear un producto exclusivo para .Net. Para todo lo demás LLVM.

martes, septiembre 16, 2008

En una palabra...

¡¡¡Mierda!!!


Stack Overflow

Al fin han hecho pública la beta de Stack Overflow. Una web mezcla entre foro y digg por y para programadores. Promete bastante, detrás del proyecto hay gente como Joel Spolsky (Joel on Software) y Jeff Atwood (Coding Horror).

jueves, agosto 21, 2008

Incluso Hitler opina sobre OpenGL 3.0

Un vídeo genial que ayudará a entender a cualquiera a que viene tanta polémica sobre la nueva especificación de OpenGL.

lunes, mayo 26, 2008

Mierda analógica

¿Qué coño pinta un punto ahí? Debería dar error al compilar. Me voy a cargar al que lo haya puesto, siempre tienen que cagarla. Pero que extraño, el punto está fijo en pantalla aunque mueva la ventana arriba y abajo. ¿Será un problema del Visual Studio? ¿Pero y si fuera...? No, no puede ser eso. Miro para uno y otro lado para asegurarme de que nadie me esté mirando. Rasco un poco la pantalla con la uña. Más mierda analógica (literalmente). Vuelvo a mirar a ambos lados, me pego una colleja imaginaria y sigo con lo mio.

martes, mayo 20, 2008

Una de versionitis

- Nueva versión de Panda 3D la 1.5.0. Me encanta este motor, no porque sea el mejor (que no lo es) si no porque tiene algo que difícilmente se ve hoy en día. Es simple y efectivo, algo que no está de moda. Si lo único que quieres es hacer un juego, sin importante los detalles técnicos ni que lleve lo último de lo último éste es tu motor. Absolutamente 100% recomendable.

- Versión 2.4.6 del Blender. Entre otras mejoras están algunas mejoras en su motor de juegos y bastantes cambios en el API para python.

- CLISP 2.45... ¡¡¡con soporte JIT!!!. Estos chicos están que barren. Puede que SBCL sea más rápido pero CLISP para Windows es mucho más estable. Ahora faltaría comprobar si al hacer ejecutables siguen ocupando varios megas como en las versiones anteriores.

viernes, mayo 09, 2008

Chistes para programadores

¡Toc toc!
- ¿Quién es?
Una pausa larga.
- ¡Java!

Más chistes igual de buenos.

martes, mayo 06, 2008

Bye bye ASCII!!!

Ya es un hecho. Unicode ha ganado la partida.

¿Que tú eres programador y crees que eso no te afecta? Sólo te diré una cosa: un carácter ya no es un byte. Joel nos avisa sobre ello.

Un programador que no sepa como funciona el Unicode es como un químico que no sepa lo que es la tabla periódica.

lunes, abril 14, 2008

Un ordenador gana a un maestro del Go

En 1997 un ordenador venció por primera vez al campeón mundial de ajedrez. Desde entonces se ha considerado este juego como resuelto por los ingenieros de inteligencia artificial. El siguiente bastión a superar es el Go.

Para que os hagais una idea. Para vencer en el ajedrez, un ordenador calcula todas las posibles jugadas y las puntua escogiendo la de mayor puntuación. Por eso en 1997 necesitaron un supercomputador, ya que hacía falta un ordenador que pudiera calcular todos los movimientos posibles en pocos segundos. Pero para el Go es totalmente imposible usar el mismo método ya que hay más jugadas posibles que átomos en todo el universo.

El dia 9 de Abril los de INRIA, usando su MoGo, han conseguido ganar a un maestro del Go en un tablero de 9x9 (los que se usan para aprender, los normales son de 19x19). Puede parecer poca cosa pero sabed que hasta ahora los programas que jugaban a Go podían ser fácilmente vencidos por jugadores principiantes.

Me resulta especialmente curiosa la técnica que han usado. Un algoritmo semi-aleatorio.

lunes, marzo 31, 2008

¡¡¡Adobe Director 11!!!

Me sorprende que el no haber visto ni una sola mención a este notición.

Después del culebrón de que si Adobe quería deshacerse o no de Director, y de prometer una y otra vez que habría una nueva versión tras el Director MX 2004 (genial pero ya algo desfasado en el tiempo). Podemos afirmar, al fin, que ya hay nueva versión: Adobe Director 11.

He probado mil y un motores 3d integrados en web y puedo afirmar que ni uno sólo (con perdón de Unity, pero es que no tiene editor para Windows) logra acercarse a Director. Y no es que Director sea lo mejor de lo mejor (que de hecho no lo es), es que los demás motores 3d para web dejan mucho que desear (bugs a porrillo, usabilidad nula o que únicamente soportan el próximamente extinto ActiveX).

A día de hoy, la única alternativa seria para hacer 3d decente integrado en web es Adobe Director 11 (con perdón de Unity nuevamente).

viernes, marzo 28, 2008

Los más grandes RPGs

Recientemente han publicado en Gamasutra un artículo con los RPGs japoneses que más influyentes (imperdible).

Como gran fan de los RPG que soy, me he llevado una gran sorpresa al descubrir Earthbound (SNES). Una autentica obra maestra. Este juego refuerza mi opinión de que la SuperNintendo ha sido la mejor consola de la historía consolariana.

Da igual que los juegos actuales lleven lo último de lo último en 3D, que sean capaces de mover millones de polígonos o que soporten trescientos quinquillones de shaders... el pixelart de Earthbound es simplemente inigualable.

miércoles, marzo 19, 2008

Te sientes como el último ser de la tierra cuando...

...haces tu visita diaría a las páginas más populares de programación en del.icio.us y contemplas estupefacto que no hay ni el más mínimo enlace.

¿Es que soy el único pringado que tiene que ir a trabajar hoy? Es una pregunta retórica, por favor no la respondáis que me deprimo.

martes, marzo 18, 2008

Usando gdb con DLLs

Es perfectamente posible pasar las librerías DLL por el gdb. Como es algo que no se ve enseguida en la documentación os explico este pequeño "truquito":
$ gdb ejecutable.exe
(gdb) dll-symbols libreria.dll
(gdb) break funcion_de_la_libreria
(gdb) run

lunes, marzo 17, 2008

Nueva versión de Panda 3D

Panda 3D es un motor 3d centrado principalmente en Python. Aunque también se puede usar en C++ no es su objetivo.

Acaba de salir la versión 1.5.0 de este estupendo motor. Puede que hayan motores 3d mucho más potentes pero no son ni de lejos tan fáciles de usar como este.

Como única pega veo que sigue usando el mismo sistema simple y cutre para físicas. Llevo milenios leyendo en el foro que es algo que cambiarán en futuras versiones pero parece que nunca acaba de llegar. Pero no os desengañéis para la gran mayoría de proyectos no hace falta un motor de físicas potente.

Es un motor que recomiendo al 100%.

miércoles, marzo 05, 2008

Una linea de comandes decente para Windows

El terminal que viene por defecto con Windows apesta, simple y llanamente. Microsoft, consciente de ello, sacó hace tiempo el Windows PowerShell que aumenta enormemente el potencial de la linea de comandos. Pero a los que nos gusta el shell de Linux/Unix no nos acabamos de sentir cómodos. Por suerte tenemos Cygwin, que supongo que todos conocereis, pero Cygwin usa el cutre-terminal de Windows.

La gran noticia es que se puede usar el terminal del PowerShell con una shell bash de Cygwin. Cread un nuevo acceso directo que diga:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command "& {c:\bin\cygwin\cygwin.bat}"

Y listo. Tendréis un bonito shell con un terminal decente sobre el que poder trabajar. Es rápido y al fin podréis cambiar el tamaño de la ventana al vuelo.

Nota: canviad c:\bin\cygwin\ por el directorio donde tengáis instalado cygwin.

viernes, febrero 29, 2008

¡Ahora lo tengo todo mucho más claro!

No me quiero ni imaginar que sería de mi vida sin la útil ayuda de mi tan querido (notad el tono irónico) IntelliSense.

Como hecho de menos SLIME cuando programo en C++.

martes, febrero 26, 2008

Programación basada en celdas

Haced una imagen mental de una hoja de cálculo:

- En la celda A1 aparece la última tecla pulsada.
- En la celda A2 hay una fórmula que da 1 cuando la celda A1 es la tecla derecha IF(A1=33;1;0).
- En la celda B1 se pone a 1 cuando hay un obstáculo a la derecha del personaje y a 0 cuando no.
- La celda C1 es la formula A2 AND NOT B1. Con lo cual esta celda se pone a 1 cuando se está pulsando la tecla derecha y no hay ningún obstáculo a la derecha del personaje.
- Por último ya sólo faltaría que mientras C1 esté a 1 hay que mover el sprite del personaje a la derecha.

¿Que conseguimos dividiendo el programa de esta forma? Un programa mucho más modular, con menos interdependencias entre los módulos y con una gran facilidad de añadir condiciones sin tener que incrementar la complejidad del programa.

Una celda contiene un valor o una fórmula basada en otras celdas. Cuando el valor de una celda cambia, todas las otras celdas conectadas actualizan su valor de forma totalmente transparente. También podemos añadir observadores a las celdas que nos informen de cuando el valor se ha cambiado y así poder actuar en consecuencia.

En resumen; estoy hablando de como se podría aplicar la programación basado en celdas a los videojuegos.

No conozco ninguna librería para C/C++ pero podéis trastear con Cells para lisp o los models para factor (ya viene por defecto en la librería). Otra opción, aunque ya se aleja un poco de la idea original, es tirar de alguna librería orientada a aspectos para C++.

Este era un ejemplo bastante sencillo pero la gama de posibilidades que ofrecen las celdas es apabullante. En el caso de Cells, se ha usado, entre otras cosas, para implementar todo un sistema GUI encima: Cello.

martes, febrero 19, 2008

Motor isométrico + Luces realistas

Daniel Olofsson está montando un motor isométrico pero con la pecularidad de que soporta per-pixel lighing  y shadow mapping. Ver estas técnicas en motores 3d es bastante habitual, pero nunca se me había ocurrido que se podría implementar en un motor isométrico de los de toda la vida. Las capturas son impresionantes.

lunes, febrero 18, 2008

Breve historia del algoritmo

"[...] Se piensa que el primer algoritmo no trivial es el algoritmo Euclídeo para el cálculo del máximo común divisor. El considerar los algoritmos como objetos en si mismos se remonta a la época de al-Khowarazmi, un matemático persa del siglo IX, con cuyos escritos también se introdujeron los números arábigos y el álgebra en Europa. [...]"

Podríamos datarlo más o menos en el 300 a.C.

miércoles, febrero 13, 2008

Filmation

El PixeBlog de Pedja ha publicado una entrada genial sobre aquellos juegos con perspectiva isométrica que usaban la conocida técnica de filmation.

Como seguro que os entrará el mono de jugar a alguno de esos juegos no os olvidéis de jugar al remake de Head over Heels.

viernes, febrero 08, 2008

Forth en español

Navengando por Internet he encontrado lo que parece ser el único libro de Forth en español.

Enlace directo

Web

miércoles, febrero 06, 2008

Thinking Forth

En el mundo de los ordenadores todo lo que no se renueve en menos de un mes queda obsoleto. Pero a veces alguien tiene la lucidez suficiente como para hacer algo que dure durante más de diez o veinte años. Son estas pequeñas joyas las que me maravillan pues suelen encerrar un tipo de filosofía totalmente diferente a la que estoy acostumbrado.

Hace 33 años apareció el libro The Mythical Man-Month todo un clásico indiscutible, un libro que ha marcado la vida de muchos programadores. Pero hay otro no tan conocido que tiene igual mérito: Thinking Forth. Libro que a pesar de tener 24 años tras sus espaldas explica una filosofía y una forma de hacer las cosas que sigue estando totalmente de actualidad (tal vez más que nunca).

No os dejéis engañar no es un libro de Forth, es un libro sobre la filosofía que hay detrás de Forth.

miércoles, enero 30, 2008

Arc

Tal y como prometió Paul Graham, ha hecho público el código fuente de Arc. Está publicado bajo la licencia Perl Artistic License, licencia que permite hacer casi de todo excepto cambios significativos al código (sólo el autor original puede decidir sobre esto).

Cuando leí hace tiempo sobre Arc pensaba que se trataría de un nuevo compilador para un nuevo lenguaje. Pero me ha sorprendido gratamente que en realidad todo el sistema corre sobre MzScheme, algo así como una segunda piel (palabras del propio Paul Graham). Pero así y todo no os dejéis engañar ya que Arc se parece tanto a Scheme como Scheme a Lisp.

Podríamos resumir a Arc como un Lisp con un lavado de cara para los nuevos tiempos. 100% recomendable para programación web (es para lo que fue creado).

No os olvidéis de leeros el tutorial para tener las cosas un poco más claras.

miércoles, enero 23, 2008

Internet Explorer vs Mozilla

Como hacer un plugin (que no extensión) para Mozilla:
- Aprendes C
- Te bajas el SDK
- Compilas el codigo de ejemplo y listo
Como hacer un plugín para Internet Explorer:
- Aprendes C
- Descubres que la compatibilidad con Netscape la eliminaron con el IE 5 así que vuelves a empezar
- Aprendes C++
- Aprendes MFC
- Aprendes COM
- Te pasas las horas muertas buscando un ejemplo en el MSDN
- Compilas el ejemplo y descrubres que no compila. Lees un poco el código fuente y te asustas al ver que parece estar escrito antes de la primera guerra mundial
- Intentas encontrar otro ejemplo en el MSDN
- Finalmente desistes
Es tan horrible programar plugins para el IE que incluso los de Mozilla han creado un ActiveX para el IE para hacer compatibles los plugins del Mozilla con el IE.

Es más, para Mozilla en el 90% de los casos no hace falta programar un plugin, con una extensión tienes más que de sobra.

jueves, enero 10, 2008

¿Porqué los sistemas operativos están en C?

No me refiero a esos sistemas operativos de juguete que pululan por la red, sino a los que son productivos: Windows, Linux, MacOS, etc... No es que no quieran usar otros lenguajes radicalmente diferentes, es que ni tan siquiera se atreven a tirar de C++ (MacOS con su Objective-C poca diferencia tiene con el C normal).

Después de mi visita diaria a Reddit lo he visto claro. No es cuestión de encontrar una respuesta sino de encontrar la pregunta correcta (como dirían los budistas). La realidad es que no hay lenguajes malos para crear un S.O. lo que hay son CPUs que no se llevan bien con determinados lenguajes.

Y es que después de que se programara el primer Unix en C, las CPUs han tendido a acomodarse más a este lenguaje. La forma en que trabaja el lenguaje ensamblador de, digamos por ejemplo 8086, está íntimamente ligada a la forma en trabaja el lenguaje C.

Una prueba de lo que digo son las Lisp Machines y las CPUs para Forth. ¿Porqué si no hacer CPUs para unos lenguajes en concreto? Pues porque una CPU modelada para usarla con C nunca se podría exprimir al máximo con Forth (por ejemplo).

viernes, enero 04, 2008

¡Lo han vuelto a hacer!

En la última entrada os comentaba la extraña fiebre que corre en estos tiempos en cuanto a nuevos lenguajes de programación se refiere. Pensaba que ya lo había visto todo, craso error.

Ya conocía Forth, un lenguaje bastante extraño que ya conocía de hace bastante tiempo (lo justo para saber como sumar números, declarar funciones y poca cosa más). Forth tiene el bizarro honor de ser el único (que sepamos al menos oficialmente) lenguaje con el que se ha logrado sacar una aplicación comercial con cero bugs (¡sorprendente!).

Pues bien, a lo que iba. Factor es un nuevo lenguaje de programación basado en Forth. Forth es de bajo nivel, mientras que Factor pretende convertirse en un Forth de alto nivel.

Realmente vale la pena echarle un vistazo. Esto promete, y mucho.