Hablemos del futuro


Welcome to the future

Objects you might find in a pawn shop in 2050

¿Una píldora para cambiar la personalidad?

Me gusta pensar mucho en lo que se puede llegar a lograr, en las cosas que no existen y cómo hacer que existan – creo que gracias a la tecnología y al “mundo virtual” podemos negociar con nuestra imaginación y romper los límites impuestos de lo causal y de lo que observamos. Los verdaderos límites son los que uno se impone, si bien lo típico al pensar en la gente de sistemas es definirlos como personas “cuadradas” y estructuradas yo me siento más como un artista. Un artista al que le dieron un lienzo en blanco y que puede pintar lo que se le da la gana, lo que se me da la gana.

Saludos,
Gorka


Javascript Frameworks


Framework

A fines del año pasado decidí que iba a ver como era el desarrollo de apps vía HTML5 (se usa un wrapper nativo que hace como si abriera una página web – todos los archivos están locales). Los resultados me gustaron mucho, al punto que decidí dejar por ahora el desarrollo en AS3 (ojo, hay cosas que no puedo hacer con javascript que seguro tendré que hacer con AS3 – estoy hablando de socket servers, pero bueno… para otro post).

En su momento me puse a analizar cómo iba a trabajar, mis opciones eran aprovechar el framework que ya tenía para AS3 (traerlo a javascript no sería nada difícil) o ver que opciones había. Encontré que hay muchas herramientas, estrucutras, código, ayuda para hacer este tipo de desarrollos (lo cual sería medio obvio ya que la mayoría de estas se usan en web). Entre los que más me llamaron la atención están EmberJS, AngularJS, Backbone y MeteorJS (los otros que encontré no tenían detalles o malas reseñas o comparaciones contra estos). De estos 4 me decidí aventurar por EmberJS – con una propuesta muy innovadora y una fuerte comunidad atrás del proyecto (ojo los otros también, pero en comparaciones este parecía salir ganando) y con una cosa que fue lo que me hizo voltear: ofrecía una estructura que une modelo con vista de manera automática (tiempo después me enteré que AngularJS también lo tiene pero en su momento no lo vi, en fin…).

Por unos meses jugué con EmberJS, traté de hacer funcionar las cosas, traté de hacer funcionar su estructura de DStore (EmberData) pero lamento decir que el framework no estaba en momento maduro y que, por lo mismo, tomé la decisión de hacer las cosas con mi propio framework. PERO – algo que me había gustado mucho era la manera de trabajar de EmberJS con un estilo MVC muy marcado, así que decidí incorporar eso a mi nuevo javascript framework – el cual tuve listo en menos de 2 semanas y con eso logré publicar una app (ya lo he contado: Mendoza Wineries).

Hace un par de semanas he estado jugando con otra herramienta que se llama KnockoutJS – sería la pieza clabe que le faltaba a mi framework: unir modelo-vista de manera automática. Debo decir que ahora que ya lo logré hacer funcionar y entiendo sus conceptos estoy FASCINADO, no sé como pude trabajar sin un modelo así antes – en su momento me quejé que lo que exige EmberJS es olvidar el modelo de manipular el DOM y ahora, me parece obvio y completamente congruente.

Creo que es un buen momento para darle otra oportunidad a EmberJS – ya están en versión 1 – y ver que sale. Dependiendo de ese experimento decidiré si seguir por ahí, hacer pruebas con algún otro (AngularJS le tengo muchas ganas también) o si mejorar mi propio framework con KnockoutJS directamente. Ya les iré avisando.

Saludos,
Gorka


GitHub y mi nuevo apoyo a la comunidad open source


Dojocat

GitHub es hoy en día la página web más importante para compartir código y proyectos. La comunidad open source en el contexto global en el que vivimos se ve super beneficiada cuando existen este tipo de webs y además gracias a la fantástica herramienta de estructura y organización para desarrollo distribuido que es Git es increible.

Así que sí y de poco a poco (no es lo máximo que he hecho, pero es por donde empecé, así que espero ayude a otros a empezar).

Les dejo el link a mi primer repositorio público con información (por ahora es más un how-to que código, pero ese ya llegará).

https://github.com/AquiGorka/build-swf-or-ipa-or-apk-from-as3-in-linux

Saludos,
Gorka


Google da de baja Google Affiliate Network


