sábado, diciembre 31, 2011

MURO FRONTERIZO, TIJUANA.


MURO FRONTERIZO, TIJUANA.
Originally uploaded by Tomasescalante

Ayer que fui a Mexico pude ver este muro, me dejo impresionado, me saco un poco de onda y me hizo reflexionar acerca del respeto a la vida.

viernes, diciembre 30, 2011

Programacion de alto rendimiento (continua)

(continuacion del post "Programacion de alto rendimiento")
Bueno, ya se decidieron por algun lenguaje de programacion para su back-end, perfecto!, aun tenemos varias decisiones que tomar.

De entrada, tenemos que ser concientes de que actualmente no podemos escapar de aprender JavaScript, en primera porque es el corazon de HTML 5, el nuevo y potente estandar que pronto dominara la Internet y es el lenguaje que utilizan actualmente las aplicaciones Web 2.0 para las llamadas asincronas (AJAX). Programar en JavaScript es un arte! no lo subestimen, mucha gente cree que es un pequeño lenguaje que sirve para unos cuantos detallitos en las paginas web... falso.

JavaScript es un potente lenguaje, le da vida a las paginas web y permite sacarlas de un status de una pagina util y ponerlas en el status de impresionante. Para facilitar el uso de JavaScript existen decenas de buenos frameworks que simplifican y/o mejoran el rendimiento de la programacion en este lenguaje, ademas de lidiar con el dolor de las particularidades de los navegadores web.

Un buen framework de JavaScript debe de:

  • Lidiar con la compatibilidad de navegadores
  • Permitir la orientacion a objetos
  • Ser compatible con la notacion JSON (JavaScript Object Notation)
  • Facilitar el manejo de eventos y funciones callback
  • Facilitar la programacion de animaciones y/o componentes de UI (user interface)

De acuerdo a lo antoriarmente mencionado les puedo recomendar los siguientes frameworks (ordenados por prioridad, mia por su puesto):

Este poderoso framework se ha convertido en un "must". Apoyado por gigantes como Google y Microsoft provee un lenguaje muy sencillo de usar con funciones muy flexibles para el manejo de eventos y con una sintaxis totalmente JSON. De las mejores caracteristicas que puedo mencionar es el apoyo enorme de la comunidad de desarrolladores en toda la Internet, lo que permite que evolucione rapidamente y con una calidad muy alta. La otra caracteristica es su alto rendimiento logrado al ofrecer una version recortada "minified" que puede agregar componentes bajo demanda. La API esta bien documentada por lo que su adopcion no deberia representar mayor obstaculo.

Este framework esta impresionantemente bien documentado, ofrece componentes para la GUI muy elaborados, con muchas parametrizaciones que los vuelven muy flexibles y hacen que las aplicaciones web se sientan como aplicaciones de escritorio. Al igual que jQuery, cuenta con una version recortada para mejorar el rendimiento. Dada la cantidad de componentes la curva de aprendizaje puede ser un poco larga pero valdra la pena. Otro detalle con el que se tiene que lidiar es con la adaptacion de los CSS existentes. Por cierto, vale la pena revisar tambien a su hermano Sencha Touch que es otro JavaScript framework para aplicaciones web moviles.

En realidad aqui el framework es Prototype, un viejo lobo de mar en esto de los frameworks de JavaScript, uno de los pioneros con una buena madurez y un conjunto de funciones que permiten interactuar con el DOM (Document Object Model) a nivel elemento de una manera muy sencilla de tal forma que se pueden agregar, modificar, mutar (utilizando clases CSS o estilos individuales), etc. Las desventajas de este framework comparado con jQuery es que este no ha evolucionado al mismo ritmo, esto se traduce en la carencia de caracteristicas como la concatenacion de funciones (util para muchos efectos graficos, creanme!). Script.aculo.us es un add-on para Prototype que agrega componentes AJAX como autocompleters, efectos de transicion, drag n drop, etc.

Programar en JavaScript requiere, idealmente, considerar su utilizacion en un modo no intrusivo, esto significa que las funciones y cualquier codigo escrito en este lenguaje no debe formar por ningun motivo parte de la GUI. Esto se logra agregando manejadores de eventos directamente vinculados en tiempo de ejecucion a cada uno de los componentes una vez que todo el arbol DOM ha sido cargado. Uno de estos dias escribire al respecto para ilustrar de una mejor manera este concepto.


Nota: No uso acentos, me da flojera cambiar el layout de mi teclado
Nota 2: Si, se que solo me tomaria un par de clicks

lunes, diciembre 26, 2011

Programacion de alto rendimiento

Todos los dias vemos surgir aplicaciones en Internet, la mayoria de ellas inutiles. El punto es que, de vez en cuando aparecen buenas ideas que mueren por no cumplir con el requerimiento de alto rendimiento, por consecuencia los usuarios las abandonan en cuestion de segundos.

Es por ello que como desarrolladores debemos considerar no solamente programar por programar, sino hacerlo con una orientacion al alto rendimiento, aun cuando pensemos que el numero de usuarios podria ser minimo.

Todo cuenta; el web server (software y hardware), el lenguaje de programacion utilizado en el servidor, el framework de javascript que utilicemos como front end o middleware, la base de datos, el diseño de la misma, los formatos y tamaños de imagenes, etc. Cada decision que tomemos respecto a la arquitectura juega un papel fundamental para el comportamiento final de la aplicacion, suena muy logico, pero muy poca gente hace incapie en ello; la mayoria de las decisiones se toman en base a las habilidades del equipo y/o de acuerdo a lo que "dictan las tendencias".

