Vistazo a la API de OpenGL para Dibujar

Ayer me encontré con este dibujo:


Llamadas para Dibujar de OpenGL 3.3

Dibujando con OpenGL 3.3


Este dibujo muestra visualmente las llamadas a OpenGL versión 3.3 para dibujar geometría en la pantalla. Puede resultar una buena referencia para recordar las diferencias entre las distintas invocaciones para dibujar mediante Vertex Arrays.

En el dibujo se encuentran ausentes todas las llamadas correspondientes al rendering mediante Modo Inmediato y Dispay Lists, las cuales fueron marcadas como obsoletas a partir de OpenGL 3.2.

Visto en: http://tartley.com/?p=1045

Posted in Computación Gráfica, OpenGL, Programacion | Comments Off on Vistazo a la API de OpenGL para Dibujar

"Me la Complicás" -Todo lo que está mal en Ancel

“Me la Complicás”. De todo lo sucedido hoy, éstas son las tres palabras que hicieron la impresión más fuerte en mi. Las escuche de boca de una funcionara de Ancel en lo que puedo describir como una miserable experiencia como cliente de una empresa Uruguaya de telefonía móvil.

Desde hace días estoy intentando hacer un “agregado” con un plan de datos 3G a mi contrato. Se trata de un procedimiento que implica duplicar el monto mensual que tengo que pagar en mi factura y que uno pensaría que una empresa normal estaría interesada en que yo (y todos sus clientes) adquiriera. Ancel, sin embargo, no es una empresa normal, sino que por el contrario, parece estar empeñada en hacerme las cosas lo más complicadas posible antes de proveerme el servicio, al punto de dudar seriamente si debería continuar siendo cliente de esta compañía.

Esta historia es larga, pero creo que deberías leerla, sobre todo si eres Uruguayo.

Continue reading

Posted in Empresas | 10 Comments

Discontinuación de Windows y Rechazo al Cambio

El otro día leía en OSNews acerca del fin de soporte inminente para varias versiones Windows, incluyendo Windows XP Service Pack 2, Windows 2000 y Windows Vista RTM, donde a los usuarios de dichos sistemas operativos se les recomienda cambiar su sistema para “mantenerse seguros, al día y felices”.

Desde hace tiempo quité completamente a Windows de mi stack tecnológico (por así llamarlo), no haciendo uso de él para más que para proyectos puntuales del trabajo (o algún juego puntual de vez en cuando que no anda en Linux). Debo reconocer, sin embargo, como la gente sigue haciendo uso de Windows XP.Linux Logo

Recuerdo en los viejos tiempos, cuando yo era recien un novato en Linux (joven e ingenuo). En aquellos tiempos usaba Debian en mi viejo laptop Toshiba y quería convencer a la gente de probar hacer lo mismo. Quería mostrarles que existía una forma diferente de hacer las cosas. Que habían alternativas. Que probaran Linux.

Sin embargo, casi siempre me encontraba con una negativa…

“Que eso es complicado, que nadie lo usa, que eso no anda, que no me andan los juegos, que no me anda el Visual Studio, etc, etc…”

Si hoy me preguntás si perdía el tiempo, te diré que no.

No me arrepiento de haber al menos intentado, ya que durante esos años aprendí una cosa muy importante: la gente rechaza el cambio. Le tiene pavor.

He llegado a escuchar argumentos de todo tipo en contra del uso de Linux, desde fanatismo puro hasta argumentos sólidos y lógicos. Si bien el resultado era siempre el mismo, realmente me puse a pensar si había alguna razón de fondo común a por qué la gente parecía tan cerrada en este aspecto.

No logré entenderlo hasta que Windows Vista salió al mercado. Cuando Vista salió, a Microsoft le pasó exactamente lo mismo. Fue ahí cuando me dí cuenta: lo difícil de convertir la gente a Linux no era el hecho de “vender” Linux, sino el hecho de pedirles que que prueben algo distinto de lo que conocen.

Cuando Microsoft se encontró con este problema, ellos lo resumieron en una frase que hasta hoy recuerdo:

“Nuestra mayor competencia es nuestra base instalada.”

El reto de Vista era hacer que la gente dejara XP, tarea en la cual por cierto, fracasó miserablemente. Windows XP vivió y vivirá más que su supuesto sucesor.

XP Wallpaper RotoEl problema del rechazo al cambio es un golpe duro para Microsoft, quien se ve forzado a realizar soporte a un código base de al menos 9 años de antigüedad, todo parcheado por donde se lo vea y con afluentes de código de hace hasta 15 años. Es una pesadilla, es sorprendente que algo así no se caiga a pedazos.

Sin embargo, la gente “está contenta” con “su” XP y si por ellos fuera, no lo cambiarían ni ahora ni en 9 años más. La gente está arraigada. Ni siquiera gente que hoy es estudiante de Ingeniería en Informática puede sacarse el rechazo y miedo que le genera tener que “empezar de cero”.

Yo aprendí la lección durante un par de años de intentos de mostrar otro camino a la gente. Hoy mi postura es muy distinta. Sigo siendo un Linuxero, pero también soy abierto a otras alternativas (como Mac). No condeno a quien utiliza Windows, ni tampoco intento de convencerlo de que se “convierta” a Linux.

Si alguien viene y me dice “quiero probar otra cosa, qué me sugerís?”, estoy ahí para ayudar a dar los primeros pasos. Todo, absolutamente todo lo demás es perder tiempo.

Cuanto más se intente imponer que los usuarios cambien, más se van a arraigar a las cosas que utilizan hoy y más van a rechazar el cambio. Lo mejor que sepan que existe otra cosa (ya sea porque nosotros, los “convertidos”, las usamos, o porque organizamos eventos, o por lo que sea) y que luego el deseo de probar salga de cada uno.

Linux tiene todo el tiempo del mundo… Windows, no tanto.

Posted in Sistemas Operativos, Software | Comments Off on Discontinuación de Windows y Rechazo al Cambio

Apple demanda a HTC con 20 patentes!

Apple al parecer se pone de mal humor cuando los competidores imitan la tecnología del iPhone, ya que está demandando a HTC por la violación de no menos de 20 patentes!

De acuerdo con Apple, la demanda involucra violaciones a patentes de “interfaz de usuario, arquitectura subyacente y Hardware” y reclama como compensación una prohibición de importación y venta de dispositivos HTC en EEUU, además de una montaña de dinero.

Steve Jobs, CEO de Apple, tuvo para comentar:

“We can sit by and watch competitors steal our patented inventions, or we can do something about it. We’ve decided to do something about it. We think competition is healthy, but competitors should create their own original technology, not steal ours.”

Mientras que algunas patentes aplicadas en las demanda parecen bastante bajo nivel (cómo “System And Method For Managing Power Conditions Within A Digital Camera Device”) otras patentes son bastante peligrosas para los Informáticos (como por ejemplo: “Object-Oriented Graphic System” u “Object-Oriented Event Notification System With Listener Registration Of Both Interests And Methods”).

Veremos en qué termina todo esto dentro de los próximos meses.

En Gizmodo pueden encontrar una lista completa de las patentes aplicadas en la demanda.

Posted in Apple, Empresas | Comments Off on Apple demanda a HTC con 20 patentes!

La iPad, extrapolada

Continúan las bromas sobre la iPad en Internet 😛

iPad, Extrapolada

Vía Gizmodo.

Posted in Hardware | Comments Off on La iPad, extrapolada

Configurar iPhone sobre Ancel (sin Jailbreak)

He estado viendo cómo mejorar la configuración del iPhone sobre Ancel.

Tras mucho buscar, encontré un foro con bastante información. Resulta que alguien se tomó el trabajo de armar un archivo ipcc con la configuración necesaria. Los archivos ipcc contienen la configuración del perfil de una operadora, en este caso, Ancel.

Lo bueno de subir estos archivos de configuración al iPhone es que no se necesita Jailbreakearlo para que funcionen, sino que funcionan por un medio más “oficial” (supongo que será el mismo que usan las operadoras para configurar los iPhone nuevos que venden).