Affiliate Marketing

En un email que me llegó hoy, Google avisa que dará de una baja otro más de sus servicios (hasta Octubre de 2013 seguirá funcionando como hasta ahora). Es una decisión rara, si bien el sistema de afiliados no generó tanta voz como AdSense/Adwords yo siempre creí que era una gran herramienta para poder usar como webmaster para capitalizar tráfico web – siempre esperé el día que en México lo empezaran a usar y así agregar comerciantes más relevantes pero ahora veo que ese día no va a llegar.

Definitivamente hay algo más que no nos dicen, primero Google Reader, ahora Affiliate y ya desde hace tiempo se habla de Feedburner, si bien no entiendo la estrategia (y ni siquiera me atrevería a especular) por ahí leí que tiene que ver con el mundo/concepto social de la web (teniendo como producto principal G+).

Creo que, de la misma manera que está pasando con Reader (han aparecido MUCHAS opciones para satisfacer el hueco que ban a dejar) lo mismo pasará aqui y es sin duda una buena oportunidad de negocio (curioso que Feedburner empezó como algo chico, lo compraron, tal vez lo suelten y luego vuelvan a comprar algo similar cuando se vuelva grande de nuevo). El servicio de afiliados de google buscaba romper el esquema de comprar publicidad por oferta (que ellos mismos ofrecían y dominan el mercado) de una manera que siempre me pareció más dinámica y flexible – de hecho era el mismo webmaster el que podía escoger a los anunciantes que iban a desplegarse en sus websites (cosa que Adsense sólo te ayuda a limitar, pero no te deja saber cuanto vas a ganar ni quien va a aparecer). Me parece una mala movida ya que le quita poder a los webmasters, pero bueno, supongo que números rojos son números rojos… o quién sabe…

Saludos,
Gorka


Desarrollo Cross Platform Mobile con HTML, CSS y Javascript


Build Diagram

Siguiendo la línea de desarrollo mobile he estado desarrollando en un nuevo framework: en lugar de usar Actionscript3 de flash usé un StageWebView y el desarrollo fue directo en HTML, CSS y Javascript (con la ventaja que Safari Mobile – el engine del webview – puede entender la mayoría de tags de HTML5 y CSS3 – incluyendo transitions y transform).

Encontré un servicio (de un producto que ya tenía en mente exactamente para desarrollo con html) que lo que hace es tú le das tus archivos y ellos te compilan (vía cloud) para 7 u 8 plataformas diferentes (realmente a mí sólo me interesa iOS por ahora): PhoneGap Build (build.phonegap.com).

Lo que está muy cotorro es que para que funcione tienes que unir tu cuenta con un repositorio de github (para cada app) (gratis para repositorios abiertos y con costo para privados). Es una manera muy interesante que me forzó a meterme a ver más de Git y Github.

El API de phonegap está basado en el mismo API que se tiene con FLASH sólo que aqui le pegas desde Javascript (ya estuve viendo la documentación y la única real diferencia que vi es que no puedes hacer un embed en tiempo real de la cámara – y eso se usa bastante en realidad aumentada). Bastante completo y con posibles mejoras a corto y largo plazo que lo hacen una herramienta interesante.

Échenle un ojo y me avisan que les parece.

Saludos,
Gorka


Estructura Web


Web Structure

Así que, con los años he ido cambiando de manera de trabajar, originalmente hacía unas cosas medio raras (había carpetas Controller, Model y View públicas), luego aprendí a poner las cosas en su lugar (folders no públicos), luego aprendí a usar htaccess para tener un solo controlador principal que se hace cargo de todas las peticiones (excepto fotos y archivos que sí existan – onda wp) y mi propio framework ha ido evolucionando.

Tanto me ha gustado con los años que lo empecé a usar para mis apps.

Despúes, con las apps y leyendo y tratando de usar otros frameworks (emberJS especificamente) aprendí a reacomodar y volvió a evolucionar el framework – lo fregón es que es flexible, tan flexible que se puede usar tanto para backend como para frontend (con sus respectivas modificaciones).

Así que, volviendo, ahora lo que quiero hacer es volver a mejorarlo y traerme los proyectos que usan versiones viejas (trota estoy hablando de ti) a la siguiente versión.

