domingo, enero 25, 2009

Diagramación

En el periodismo escrito, la adecuada distribución de las imágenes y el texto es muy importante. No sólo porque ésta debe ser agradable a los ojos del lector, sino porque muchas veces no se cuenta con el espacio suficiente para colocar todos los elementos, por lo que se necesita priorizar y optimizar los recursos con los que se cuenta.

Este proceso de ubicación es lo que se conoce como digramación. Conocido también como maquetación, ésta es la manera de organizar y diseñar todo tipo de contenidos escritos, visuales y adiovisuales en medios impresos. Ejemplo de ello lo son los libros, los diarios y las revistas. Sin embargo, la diagramación no es exclusiva de los medios impresos. También los sitios web están sujetos a este orden.

"Algunos elementos gráficos de la diagramación impresa de un periódico."

En este caso, los sitios web tienen diferentes ventajas en comparación a los medios impresos tales como:

  • libertad de diseño
  • disponibilidad de extensión
  • animación de textos y gráficos
  • detalle de imágenes
  • diversidad de tipografía y elementos gráficos
  • interacción inmediata del público (feeds, emails, foros de opinión, bookmark, etc)
De igual manera tienen ciertas desventajas:
  • diseño limitado por el host
  • desperdicio o abuso del espacio disponible
  • saturación o escasez de elementos en la página
  • elementos demasiado grandes para ser cargados por la página (fotos, videos o audios)

"En esta diagramación, las imágenes no estorban con el texto. Por el contrario, se complementan."

Aún cuando todo apunta a la digitalización de los textos, siempre deben tomarse en cuenta los principios básicos de la diagramación impresa al momento de diseñar para un medio electrónico. Cabe mencionar que para la diagramación digital, muchas de las reglas de maquetación impresa no aplican o se han modificado acorde a las necesidades del medio y del usuario.

Por ejemplo, en blogger existen diferentes plantillas cuyas especificaciones siguen el mismo patrón de las cajas de digramación impresa. Mientras que otras, son más estandarizadas o han roto con los parámetros de la ubicación, color, tamaño y estilo de los elementos, (ya sean titulares, texto, fotografía, viñetas, etc).

Al momento de crear un blog o una página web -si es que se tiene la libertad de diseñar- es recomendable tomar en consideración algunas de las reglas básicas de la diagramación impresa, de tal forma que, los elementos queden muy bien distribuidos y dejen un buen taco de ojo en quien lo visite. Pero si lo anterior no es posible, puede elegirse la plantilla o el diseño que más se apegue a nuestros gustos o necesidades. Todo esto con el fin de hacer de nuestro sitio un lugar atractivo a los ojos del cibervisitante y cómodo a nuestro gustos y necesidades.

Diagramación

En el periodismo escrito, la adecuada distribución de las imágenes y el texto es muy importante. No sólo porque ésta debe ser agradable a los ojos del lector, sino porque muchas veces no se cuenta con el espacio suficiente para colocar todos los elementos, por lo que se necesita priorizar y optimizar los recursos con los que se cuenta.

Este proceso de ubicación es lo que se conoce como digramación. Conocido también como maquetación, ésta es la manera de organizar y diseñar todo tipo de contenidos escritos, visuales y adiovisuales en medios impresos. Ejemplo de ello lo son los libros, los diarios y las revistas. Sin embargo, la diagramación no es exclusiva de los medios impresos. También los sitios web están sujetos a este orden.

"Algunos elementos gráficos de la diagramación impresa de un periódico."

En este caso, los sitios web tienen diferentes ventajas en comparación a los medios impresos tales como:

  • libertad de diseño
  • disponibilidad de extensión
  • animación de textos y gráficos
  • detalle de imágenes
  • diversidad de tipografía y elementos gráficos
  • interacción inmediata del público (feeds, emails, foros de opinión, bookmark, etc)
De igual manera tienen ciertas desventajas:
  • diseño limitado por el host
  • desperdicio o abuso del espacio disponible
  • saturación o escasez de elementos en la página
  • elementos demasiado grandes para ser cargados por la página (fotos, videos o audios)

"En esta diagramación, las imágenes no estorban con el texto. Por el contrario, se complementan."

Aún cuando todo apunta a la digitalización de los textos, siempre deben tomarse en cuenta los principios básicos de la diagramación impresa al momento de diseñar para un medio electrónico. Cabe mencionar que para la diagramación digital, muchas de las reglas de maquetación impresa no aplican o se han modificado acorde a las necesidades del medio y del usuario.

Por ejemplo, en blogger existen diferentes plantillas cuyas especificaciones siguen el mismo patrón de las cajas de digramación impresa. Mientras que otras, son más estandarizadas o han roto con los parámetros de la ubicación, color, tamaño y estilo de los elementos, (ya sean titulares, texto, fotografía, viñetas, etc).

Al momento de crear un blog o una página web -si es que se tiene la libertad de diseñar- es recomendable tomar en consideración algunas de las reglas básicas de la diagramación impresa, de tal forma que, los elementos queden muy bien distribuidos y dejen un buen taco de ojo en quien lo visite. Pero si lo anterior no es posible, puede elegirse la plantilla o el diseño que más se apegue a nuestros gustos o necesidades. Todo esto con el fin de hacer de nuestro sitio un lugar atractivo a los ojos del cibervisitante y cómodo a nuestro gustos y necesidades.

jueves, enero 22, 2009

¿Por que aprender Python?

Si eres un Power User, Sys Admin, o simplemente realizas toneladas de trabajo frente a la computadora, probablemente te hayas topado con que hay ocasiones en las que se necesita automatizar ciertas tareas tediosas. Por ejemplo, el de buscar una cadena de texto repetida en varios documentos.

"Yo soy un PowerUser, por eso uso Linux!!!"