Comencemos pues con las decisiones, mucho se habla de cual es el mejor lenguaje de programacion? muchos alegan que es Java, otros que es PHP, otros argumentan que a la fecha no hay nada mejor que C/C++. Lo cierto es que todas las decisiones que se tomen a lo largo del proyecto tendran que ver con el contexto del mismo, habra que conocer las limitantes y caracteristicas de cada uno, los pros y los contras. Me es imposible discutir aqui cada una de las caracteristicas de cada lenguaje de programacion. Pero manejemos puntos generales de lenguajes de uso mas comun.

C/C++
Este lenguaje de programacion ciertamente continua siendo el mas rapido, por lo tanto se sigue utilizando para optimizar aplicaciones en las cuales se requiere un rendimiento superior, claro que hay que considerar que no todo en la vida es un compilador y que tambien se conjuga la calidad de los algoritmos utilizados. La desventaja es que programar en este lenguaje requiere de un especial cuidado, esto se debe a que hay que administrar el manejo de memoria en cuanto a los recursos de manera manual, esto implica la posibilidad de destruir recursos que pudieran ser utilizados a futuro generando errores de sistema, o por otro lado, la posibilidad de dejar recursos vivos por mas tiempo del necesario. Otra caracteristica de este lenguaje es que a pesar de existir versiones de el en casi todas las plataformas (PC, Mac, Linux, etc), existe la posibilidad de encontrar incompatibilidades que pudieran dificultar el portar el codigo de un lugar a otro.

Java
Java es uno de los lenguajes mas utilizados actualmente, es maduro y robusto; su fuerte son las aplicaciones de negocio, totalmente independiente de plataforma (siempre y cuando se cuente con una maquina virtual). Diversos frameworks se han construido para facilitar el desarrollo en este lenguaje: Struts, Faces, Spring, etc. Actualmente se cuentan con especificaciones, aterrizadas en productos, para lidiar con diversas necesidades de la industria de desarrollo; soluciones a la persistencia como JPA, inyeccion de dependencias (DI), programacion orientada a aspectos (AOP), etc. La administracion de recursos se realiza automaticamente gracias al recolector de basura (garbage collector), lo que facilita la administracion de recursos. De las grandes desventajas que presenta es la curva de aprendizaje requerida para construir una aplicacion completa, y aun asi, esto sera unicamente sobre un framework, dominar mas de uno de ellos requerira mucho tiempo y mucha paciencia.

PHP
Este lenguaje de programacion se ha popularizado por su sencilla curva de aprendizaje, su facilidad de desarrollo, su rendimiento y la facilidad con la que se puede dar mantenimiento a una aplicacion gracias a que no requiere compilacion; esto se debe a que este lenguaje pertenece a la familia de lenguajes de scripting. Su desarrollo no require licencias, otra ventaja. Dentro de las desventajas de este lenguaje se encuentran la poca oferta de frameworks que enriquezcan el producto.

En proximas publicaciones continuaremos con la discusion de aplicaciones de alto rendimiento.

USS Midway


USS Midway
Originally uploaded by elfidomx

Otra postal del USS Midway, el aterdecer llegando a la plataforma

martes, diciembre 20, 2011

USS Midway


USS Midway
Originally uploaded by elfidomx

El USS Midway, un porta aviones retirado que ahora sirve de museo en la bahia de San Diego, el recorrido comienza en la parte interior.

Es un lugar muy recomendado para todos aquellos visitantes del estado de California, los guias les explicaran desde cuantas personas viajaban en el, como se administra el barco, como es el proceso que se sigue para el trafico areo, etc.

En el interior se puede encontrar igualmente simuladores de vuelo.

lunes, diciembre 19, 2011

Ravens@Chargers


Ravens@Chargers
Originally uploaded by elfidomx

Una postal exclusiva del juego de ayer entre los Ravens y los Chargers. Es toda una emocion haber estado en el Qualcom

lunes, diciembre 05, 2011

viernes, noviembre 18, 2011

domingo, noviembre 06, 2011

The Forum


The Forum
Originally uploaded by elfidomx

Una postal HDR del estacionamiento del Forum en Inglewood, California

The Forum


El dia de hoy decidi ir a dar el rol a "The Forum" antes el Great Western Forum, me queda a unos 10 minutos de donde vivo. Ubicado en Inglewood, California.

El Forum es un simbolo de la historia de la NBA; testigo de, entre muchos eventos, las finales de la temporada 90-91. Por que es tan importante esa final? pues porque en ella se enfrentaron 2 leyendas de la NBA como lo son el Magic Johnson y Michael Jordan, rodeados de Scottie Pippen y Kareem Abdul Jabbar, de ensueño no?.

De niño soñaba estar en un escenario de este tipo y despues de casi 20 años por fin estoy aqui, la mala noticia es que esta ya no es la casa de los Lakers, ha sido remplazado por el Staples Center, pero eso no importa, este es el edificio donde sucedieron los hechos!.

jueves, septiembre 08, 2011

martes, agosto 30, 2011

Legoland


Legoland
Originally uploaded by elfidomx

Una postal de Legoland

Skulls of Terror Battlefield Clan


Ya esta lista la pagina de nuestro super clan Skulls of terror, puro jugador de Battlefield 2 Bad Company y estamos a la espera de Battlefield 3.

Our website is ready, the Skulls of terror Battlefield clan, just Battlefield 2 Bad Company gamers, we are waiting for Battlefield 3.

miércoles, julio 27, 2011

San Diego Surfliner


San Diego Coaster Landscape
Originally uploaded by elfidomx

Y la bella panoramica del camino de San Diego a Fullerton con todo y los globos

Luchadores - Comic Con 2011


Comic Con 2011
Originally uploaded by elfidomx

Y estos tipos con sus mascaras de Luchador fueron la sensacion en el Comic Con 2011, paseaban por la calle y todo el mundo queria tomarse la foto con ellos.