En esta nueva versión he estado pensando mucho el tema de html estáticos. En wp hay un plugin que transfomra los posts y pages a .html y eso genera una mejora sustancial en performance – igual que usar un cdn para archivos multimedia – y es obvio, ya no hay un script que tiene que ponerse a trabajar para escribir el html.

Lo que quiero lograr es que los html estáticos representen “estados” del website (sería la manera web 1.0) y luego una app en javascript sea la que tome el control (entra web 2.0).

El principal problema es que este esquema de html estáticos es muy poco flexible (MUY POCO). Qué pasa si quiero agregar un nuevo link a mi menú principal? Tendría que cambiar más de 650 html estáticos? Se puede hacer uno por uno con programa, pero no me parece óptimo, y luego si eso se tuviera que hacer cada 30 minutos? pierdes realmente las ventajas de performance que se habían ganado.

Me puse a buscar como hacer algún tipo de import o include en los html estáticos para ver si con eso podemos mantener un solo archivo y que todos los html lo incluyen, así se puede cambiar un solo archivo según lo que se necesite y todo se actualiza. Encontré que con el tag object se puede hacer esto, y hay muy poco escrito así que no es casi usado. Tengo que ver si este método funciona para cuidar seo y otros detalles, pero ya iré escribiendo lo que encuentre.

Saludos,
Gorka

UPDATE – Aviso que las pruebas no son positivas. Ni con object, iframe, frame u embed – no hay manera que acepten el CSS del parent (y ni siquiera me he puesto a ver que onda con los links y el js). Pero existe una opción llamada Server Side Includes (que funciona en apache para exactamente este tipo de situaciones), quiero ver si en los cdn’s de cloud que quiero usar esto puede funcionar..


Wifi Tarjeta Realtek y Linux (Debian Based)


Realtek Chip

Medio que me estoy obligando a escribir este post (si no lo hago me voy a sentir muy mal y ya se que ‘luego’ no lo voy a escribir).

En algo que escribiré en un post después (si, ajá…) decidí aprovechar un disco duro que tenía por ahí sin usar. Decidí instalarle Windows y Linux (con la idea de ver si a través de Virtual Box podía usar Mac OS – y decidí el dual boot con windows porque mi hardware no daba para Xen con acceso directo a hardware). La parte de windows fue trivial (lo que me faltaba fue fácil encontrar ya que venía por default en mi otro disco duro, así que los drivers que faltaban los descargué directamente de Toshiba – windows 7). Para Linux escogí Debian (si les interesa saber porque me preguntan en los comments) y después de probar el LiveCD me mandé directo a ‘particionar’ y a instalar. Todo fluído hasta la parte del wifi, tuve que ir a conectarme por cable para tener Internet y así buscar cómo hacerlo funcionar.

Estuve toda la mañana de ayer y no logré nada. En resumen, varios links y foros donde decían que descargara los drivers de Realtek directamente para mi ‘chipset’ (que a su vez tenían que ser relacionados con mi kernel – y no se crean, mucho de esto también era griego para mí ayer – en un momento casi me lanzo a actualizarlo, pero luego vi que para arquitectura 64bits ya tenía la última versión – y que había que bajar el código fuente y compilarlo / otras opciones hablaban de agregar otro source descargar los headers de la versión y bajar el firmware y actualizar todo junto. Al bajar los drivers de realtek incluían un archivo con instrucciones para varios escenarios y un script que debía hacer las cosas correctamente – que no lo hizo y que además decía que justo con mi kernel hay problemas… pfff, de esas cosas que te ahuyentan. Ayer intenté todas esas opciones y nada, no pifaba.

Hoy decidí darle MUCHA lectura antes de hacer nada, con la ‘práctica’ del día anterior ya habría conceptos que no me dejarían con cara de ‘y si mejor bajo Ubuntu y a ver si ahí todo se hace por si mismo…’. Así que me leí todo un post ETERNO en un foro de gente con mi misma situación, intenté un par de opciones y luego como por arte de magia, pifó! y pifó bien, sin problemas de conexión y un tonel de otras posbiles situaciones que mencionan en el foro.

En resumidas cuentas (mis 2 centavos):

-Descargar archivo de driver (creo que está parchado por la gente del foro). Es un ‘tarball’ o .tar.gz.

Espero ayude a quien tenga que ayudar.

Saludos,
Gorka


Pagination