En el trabajo, en uno de los proyectos en los que estoy asignado, me vi en la necesidad de realizar la tarea mencionada; buscar una cadena de texto (una función) en cada archivo de un modulo, y obtener el nombre del archivo en donde sucede la ocurrencia. Usualmente esto lo podría hacer en Linux, con una sencilla combinación de los comandos: "grep" y "ls" en un script. Pero claro, no estoy usando Linux en mi trabajo, así que me vi "forzado" a utilizar una (basca de) función de búsqueda en el IDE que estamos usando.
Como no obtuve los resultados adecuados, en eso recorde una herramienta multiplataforma, opensource, y mas robusta que el chistoso "command prompt" de Windows...


  • Imaginen que necesitan buscar todas las veces que aparece el nombre de tu exnovi@ en las conversaciones que se guardan del MSN, ¿como harias esto?
  • Y si quieres mover todos los archivos de fotos que tienes regados por toda tu carpeta de documentos, ¿como lo haces?
  • Y para eliminar todos los espacios vacíos de los nombres de tus archivos de música, o los caracteres extraños, ¿que herramienta usarías?
  • Si bien, (yo se que) existen herramientas para realizar estas tareas, a veces ni la mas completa GUI (Interfaz de Usuario) puede asistirnos con tareas masivas de movimiento de datos, respaldo, eliminación de archivos vacíos (archivos de 0 KB), o de nombres extraños ( ###$%__song.mp3 por ejemplo).
  • Y que te parece el caso en que tal vez necesitas una base de datos pequeña y personalizada, realizar un simple juego o realizar una GUI especial.
  • Puede ocurrir que eres un developer de C/C++/Java, y el ciclo usual de codificar/compilar/depurar/recompilar te parece muy lento; ¿que sucede si deseas hacer un programa que se conecte a una base de datos remota y ejecute pruebas automatizadas?

"Si te sientes como un robot realizando tareas repetitivas, tal vez sea tiempo de considerar una herramienta que automatice tus tareas!"
  • ¿O una sencilla aplicación que pruebe rangos de IP que tengan conexión a Internet, y que cambie tu IP cada cierto tiempo, para poder navegar "tranquilo" en el trabajo? (más información sobre esto luego).

En cualquiera de estos casos y en muchos otros más, Python es el lenguaje de programación para ti.

¿Realmente crees que es necesario tener una aplicación diferente para cada una de estas tareas? ¿Necesitas una herramienta diferente para cada problema, o es mejor tener una compacta y elegante Navaja Suiza?

Python es fácil de usar, y disponible (como la mayoría del Software Libre) para Windows, Linux y Mac OS X, y probablemente te ayudara a realizar cada uno de estos trabajos más velozmente.

Si bien es fácil,también es un verdadero y muy robusto lenguaje de programación, que ofrece mucha mas estructura (entiendase legibilidad) y soporte para programas largos, más de lo que cualquier lenguaje de bash script te permitiría. Python también ofrece mucho mas chequeo de errores de los que soporta C, y siendo un lenguaje de alto nivel, tiene tipos de datos bastante útiles, como arreglos flexibles y diccionarios.

Y como Python tiene tipos de datos más generales, es aplicable a un dominio de problemas mucho más amplio que Awk o Perl, y aun así, muchas cosas son tan fáciles de implementar en Python como en esos lenguajes.

Python permite dividir tu programa en módulos que pueden ser reutilizados. Posee una larga colección de módulos estándares (I/O, llamadas al sistema, sockets, PyGame, etc).

Como es un lenguaje interpretado, no necesitas compilarlo y linkearlo (como C/C++). Y se compila "al vuelo" y/o bytecode como Java o .NET

El interprete de Python se puede utilizar interactivamente, lo que facilita experimentar con las características del lenguaje, hacer programas "para una sola vez", o para utilizarlo como una avanzada calculadora científica, je je.

Python permite escribir programas de manera compacta y legible. Y casi siempre, un programa escrito en Python, sera mas corto que su equivalente en C, C++ o Java. Es extensible, se pueden añadir nuevos módulos al runtime de Python con solo saber como programar en C.

Pero lo realmente importante, y por lo que vale la pena mencionar a Python en este momento, es que hace poco salio la nueva versión de Python, la 3.0
Y lo radical de esta versión, es que es TOTALMENTE incompatible con Python 2.6 y menores. Muchos se sorprenderán de semejante movida, pero el creador de Python: Guido Van Rossum, tiene buenas razones para haberla hecho, entre ellas: mejorar la sintaxis del lenguaje, cambiar un buen par de tipos de datos, y proveer una plataforma para convertir a Python, en el lenguaje interpretado de alto nivel de mayor popularidad en el mercado.
Si estabas esperando "el momento adecuado" para aprender un lenguaje de programación, sin lugar a dudas este es el momento para aprender Pyhton (3.0)!!!

"¿Cansado de lenguajes estáticos y compilados?, quizas sea hora de cambiar a un lenguaje de ALTO nivel."

Ya sea que estés comenzando, o simplemente estés cansado de Perl, de Awk, o de los ridículos archivos batch de Windows, etc.

Así que... a bajar Python:
http://www.python.org/download/releases/3.0/
Y la documentación de Python 3.0 (Py3K) puedes encontrarla aquí:


¿Por que aprender Python?

Si eres un Power User, Sys Admin, o simplemente realizas toneladas de trabajo frente a la computadora, probablemente te hayas topado con que hay ocasiones en las que se necesita automatizar ciertas tareas tediosas. Por ejemplo, el de buscar una cadena de texto repetida en varios documentos.

"Yo soy un PowerUser, por eso uso Linux!!!"

En el trabajo, en uno de los proyectos en los que estoy asignado, me vi en la necesidad de realizar la tarea mencionada; buscar una cadena de texto (una función) en cada archivo de un modulo, y obtener el nombre del archivo en donde sucede la ocurrencia. Usualmente esto lo podría hacer en Linux, con una sencilla combinación de los comandos: "grep" y "ls" en un script. Pero claro, no estoy usando Linux en mi trabajo, así que me vi "forzado" a utilizar una (basca de) función de búsqueda en el IDE que estamos usando.
Como no obtuve los resultados adecuados, en eso recorde una herramienta multiplataforma, opensource, y mas robusta que el chistoso "command prompt" de Windows...


  • Imaginen que necesitan buscar todas las veces que aparece el nombre de tu exnovi@ en las conversaciones que se guardan del MSN, ¿como harias esto?
  • Y si quieres mover todos los archivos de fotos que tienes regados por toda tu carpeta de documentos, ¿como lo haces?
  • Y para eliminar todos los espacios vacíos de los nombres de tus archivos de música, o los caracteres extraños, ¿que herramienta usarías?
  • Si bien, (yo se que) existen herramientas para realizar estas tareas, a veces ni la mas completa GUI (Interfaz de Usuario) puede asistirnos con tareas masivas de movimiento de datos, respaldo, eliminación de archivos vacíos (archivos de 0 KB), o de nombres extraños ( ###$%__song.mp3 por ejemplo).
  • Y que te parece el caso en que tal vez necesitas una base de datos pequeña y personalizada, realizar un simple juego o realizar una GUI especial.
  • Puede ocurrir que eres un developer de C/C++/Java, y el ciclo usual de codificar/compilar/depurar/recompilar te parece muy lento; ¿que sucede si deseas hacer un programa que se conecte a una base de datos remota y ejecute pruebas automatizadas?

"Si te sientes como un robot realizando tareas repetitivas, tal vez sea tiempo de considerar una herramienta que automatice tus tareas!"
  • ¿O una sencilla aplicación que pruebe rangos de IP que tengan conexión a Internet, y que cambie tu IP cada cierto tiempo, para poder navegar "tranquilo" en el trabajo? (más información sobre esto luego).

En cualquiera de estos casos y en muchos otros más, Python es el lenguaje de programación para ti.

¿Realmente crees que es necesario tener una aplicación diferente para cada una de estas tareas? ¿Necesitas una herramienta diferente para cada problema, o es mejor tener una compacta y elegante Navaja Suiza?

Python es fácil de usar, y disponible (como la mayoría del Software Libre) para Windows, Linux y Mac OS X, y probablemente te ayudara a realizar cada uno de estos trabajos más velozmente.

Si bien es fácil,también es un verdadero y muy robusto lenguaje de programación, que ofrece mucha mas estructura (entiendase legibilidad) y soporte para programas largos, más de lo que cualquier lenguaje de bash script te permitiría. Python también ofrece mucho mas chequeo de errores de los que soporta C, y siendo un lenguaje de alto nivel, tiene tipos de datos bastante útiles, como arreglos flexibles y diccionarios.

Y como Python tiene tipos de datos más generales, es aplicable a un dominio de problemas mucho más amplio que Awk o Perl, y aun así, muchas cosas son tan fáciles de implementar en Python como en esos lenguajes.

Python permite dividir tu programa en módulos que pueden ser reutilizados. Posee una larga colección de módulos estándares (I/O, llamadas al sistema, sockets, PyGame, etc).

Como es un lenguaje interpretado, no necesitas compilarlo y linkearlo (como C/C++). Y se compila "al vuelo" y/o bytecode como Java o .NET

El interprete de Python se puede utilizar interactivamente, lo que facilita experimentar con las características del lenguaje, hacer programas "para una sola vez", o para utilizarlo como una avanzada calculadora científica, je je.

Python permite escribir programas de manera compacta y legible. Y casi siempre, un programa escrito en Python, sera mas corto que su equivalente en C, C++ o Java. Es extensible, se pueden añadir nuevos módulos al runtime de Python con solo saber como programar en C.

Pero lo realmente importante, y por lo que vale la pena mencionar a Python en este momento, es que hace poco salio la nueva versión de Python, la 3.0
Y lo radical de esta versión, es que es TOTALMENTE incompatible con Python 2.6 y menores. Muchos se sorprenderán de semejante movida, pero el creador de Python: Guido Van Rossum, tiene buenas razones para haberla hecho, entre ellas: mejorar la sintaxis del lenguaje, cambiar un buen par de tipos de datos, y proveer una plataforma para convertir a Python, en el lenguaje interpretado de alto nivel de mayor popularidad en el mercado.
Si estabas esperando "el momento adecuado" para aprender un lenguaje de programación, sin lugar a dudas este es el momento para aprender Pyhton (3.0)!!!

"¿Cansado de lenguajes estáticos y compilados?, quizas sea hora de cambiar a un lenguaje de ALTO nivel."

Ya sea que estés comenzando, o simplemente estés cansado de Perl, de Awk, o de los ridículos archivos batch de Windows, etc.

Así que... a bajar Python:
http://www.python.org/download/releases/3.0/
Y la documentación de Python 3.0 (Py3K) puedes encontrarla aquí:


martes, enero 20, 2009

Mas Alla del Codigo: Escalabilidad

"Tu sistema debe ser capaz de crecer junto con tu negocio, para soportar la demanda del mercado"

El año pasado, Fafamonge me preguntó una vez cuánta influencia creía yo que podría tener el Internet y los blogs en las elecciones que estamos celebrando, a lo cual yo respondí que relativamente poca o casi nula, considerando que somos un país demasiado conservador con poca cultura tecnológica, en comparación con otros hermanos latinoamericanos como Chile o Brasil pero ahora que se celebraron las elecciones de diputados y alcaldes, quizá mi perspectiva podría variar un poco.

Me he dado cuenta que los encargados de IT del tribunal supremo electoral compartían mi idea y nunca esperaron la saturación en el tráfico que ha tenido el sitio web de dicho organismo durante las elecciones y al parecer, lo mismo podría suceder con el sistema utilizado para el conteo de votos y transmisión de resultados. Lo mismo nos ocurría en la universidad cuando realizabamos exámenes en línea o al momento de realizar inscripciones en línea. Los servidores donde la aplicación web estaba alojada colapsaba por el exceso de tráfico.

"El ejemplo más claro de falta de escalabilidad: Twitter en sus inicios"

Para evitar estos inconvenientes, es necesario tomar en cuenta la cantidad de usuarios que harán uso de nuestras aplicaciones al momento de desarrollarlas y publicarlas, además de considerar si tu sistema será capaz de crecer para adaptarse a estas nuevas necesidades de rendimiento.

Lo más común es agregar mas recursos al servidor como mas RAM o un CPU más rapido. Otros optan por el Cloud Computing, de manera que varias computadoras actuen como una sola y la suma de sus recursos sea suficiente para mejorar el rendimiento de la aplicación lo cual en parte si ayuda. Todo lo anterior es tarea de arquitectos de hardware/software y sysadmins pero nosotros como desarrolladores también tenemos que realizar nuestro aporte pensando en aplicaciones que consuman solamente los recursos necesarios y capaces de crecer y adaptarse a las nuevas necesidades cuando estas aparezcan, de manera que no sea necesario reescribir por completo el código fuente.

Como desarrollador, recomiendo hacer código lo mas genérico posible, no hagas código para solucionar problemas específicos en el momento que estos surgen, haz código que resuelva las necesidades de información actuales y las que podrían aparecer en un futuro y si no fuera capaz de resolverlas, que por lo menos sea lo suficientemente flexible para que se pueda adaptar sin perder mucho tiempo en este proceso. Por supuesto, esto no lo puedes decidir si ya estas en la fase de desarrollo, esto debes hablarlo con los involucrados en el proyecto una vez que este ha nacido, para que se reserve el suficiente tiempo para esta tarea.

Dentro de pocos meses se llevarán a cabo también las elecciones presidenciales. Crees que volveremos a ver otra failwhale en el sitio del TSE y similares?

Mas Alla del Codigo: Escalabilidad

"Tu sistema debe ser capaz de crecer junto con tu negocio, para soportar la demanda del mercado"

El año pasado, Fafamonge me preguntó una vez cuánta influencia creía yo que podría tener el Internet y los blogs en las elecciones que estamos celebrando, a lo cual yo respondí que relativamente poca o casi nula, considerando que somos un país demasiado conservador con poca cultura tecnológica, en comparación con otros hermanos latinoamericanos como Chile o Brasil pero ahora que se celebraron las elecciones de diputados y alcaldes, quizá mi perspectiva podría variar un poco.

Me he dado cuenta que los encargados de IT del tribunal supremo electoral compartían mi idea y nunca esperaron la saturación en el tráfico que ha tenido el sitio web de dicho organismo durante las elecciones y al parecer, lo mismo podría suceder con el sistema utilizado para el conteo de votos y transmisión de resultados. Lo mismo nos ocurría en la universidad cuando realizabamos exámenes en línea o al momento de realizar inscripciones en línea. Los servidores donde la aplicación web estaba alojada colapsaba por el exceso de tráfico.

"El ejemplo más claro de falta de escalabilidad: Twitter en sus inicios"

Para evitar estos inconvenientes, es necesario tomar en cuenta la cantidad de usuarios que harán uso de nuestras aplicaciones al momento de desarrollarlas y publicarlas, además de considerar si tu sistema será capaz de crecer para adaptarse a estas nuevas necesidades de rendimiento.

Lo más común es agregar mas recursos al servidor como mas RAM o un CPU más rapido. Otros optan por el Cloud Computing, de manera que varias computadoras actuen como una sola y la suma de sus recursos sea suficiente para mejorar el rendimiento de la aplicación lo cual en parte si ayuda. Todo lo anterior es tarea de arquitectos de hardware/software y sysadmins pero nosotros como desarrolladores también tenemos que realizar nuestro aporte pensando en aplicaciones que consuman solamente los recursos necesarios y capaces de crecer y adaptarse a las nuevas necesidades cuando estas aparezcan, de manera que no sea necesario reescribir por completo el código fuente.

Como desarrollador, recomiendo hacer código lo mas genérico posible, no hagas código para solucionar problemas específicos en el momento que estos surgen, haz código que resuelva las necesidades de información actuales y las que podrían aparecer en un futuro y si no fuera capaz de resolverlas, que por lo menos sea lo suficientemente flexible para que se pueda adaptar sin perder mucho tiempo en este proceso. Por supuesto, esto no lo puedes decidir si ya estas en la fase de desarrollo, esto debes hablarlo con los involucrados en el proyecto una vez que este ha nacido, para que se reserve el suficiente tiempo para esta tarea.

Dentro de pocos meses se llevarán a cabo también las elecciones presidenciales. Crees que volveremos a ver otra failwhale en el sitio del TSE y similares?

lunes, enero 19, 2009

Mas Alla del Codigo

"Escribir el código es sólo una parte del proceso de desarrollo de software"

Últimamente en mi trabajo me he dado cuenta que en las grandes ligas, el código es nada mas una de todas las cosas por las que hay que preocuparse a la hora de desarrollar un sistema. No basta con ser un programador disciplinado, dejando comentarios en el código, haciendo pruebas de unidad, subversionando y diseñando una interfaz agradable al usuario para que nuestra aplicación sea usable, hay que pensar en otros factores que podrían afectar nuestra aplicación a la hora que esta sea usada en el mundo real.

Algunas de estas cosas no las descubres en la universidad, cuando ejecutas tus aplicaciones en un ambiente ideal, donde no introduces más de cien registros a tu base de datos y sólo tienes a 5 usuarios al mismo tiempo accediendo a tu aplicación y lo hacen desde una LAN.

Tampoco piensas en que tan fácil será extender tu aplicación cuando la empresa crezca y surjan nuevas necesidades de información o si tu aplicación puede migrarse a otras plataformas o comunicarse con otros sistemas.

Estos conceptos los descubres y aplicas una vez que ya estás involucrado en un proyecto que requiere aplicarlos por lo que dedicaré algunos posts para que tomemos en cuenta que otras fases se llevan a cabo una vez que has escrito el código o qué otras características debes tomar en cuenta mientras lo escribes.

Mas Alla del Codigo

"Escribir el código es sólo una parte del proceso de desarrollo de software"

Últimamente en mi trabajo me he dado cuenta que en las grandes ligas, el código es nada mas una de todas las cosas por las que hay que preocuparse a la hora de desarrollar un sistema. No basta con ser un programador disciplinado, dejando comentarios en el código, haciendo pruebas de unidad, subversionando y diseñando una interfaz agradable al usuario para que nuestra aplicación sea usable, hay que pensar en otros factores que podrían afectar nuestra aplicación a la hora que esta sea usada en el mundo real.

Algunas de estas cosas no las descubres en la universidad, cuando ejecutas tus aplicaciones en un ambiente ideal, donde no introduces más de cien registros a tu base de datos y sólo tienes a 5 usuarios al mismo tiempo accediendo a tu aplicación y lo hacen desde una LAN.

Tampoco piensas en que tan fácil será extender tu aplicación cuando la empresa crezca y surjan nuevas necesidades de información o si tu aplicación puede migrarse a otras plataformas o comunicarse con otros sistemas.

Estos conceptos los descubres y aplicas una vez que ya estás involucrado en un proyecto que requiere aplicarlos por lo que dedicaré algunos posts para que tomemos en cuenta que otras fases se llevan a cabo una vez que has escrito el código o qué otras características debes tomar en cuenta mientras lo escribes.

miércoles, enero 07, 2009

Los Crunchies del 2008 - Vota por tu Favorito!


Como todo buen salvadoreño, me complace anunciarles de un evento justo un día antes que se acabe el periodo, se trata de los Crunchies del 2008, certamen celebrado para seleccionar a los startups (sitios web o tecnologías recién nacidos o recién popularizados) que se destacaron durante año, llevado a cabo por blogs como TechCrunch y GigaOM, entre otros.

Que quienes son TechCrunch y GigaOM? pues son populares y muy influyentes blogs relacionados con tecnología, casi tan populares e influyentes como el Sr Byte, pero su envidia no los deja llegar a nuestro nivel y hasta creemos que nos copian los artículos xD Dichos blogs, crecieron para convertirse en comunidades con mucha influencia en los medios sociales de la tecnología, generando opinión y apoyando nuevos proyectos para el web, como por ejemplo Twitter.

Este año tú puedes apoyar a tus nominados favoritos mediante tus votaciones a cuáles de los sitios o tecnologías del web nominadas (también puedes nominar, por cierto) han sido los que mayor relevancia tuvieron durante el pasado 2008. Entre los nominados se encuentran los grandes pesos pesados como Twitter, Facebook, Google Friend Connect, iPhone, Android, eBuddy, entre otros, cada uno clasificado en su correspondiente categoría. También participa uno de los servicios del web favoritos el cual les recomiendo usar y votar por él: SlideRocket. Pronto escribiremos un artículo detallándolo. Entre las categorías en las que puedes votar, están:

  • Mejor logro/innovación tecnológica
  • Startup mejor remunerado
  • Mejor gadget
  • Mejor empresa
  • Mejor startup para móviles
  • Mejor aplicación/servicio
  • etc.
Para votar por tu favorito, visita este vínculo. Tienes hasta la medianoche del miércoles.

Los Crunchies del 2008 - Vota por tu Favorito!


Como todo buen salvadoreño, me complace anunciarles de un evento justo un día antes que se acabe el periodo, se trata de los Crunchies del 2008, certamen celebrado para seleccionar a los startups (sitios web o tecnologías recién nacidos o recién popularizados) que se destacaron durante año, llevado a cabo por blogs como TechCrunch y GigaOM, entre otros.

Que quienes son TechCrunch y GigaOM? pues son populares y muy influyentes blogs relacionados con tecnología, casi tan populares e influyentes como el Sr Byte, pero su envidia no los deja llegar a nuestro nivel y hasta creemos que nos copian los artículos xD Dichos blogs, crecieron para convertirse en comunidades con mucha influencia en los medios sociales de la tecnología, generando opinión y apoyando nuevos proyectos para el web, como por ejemplo Twitter.

Este año tú puedes apoyar a tus nominados favoritos mediante tus votaciones a cuáles de los sitios o tecnologías del web nominadas (también puedes nominar, por cierto) han sido los que mayor relevancia tuvieron durante el pasado 2008. Entre los nominados se encuentran los grandes pesos pesados como Twitter, Facebook, Google Friend Connect, iPhone, Android, eBuddy, entre otros, cada uno clasificado en su correspondiente categoría. También participa uno de los servicios del web favoritos el cual les recomiendo usar y votar por él: SlideRocket. Pronto escribiremos un artículo detallándolo. Entre las categorías en las que puedes votar, están:

  • Mejor logro/innovación tecnológica
  • Startup mejor remunerado
  • Mejor gadget
  • Mejor empresa
  • Mejor startup para móviles
  • Mejor aplicación/servicio
  • etc.
Para votar por tu favorito, visita este vínculo. Tienes hasta la medianoche del miércoles.

lunes, enero 05, 2009

En una empresa: el codigo es el enemigo.

Voy a escribir un par de artículos a la semana, hace poco conseguí trabajo y me esta consumiendo, pero las experiencias y habilidades son invaluables.

El código en exceso es malo. Requiere mantenimiento periódico. Posee errores ... que deben ser encontrados, depurados y mitigados. Añadir funcionalidad extra, implica que el código antiguo se tiene que adaptar.


Mientras hay mas código escrito:
"Este libro debería leerse en la Universidad..."

Más código, significa menos flexibilidad y funcionalidad; esto para muchos es una paradoja, pero la mayoría de veces, una solución simple, rápida y elegante, es mejor que una "mega super función general que hace de todo".

"Este es más común..."

El código es escrito por ingenieros de sistemas, técnicos programadores o consultores; digamos simplemente que son desarrolladores. Producir más código, requiere mas desarrolladores. Varios desarrolladores deben comunicarse. Un desarrollador tiene un costo de "canal de comunicación" de n^2, como pueden ver, las comunicaciones incrementan exponencialmente con cada desarrollador en el proyecto ( 1^2=2, 2^2=4, 3^2=9, etc...).
Añadamos un poco de papeleo (burocracia) a los canales de comunicación:
  • Control de actividades de desarrollo, por metas y diarias.
  • Documentos que constan la finalización de las actividades programadas.
... si hago esto por cada desarrollador... termino con un enorme costo organización, en función del tiempo gastado en cada desarrollador, o en función de un nuevo puesto de trabajo para que alguien realice esta tarea.

¿No se debería hacer todo lo posible para incrementar la productividad del individuo en términos del buen código que este escribe? La idea es simple: Escribir menos código para hacer algo (y si se puede, que sea buen código). Si tiene que escribir menos código, se contratan menos personas, y se reducen los costos de comunicación.

Después de todo, una buena empresa debe ser eficiente y eficaz, ¿no?. Si algo ya existe, úselo. Si hay mejores tecnologías, procure utilizarlas. Y si sus desarrolladores le dicen que hay que utilizar una nueva tecnología, procure prestar atención a lo que dicen, y si es factible hágalo.

"Buen equipo, buena silla, buen escritorio... son necesarios para producir buen código."

La comodidad de un desarrollador de software no puede ser discutida. Estos merecen buenas sillas, estar cómodos en sus cubículos o escritorios, café cerca y como máximo, ocho horas de trabajo diarias. El trabajo de un desarrollador de software, no solo es uno de los mas estresantes, sino también es uno de los mejor remunerados. Y si no trata bien a sus desarrolladores, estos producen código enmarañado, descuidado e irresponsable, hackeado para que funcione (ley del llegue)... malo en pocas palabras. Codificar mal, siempre es producir mas código del que se necesita.


Repitan conmigo:
"desarrolladores infelices, producen mal código, que aumenta mis costos".
En la empresa en la que estoy trabajando, la mayoría de desarrolladores piensan que los "usuarios" son los enemigos. Para mi, el código es el enemigo, y para la empresa también.

Una cosa más, para los desarrolladores que leen este articulo... sigan como consejo la sabiduría innegable de xkcd:

En una empresa: el codigo es el enemigo.

Voy a escribir un par de artículos a la semana, hace poco conseguí trabajo y me esta consumiendo, pero las experiencias y habilidades son invaluables.

El código en exceso es malo. Requiere mantenimiento periódico. Posee errores ... que deben ser encontrados, depurados y mitigados. Añadir funcionalidad extra, implica que el código antiguo se tiene que adaptar.


Mientras hay mas código escrito:
"Este libro debería leerse en la Universidad..."

Más código, significa menos flexibilidad y funcionalidad; esto para muchos es una paradoja, pero la mayoría de veces, una solución simple, rápida y elegante, es mejor que una "mega super función general que hace de todo".

"Este es más común..."

El código es escrito por ingenieros de sistemas, técnicos programadores o consultores; digamos simplemente que son desarrolladores. Producir más código, requiere mas desarrolladores. Varios desarrolladores deben comunicarse. Un desarrollador tiene un costo de "canal de comunicación" de n^2, como pueden ver, las comunicaciones incrementan exponencialmente con cada desarrollador en el proyecto ( 1^2=2, 2^2=4, 3^2=9, etc...).
Añadamos un poco de papeleo (burocracia) a los canales de comunicación:
  • Control de actividades de desarrollo, por metas y diarias.
  • Documentos que constan la finalización de las actividades programadas.
... si hago esto por cada desarrollador... termino con un enorme costo organización, en función del tiempo gastado en cada desarrollador, o en función de un nuevo puesto de trabajo para que alguien realice esta tarea.

¿No se debería hacer todo lo posible para incrementar la productividad del individuo en términos del buen código que este escribe? La idea es simple: Escribir menos código para hacer algo (y si se puede, que sea buen código). Si tiene que escribir menos código, se contratan menos personas, y se reducen los costos de comunicación.

Después de todo, una buena empresa debe ser eficiente y eficaz, ¿no?. Si algo ya existe, úselo. Si hay mejores tecnologías, procure utilizarlas. Y si sus desarrolladores le dicen que hay que utilizar una nueva tecnología, procure prestar atención a lo que dicen, y si es factible hágalo.

"Buen equipo, buena silla, buen escritorio... son necesarios para producir buen código."

La comodidad de un desarrollador de software no puede ser discutida. Estos merecen buenas sillas, estar cómodos en sus cubículos o escritorios, café cerca y como máximo, ocho horas de trabajo diarias. El trabajo de un desarrollador de software, no solo es uno de los mas estresantes, sino también es uno de los mejor remunerados. Y si no trata bien a sus desarrolladores, estos producen código enmarañado, descuidado e irresponsable, hackeado para que funcione (ley del llegue)... malo en pocas palabras. Codificar mal, siempre es producir mas código del que se necesita.


Repitan conmigo:
"desarrolladores infelices, producen mal código, que aumenta mis costos".
En la empresa en la que estoy trabajando, la mayoría de desarrolladores piensan que los "usuarios" son los enemigos. Para mi, el código es el enemigo, y para la empresa también.

Una cosa más, para los desarrolladores que leen este articulo... sigan como consejo la sabiduría innegable de xkcd:

Pero, ¿Qué son las barras?

Al momento de hablar de barras hay que hacer algunas distinciones:


  • En televisión, las barras de color o mira son la señal que verifica que existe una correcta transmisión cuando no hay programación.


  • En video, al igual que en televisión, es la señal que verifica los niveles de negro, blanco, grises y color en la señal que se transmite y reproduce.


El orden de los colores aunque parece el mismo varía del sistema en el que se utilicen, ya sean NTSC, SECAM o PAL (Véase como referencia, Formatos de la TV Parte I, II y III).
Este orden puede ser: negro, rojo, amarillo, verde, cian, azul, púrpura, blanco y, nuevamente, negro.


Ejemplo de un cuadro típico de barras de color:


Sin embargo, dentro de las barras para televisión existen diversas clases. Así pues, tenemos las barras rainbow, EBU, UER, SMPTE y las x.v, de las cuales le contaré en detalle en el próximo post.

Bendiciones.




Fuentes consultadas:
1. Wikipedia, Enciclopedia Libre: http://es.wikipedia.org/wiki/Barras_de_color
2. Técnica de Tv para cámaras: http://tecnicatv.wordpress.com/2007/07/24/barras-de-color-en-television/

Pero, ¿Qué son las barras?

Al momento de hablar de barras hay que hacer algunas distinciones:


  • En televisión, las barras de color o mira son la señal que verifica que existe una correcta transmisión cuando no hay programación.


  • En video, al igual que en televisión, es la señal que verifica los niveles de negro, blanco, grises y color en la señal que se transmite y reproduce.


El orden de los colores aunque parece el mismo varía del sistema en el que se utilicen, ya sean NTSC, SECAM o PAL (Véase como referencia, Formatos de la TV Parte I, II y III).
Este orden puede ser: negro, rojo, amarillo, verde, cian, azul, púrpura, blanco y, nuevamente, negro.


Ejemplo de un cuadro típico de barras de color:


Sin embargo, dentro de las barras para televisión existen diversas clases. Así pues, tenemos las barras rainbow, EBU, UER, SMPTE y las x.v, de las cuales le contaré en detalle en el próximo post.

Bendiciones.




Fuentes consultadas:
1. Wikipedia, Enciclopedia Libre: http://es.wikipedia.org/wiki/Barras_de_color
2. Técnica de Tv para cámaras: http://tecnicatv.wordpress.com/2007/07/24/barras-de-color-en-television/

domingo, enero 04, 2009

Después de las barras vienen las cortinillas

En televisión, cortina o cortinilla se le denomina al breve video que apertura y cierra un programa, un segmento o una cápsula dentro de la programación de una televisiora.
Este recurso es utilizado no sólo para la respectiva identificación de los elementos sino también, para sentar un espacio o "aire"- como suele llamársele- entre la pauta programativa del medio y captar la atención del espectador.

La duración de las cortinas no debe exceder de entre 5 a 15 segundos para programas cortos, cápsulas o segmentos. Sin embargo, para programas completos, ya sean noticieros, entrevistas, series, promocionales institucionales o programáticos, el tiempo puede ser entre 10 segundos hasta 1 minuto. El tiempo de duración también puede variar de la intención comunicativa de los productores.

Una cortina bien elaborada busca captar la atención del espectador, de manera que éste sienta curiosidad por el programa y desee verlo. Sin embargo, existen cortinas muy buenas que para nada coinciden con el contenido del programa al que preceden. Es así como muchas veces vemos promocionales muy buenos, pero el programa en sí no lo es tanto.

Aquí unos ejemplos de cortinas:

1. Cortina de presentación de Los Simpson en Antena 3:


2. Cortinas de Animal Planet:


3. Cortina de Discovery Channel:


4. Cortina de presentación de Caracol TV Internacional:


5. Cortina de Canal Cuatro de España:


Que las bendiciones los presigan siempre.
Más en este nuevo año.

Después de las barras vienen las cortinillas

En televisión, cortina o cortinilla se le denomina al breve video que apertura y cierra un programa, un segmento o una cápsula dentro de la programación de una televisiora.
Este recurso es utilizado no sólo para la respectiva identificación de los elementos sino también, para sentar un espacio o "aire"- como suele llamársele- entre la pauta programativa del medio y captar la atención del espectador.

La duración de las cortinas no debe exceder de entre 5 a 15 segundos para programas cortos, cápsulas o segmentos. Sin embargo, para programas completos, ya sean noticieros, entrevistas, series, promocionales institucionales o programáticos, el tiempo puede ser entre 10 segundos hasta 1 minuto. El tiempo de duración también puede variar de la intención comunicativa de los productores.

Una cortina bien elaborada busca captar la atención del espectador, de manera que éste sienta curiosidad por el programa y desee verlo. Sin embargo, existen cortinas muy buenas que para nada coinciden con el contenido del programa al que preceden. Es así como muchas veces vemos promocionales muy buenos, pero el programa en sí no lo es tanto.

Aquí unos ejemplos de cortinas:

1. Cortina de presentación de Los Simpson en Antena 3:


2. Cortinas de Animal Planet:


3. Cortina de Discovery Channel:


4. Cortina de presentación de Caracol TV Internacional:


5. Cortina de Canal Cuatro de España:


Que las bendiciones los presigan siempre.
Más en este nuevo año.

sábado, enero 03, 2009

Lennon y las laptops

One Laptop per Child (OLPC), es una organización sin fines de lucro creada por catedráticos del Laboratorio de Multimedia del Instituto Tecnológico de Massachusetts, (MIT) para diseñar, manufacturar y distribuir ordenadores portátiles entre los niños de países tercermundistas. Esto con el objetivo que todo niño tenga acceso a las nuevas tecnologías de la información, al mismo tiempo que se educa e interactúa a nivel mundial.

Si bien los primeros pasos de esta fundación se dieron de manera simultanea con los avances de las computadoras y la programación, fue hasta 2006 que su cofundador Nicholas Negroponte, presentó el proyecto frente a la Organización de las Naciones Unidas, en el Foro Económico Mundial, en Suiza.

Para este nuevo año, como parte de su campaña, la OLPC ha creado una imagen digitalizada de John Lennon, mediante la cual, él promociona el mensaje principal de esta organización. Sin duda alguna, utilizar la imagen del ex Beatle es bastante ingenioso.

A continuación le dejo el promo para que ustedes mismos lo juzguen.
Shalom y prosperidad para todos en este nuevo año.

Lennon y las laptops

One Laptop per Child (OLPC), es una organización sin fines de lucro creada por catedráticos del Laboratorio de Multimedia del Instituto Tecnológico de Massachusetts, (MIT) para diseñar, manufacturar y distribuir ordenadores portátiles entre los niños de países tercermundistas. Esto con el objetivo que todo niño tenga acceso a las nuevas tecnologías de la información, al mismo tiempo que se educa e interactúa a nivel mundial.

Si bien los primeros pasos de esta fundación se dieron de manera simultanea con los avances de las computadoras y la programación, fue hasta 2006 que su cofundador Nicholas Negroponte, presentó el proyecto frente a la Organización de las Naciones Unidas, en el Foro Económico Mundial, en Suiza.

Para este nuevo año, como parte de su campaña, la OLPC ha creado una imagen digitalizada de John Lennon, mediante la cual, él promociona el mensaje principal de esta organización. Sin duda alguna, utilizar la imagen del ex Beatle es bastante ingenioso.

A continuación le dejo el promo para que ustedes mismos lo juzguen.
Shalom y prosperidad para todos en este nuevo año.

viernes, enero 02, 2009

¡Ya se viene Imagine Cup 2009!

En su séptima edición, Imgine Cup 2008 estuvo enfocada en la búsqueda de soluciones tecnológicas para resolver los problemas reales del mundo.

Pero, ¿Qué es Imagine Cup?
Este es un evento a nivel mundial que desde 2002, alienta a los más talentosos diseñadores de software, programadores, desarrolladores de juegos, fotógrafos y cineastas a crear propuestas innovadoras que puedan hacerle frente a los problemas más difíciles que enfrenta el mundo.
Este evento, más que un simple concurso, es un desafío dentro del mundo tecnológico para todos aquellos que gustan de la creacción de software, jugar, reforzar sus conocimientos, pero sobre todo que desean hacer una diferencia en el mundo.

En año pasado, alrededor de 200,000 estudiantes que se desempeñan en las diferentes ramas de la tecnología, provenientes de 100 países y regiones del mundo, acudieron a la sede de ese año, París, Francia. De ellos, 124 fueron los equipos finalistas que se disputaron los premios en las nueve categorías que ofrece el certamen.

El primer lugar se lo agenció Australia, Team SOAK, quienes ganaron en la categoría mundial de Diseño de Software. En la categoría de Desarrollo integrado, el ganador fue Trail Blazer de Singapur. De Latinoamérica, los dignos ganadores fueron Mother Gaia Studio de Brasil como ganador de la categoría de Desarrollo de Juegos y Lava Lamp de México, como segundo lugar en la categoría de Cortometraje.

Para el año 2009, la Imagine Cup se realizará en el Cairo, Egipto y el tema base serán los ocho Objetivos del Milenio identificados por las Naciones Unidas. La inscripción ya está oficialmente abierta y puede hacerse vía online en el sitio oficial: Imagine Cup

A continuación, detallo las nueve categorías en las cuales se puede competir:

1. Diseño de software
2. Desarrollo Integrado
3. Desarrollo de juego
4. Robótica y algoritmos
5. Cambio IT
6. MashUp
7. Fotografía
8. Cortometraje
9. Diseño

Estaremos pendientes de cómo se desarrolle este evento, de los concursantes, pero sobre todo del gran ganador: Un Mundo Mundo.
Shalom.

¡Ya se viene Imagine Cup 2009!

En su séptima edición, Imgine Cup 2008 estuvo enfocada en la búsqueda de soluciones tecnológicas para resolver los problemas reales del mundo.

Pero, ¿Qué es Imagine Cup?
Este es un evento a nivel mundial que desde 2002, alienta a los más talentosos diseñadores de software, programadores, desarrolladores de juegos, fotógrafos y cineastas a crear propuestas innovadoras que puedan hacerle frente a los problemas más difíciles que enfrenta el mundo.
Este evento, más que un simple concurso, es un desafío dentro del mundo tecnológico para todos aquellos que gustan de la creacción de software, jugar, reforzar sus conocimientos, pero sobre todo que desean hacer una diferencia en el mundo.

En año pasado, alrededor de 200,000 estudiantes que se desempeñan en las diferentes ramas de la tecnología, provenientes de 100 países y regiones del mundo, acudieron a la sede de ese año, París, Francia. De ellos, 124 fueron los equipos finalistas que se disputaron los premios en las nueve categorías que ofrece el certamen.

El primer lugar se lo agenció Australia, Team SOAK, quienes ganaron en la categoría mundial de Diseño de Software. En la categoría de Desarrollo integrado, el ganador fue Trail Blazer de Singapur. De Latinoamérica, los dignos ganadores fueron Mother Gaia Studio de Brasil como ganador de la categoría de Desarrollo de Juegos y Lava Lamp de México, como segundo lugar en la categoría de Cortometraje.

Para el año 2009, la Imagine Cup se realizará en el Cairo, Egipto y el tema base serán los ocho Objetivos del Milenio identificados por las Naciones Unidas. La inscripción ya está oficialmente abierta y puede hacerse vía online en el sitio oficial: Imagine Cup

A continuación, detallo las nueve categorías en las cuales se puede competir:

1. Diseño de software
2. Desarrollo Integrado
3. Desarrollo de juego
4. Robótica y algoritmos
5. Cambio IT
6. MashUp
7. Fotografía
8. Cortometraje
9. Diseño

Estaremos pendientes de cómo se desarrolle este evento, de los concursantes, pero sobre todo del gran ganador: Un Mundo Mundo.
Shalom.

jueves, enero 01, 2009

Bienvenido sea 2009

"Mañana nos daremos cuenta que hoy no sabemos todavía nada"

Como primer post del nuevo año, los autores Rodrigo Amaya, Roberto Linares y Wendy Aparicio tenemos para ustedes los mejores deseos de paz y prosperidad para cada uno de los hogares de quienes visitan el blog y de el resto de personas que conforman la blogósfera.

Como una breve introducción, sólo nos limitaremos a decir que para este nuevo año, el Sr. Byte trae un sin fin de temas, más ganas, más ideas pero sobre todo viene con más "bits y bytes de tecnología, humor, cine y rebeldía para todo el que lo visita".

Esperamos sigan fieles al blog y estén pendientes de todo lo nuevo que tenemos preparados para ustedes.

¡FELIZ AÑO 2009!

Bendiciones.

Atte. Los autores.-

Bienvenido sea 2009

"Mañana nos daremos cuenta que hoy no sabemos todavía nada"

Como primer post del nuevo año, los autores Rodrigo Amaya, Roberto Linares y Wendy Aparicio tenemos para ustedes los mejores deseos de paz y prosperidad para cada uno de los hogares de quienes visitan el blog y de el resto de personas que conforman la blogósfera.

Como una breve introducción, sólo nos limitaremos a decir que para este nuevo año, el Sr. Byte trae un sin fin de temas, más ganas, más ideas pero sobre todo viene con más "bits y bytes de tecnología, humor, cine y rebeldía para todo el que lo visita".

Esperamos sigan fieles al blog y estén pendientes de todo lo nuevo que tenemos preparados para ustedes.

¡FELIZ AÑO 2009!

Bendiciones.

Atte. Los autores.-

Sunsetting Sr. Byte.

El Sr. Byte ha estado más de 5 años inactivo. Digamos que estaba en " code freeze ". Pero ahora es el último release. Quizas no...