Tras subir la configuración quedará funcionando el soporte para MMS y el nombre y logo de la operadora, así como los servicios y números de contacto asociados con ésta (*611, *77, etc.).

Más abajo les dejo un link al archivo que deben descargar. No estoy seguro de las restricciones de licencia sobre este archivo. Usen bajo su propia responsabilidad.

A continuación copio los pasos para subir el archivo al teléfono:

Para usuarios de Mac OS X:

  1. Cerrar iTunes (Command+Q).
  2. Iniciar una terminal e ingresar el comando: defaults write com.apple.iTunes carrier-testing -bool TRUE
  3. Iniciar iTunes con el iPhone enchufado.
  4. Dirigirse a la entrada del iPhone y en la solapa principal hacer click en Restore manteniendo la tecla Option apretada.
  5. Aparecerá un diálogo para abrir un archivo ipcc. Localizar el archivo de Ancel y cargarlo.

Notar que no es necesario restaurar el teléfono para hacer esto. Esto es importante: mantener Option al clickear “Restaurar”. Si les aparece un mensaje de que se reestablecerá el teléfono a la configuración de fábrica seleccionen “Cancelar”. Este mensaje aparece sólo si no apretaron Option.

Para usuarios de Windows, los pasos son muy similares:

  1. Salir de iTunes.
  2. Iniciar una “Consola” (DOS).
  3. Iniciar iTunes.exe pasando la siguiente configuración de línea de comando: /setPrefInt carrier-testing 1 (La ubicación de iTunes.exe dependerá de donde hayan instalado iTunes).
  4. Dirigirse a la entrada del iPhone, en la solapa principal.
  5. Hacer click en Restore manteniendo Shift.
  6. Seleccionar el archivo ipcc de Ancel.

Nuevamente, tengan en cuenta que no es necesario restaurar el teléfono, sino que deberá aparecer un diálogo de selección de archivo.

Sobre iPhone OS 3.1.3 todo parece estar funcionando bien, excepto el Tethering, el cual se encuentra apagado por algún motivo. Attacheandole una consola al iPhone descubrí que en realidad está tirando un montón de mensajes de que el Tethering está siendo deshabilitado cada vez que el estado del modem inalámbrico cambia.

Esto puede deberse a que no tengo una cuenta de datos en Ancel e iPhone OS me deshabilita la opción consecuentemente. Cuando realice más pruebas les comento.

Descarga ANCEL.ipcc

Posted in iPhone, Tutoriales | Comments Off on Configurar iPhone sobre Ancel (sin Jailbreak)

Remapear ctrl y fn en Macbook

Una cosa que me desconcierta de los Macbooks es por qué decidieron poner la tecla Function (fn) en la esquina inferior izquierda del teclado y el Control (ctrl) a su derecha.

Quienes estamos acostumbrados a trabajar con teclados internacionales, preferimos tener el Control como la tecla en esa esquina, la cual hace que sea mucho más “ergonómico” usar editores de texto como Vim, donde Control es una tecla bastante importante.

Fue por esto que decidí remapear las dos teclas, mandando Function para el Control y viceversa. Buscando información sobre cómo hacer esto me encontré con dos utilidades: DoubleCommand y KeyRemap4MacBook.

Si bien DoubleCommand el la alternativa más popular, ésta no permite asignar Function a Control, por lo cual uno termina con Control duplicado. KeyRemap4MacBook sí permite definir ambos mapeos, efectivamente permitiendo “swappear” las dos teclas.

Les dejo un link a la herramienta aquí, en caso de que necesiten utilizarla.

Posted in Hardware, Mac OS X, Tutoriales, Tweaking | Comments Off on Remapear ctrl y fn en Macbook

Protocolos en Objective-C

Desde que comencé a aprender Objective-C, siempre me pareció que el concepto de “Protocolo” era idéntico al de Interfaz de Java. Hoy, tras leer este artículo, comprendí que en realidad las Interfaces de Java están basadas en los Protocolos de Objective-C.

Cómo funcionan los protocolos en Objective-C?

Un protocolo nos permite definir una serie de mensajes a los que un objeto debe responder para decir que se “apega” al protocolo. El concepto es extremadamente similar al de Java, pero con un par de salvedades. Veamos un ejemplo práctico de cómo funcionan los protocolos en Objective-C.

Lo que haremos es definir un Protocolo “Hello” que requiere responder a un mensaje “sayHello”. Luego declararemos una clase que se apegue al Protocolo.

Archivo que define el Protocolo, hello.h:

@protocol Hello
- (void) sayHello;
@end

Implementación del Protocolo en una Clase HelloWorld.
Archivo: helloworld.h:

#import <Foundation/Foundation.h> //Solo en Mac!
#import <stdio.h>
#import "hello.h"

@interface Hello : NSObject <Hello>{
}

- (void)sayHello;

@end

Archivo helloworld.m:

#import "helloworld.h"

@implementation HelloWorld

- (void)sayHello
{
    printf("Hello, World!\n");
}

@end

Ahora incluiremos todo en un archivo main.m para probar el Protocolo:

#import "helloworld.h"

int main(int argc, char* argv[])
{
    id hello = [[HelloWorld alloc] init];

    [hello sayHello];

    [hello release];

    return 0;
}

Como se puede ver, los protocolos funcionan de manera muy similar a las Interfaces de Java.

Si se fijan con atención, en este último archivo, tras realizar la instanciación, nunca especifiqué que la variable hello responde al Protocolo Hello. El runtime de Objective-C se encargará de determinar si la instancia es capaz de responder al mensaje sayHello en tiempo de ejecución. Lo interesante aquí es que yo podría enviarle este mensaje incluso si el protocolo Hello no existiera. En cuyo caso estaríamos frente a lo que se denomina en la terminología de Objective-C un “Protocolo Informal”.

Un Protocolo Informal es como un Protocolo común, con la salvedad de que el Protocolo nunca es declarado formalmente, sino que es más bien una convención. Esta es la primer diferencia entre los Protocolos de Objective-C y las Interfaces de Java. En Java no es posible invocar un método de un objeto si el objeto no es de algún tipo que declare ese método.

La otra diferencia entre un Protocolo de Objective-C y una Interfaz de Java es que un Protocolo puede especificar mensajes “opcionales”. Estos no tienen que ser implementados obligatoriamente por las clases que adoptan el Protocolo.

Para declarar un mensaje opcional simplemente agregamos la keyword @optional “arriba” de los mensajes opcionales en el cabezal que define el Protocolo, por ejemplo:

//en algún lugar de hello.h:
    @optional
    - (void)sayGoodbye; //Goodbye es un método opcional del Protocolo

No me imaginé que el sentido de la “inspiración” hubiese sido desde Objective-C hacia Java, sino que pensaba lo contrario. Es interesante leer sobre los conceptos en los que se basan quienes definen los lenguajes, a veces nos llegan a sorprender.

Posted in Objective-C, Programacion, Tutoriales | Comments Off on Protocolos en Objective-C

Nuevo Sitio/Blog en Inglés

Hasta hace algún tiempo disponía de un sitio con un carácter más profesional hospedado en Google Pages. No obstante, recientemente me llamó la atención que Google, al dar de baja el servicio, borró todo el contenido allí albergado.

El contenido del viejo sitio en googlepages será ahora hospedado bajo el dominio de alejandrosegovia.net, el cual, a diferencia del sitio anterior, estará construido sobre WordPress, permitiendo además hacer uso del motor de blogging. A su vez, el contenido del nuevo sitio será desarrollado en Inglés.

El primer post ya se encuentra presente y también he comenzado a rellenar con información profesional. Los invito a revisarlo y enviarme sus comentarios.

Saludos.

Posted in Blog Admin | Comments Off on Nuevo Sitio/Blog en Inglés

Rocketjumping al Extremo!

Buscando información sobre la implementación de NURBS del Quake 3 terminé cruzándome con el siguiente video.

Es un poco largo, pero para un Quaker es un must-see.



Posted in Video | Comments Off on Rocketjumping al Extremo!