CSML

CSML es una pequeña clase (requiere PHP5) que permite generar tags de HTML, usando selectores de CSS sin salir de sus bloques de código, sin necesidad de hacer complicadas concatenaciones ni aprender sintaxis complicadas.

download-button

Hay una cosa que odio: mezclar bloques de PHP con bloques de HTML. Será que CakePHP me ha mal acostumbrado a tener separadas las vistas de la lógica, pero de verdad me molesta código que se ve así (tomado del tema default de WordPress):

No se a ustedes, pero a mí tanto <? ?> me marea y luego se me hace muy dificil entender donde empieza y donde termina un bloque. Desgraciadamente éste tipo de programación es muy común en el mundo de WordPress, algunos pupulares temas y plugins son verdaderos spaghettis indescifrables, y esto es en cierta manera porque asi es la manera en que WP está escrito.

CakePHP, por otra parte, tiene una solución interesante para este problema (en realidad, creo que es una solución para un problema distinto, pero denme chance) en la forma del HTMLHelper, pero para tags complicados y con muchos atributos, el código se vuelve demasiado y a mi siempre me cuesta recordar el orden de los parametros.

Cuando decidí aventarme a crear temas premium para WP, una solución para éste problema fue una de las principales razones para escribir el Duperrific Theme Engine de donde finalmente extraigo lo que ahora les presento como CSML.

Ejemplo:

Como verás csml::tag() toma un selector como parametro y regresa un tag de HTML, mientras que csml::entag() toma una cadena y la envuelve con el selector designado en el segundo parametro. En el caso de csml::entag() el segundo parametro tambien puede ser un array de selectores, lo que hará que anide los selectores uno dentro de otro, empezando por el último selector del array.

Aunque la forma más facil de utilizar csml, es usando las dos funciones incluídas: t() y en() que son wrappers para csml::tag() y csml::entag() respectivamente y además imprimen el tag.

Un ejemplo más de la vida real:

Apenas estoy empezando en esto de liberar cosas que he hecho, así que espero que les resulte tan útil como a mí me ha resultado. Si la usan me avisan y si encuentran algún bug me dicen o, mejor aún, forkean el proyecto y lo arreglan.

download-button

Atlas, un IDE de desarrollo WYSIWYG para Cappuccino

Cuando descubrí cappuccino por primera vez me quedé completamente asombrado y supe que iba a ser un parteaguas en la forma en que se programan aplicaciones web.

Curiosamente no ha hecho tanto ruido como yo esperaba, jQuery, Prototype y MooTools siguen siendo las herramientas favoritas de muchos de nosotros. Pero viendo esto que están desarrollando, creo que esto puede cambiar en cualquier momento: Atlas, un IDE de desarrollo 100% WYSIWIG corriendo en el navegador

Aqui les dejo un video para qe lo vean en acción:

Gestures en el iPhone con Javascript

Me quedé agradablemente sorprendido con esta implementación en Javascript de los gestures (¿Cual es la traducción al español de esa palabra?) típicos de las aplicaciones del iPhone. Me pregunto si la masa de usuarios de esta plataforma justifica desarrollar aplicaciones (o sitios) web específicos. ¿No es casi como una versión 2.0 del internet explorer required noventero?

En fin, la demo me parece increíble y me dan ganas de crear algo así.

Video en Youtube

Deshazte del CSS en línea en tu HTML

Find
Uploaded with plasq’s Skitch!

Si te llegaras a encontrar en la muy hipotética situación en la que alguien te envía un gran archivo de HTML para que lo embellezcas y descubres con horror que está lleno de in-line css y casi estás al borde del llanto ante la perspectiva de tener que quitarlo todo a mano, uno por uno, a las 2:53 de la madrugada después de un día ajetreado. ¡No te preocupes! si tu editor de texto (el mío es textmate) permite hacer búsquedas/reemplazos utilizando expresiones regulares, entonces probablemente puedas buscarlas usando la siguiente:


(style=([^>]+))

Y listo, solo falta que las remplaces con una cadena vacía. Cabe destacar que esto solo funcionará correctamente cuando el atributo style sea el ultimo del tag como en

<p class="red_paragraph" style="background:#FF0000;color:#FF6634"> [...] </p>

pero no funcionará si los atributos son al revés

<p style="background:#FF0000;color:#FF6634" class="red_paragraph"> [...] </p>

Pero como este no era el caso, no me preocupé en refinar mi expresión, después de todo eran las 2:53 de la madrugada y aun tenía que terminar de diseñar una pagina para la mañana siguiente. Pero si ustedes no saben nada de expresiones regulares y quieren aprender, yo les recomiendo que comiencen por este sitio donde explican muy bien de que va todo este rollo.

Twimbler hace ruido

Sería mentira decir que las reacciones han sido todas favorables, pero estan reseñándonos y en mi libro eso ya es muy bueno. Por ejemplo, hoy consultando mi feedreader me encontré con un post en Read Write Web—uno de los blogs referentes del web 2.0, probablemente el más importante después de Tech Crunch—donde se reseña Twimbler además de muchas reseñas más en cualquier cantidad de idiomas. Ahora mismo, Google arroja 21,000 resultados para Twimbler.

Para ser sinceros, esto es algo que no me esperaba. Mi idea al lanzar la aplicación era probarla entre un grupo de amigos que son los 10 monos que leen este blog y mis ciento y tantos followers en twitter. Esperaba recibir un poco de feedback de los sospechosos comunes y ya después quizá hacer labor publicitaria para correr la voz por la web. Algo así como una pequeña prueba contenida.

Pobre iluso que soy, en estas épocas de twitter, no hay tal cosa como grupos contenidos. Publicas algo y sale.

Gracias a todos los que han enlazado y reseñado por toda la red este servicio. Pero sobre todo a quienes han estado twimbleando desde el primer día. Les prometo que vienen interesantes updates en camino.

Amazon SimpleDB ¿Nos olvidamos de los problemas de escalabilidad?

Hace unos seis meses, mientras revisaba la viabilidad de un proyecto que tenía en la cabeza, y mientras revisaba los servicios ofrecidos por Amazon Web Services desee que existiera algo como SimpleDB. Un nuevo servicio web que Amazon acaba de anunciar como beta limitada.

Basicamente, SimpleDB es un servicio web que promete ayudar a los desarrolladores y administradores de sitios web a olvidarte de pensar como rayos vas a lograr que tu base de datos no se caiga cuando tu trafico llegue hasta donde sueñas que llegue. Normalmente, si diseñaste cuidadosamente tu aplicación para que sea escalable, ademas debes ir añadiendo hardware para poder satisfacer las demandas de tráfico de tu sitio. Usando este servicio de AWS, es posible pasarle a Amazon toda esa carga. Ellos ya tienen los servidores, el poder de procesamiento y los discos duros que hagan falta y por un precio muy bajo los ponen a disposición de los desarrolladores .

Aunando éstae a los otros servicios de AWS ya es una cosa posible hacer aplicaciones web sin preocuparte por tener ni servidores. Se nos acaban los pretextos para no lanzar nuestras ideas.

Al paso que vamos, probablemente la web 3.0 sera powered by amazon

Sobre CakePHP 1.2

No recuerdo si ya lo había mencionado, pero la próxima versión de Cake, la 1.2 va a ser una cosa impresionante. Aunque la versión actual estable es una chulada, es una nada comparada con esta nueva versión que muchos nos hemos decidido a usar aunque su API aun no sea 100% estable. Actualmente está en fase pre-beta y se espera que en muy poco tiempo salga la esperada versión beta finalmente.

Podría describirles con detalle cuales son las ventajas de esta nueva versión, pero no lo haré por que hace muy poquito lo hizo Carlos Leopoldo en este excelente post

Leanlo y diganme si no se les hace agua la boca. A ver si un dia de estos me animo y reseño con detalle una o dos de las características que más me hacen feliz.

Una pregunta para mis amigos desarrolladores

Como hace poco les adelante, estoy trabajando en un nuevo proyecto que increiblemente está casi listo para declararlo una versión alfa ( Los que me conocen saben lo increible que es esto, dada mi reputación de creador de vaporware).

Pero a raiz de esto me han salido algunas dudas: Dede el principio he pensado en liberarlo como codigo abierto pero la verdad es que la tarea me asusta un poco porque es algo que jamas he hecho y hasta ahora ni siquiera he participado activamente en ningún proyecto (mi participacion en CakePHP es muuuy pasiva). Así que no tengo ni idea de como empezar.

Ademas no se que licencia escoger ni que usar para administrar el proyecto ni donde hospedarlo… bueno, la verdad es que no se nada.

Asi que si en la audiencia hay gente que sepa de ésto y tenga interes en orientarme y pasarme tips o ligas que me sean de utilidad, pues se los agradecería mucho.

Ruby on Rails: después del hype

Cualquiera que este involucrado en desarrollo web y/o esté interesado en la web 2.0 y no haya escuchado hablar de Ruby on Rails es porque tal vez estaba muy ocupado desarrollando applets de java para netscape 4 o anidando tablas en frontpage. De cualquier forma, aunque no me voy adetener a explicar en detalle qué es Ruby on Rails (en adelante. RoR) les resumiré que es un framework de desarrollo rápido de aplicaciones web que David Heinemeier Hansson extrajo de su propio código tras programar Basecamp para la compañía que probablemente es la startup 2.0 por excelencia: 37 Signals. Y que liberó bajo licencia de código abierto en 2004.

La salida de RoR marcó un parteaguas para todos los que programamos para web (especialmente para los que somos un poco desordenados y perezosos) por la facilidad de uso que presentaba y la introducción de conceptos de arquitectura de software como MVC, DRY, y la famosa filosofía de convención sobre configuración. Además, RoR también inició la moda de los screencasts con aquel famoso video donde demostraban que se podía desarrollar un sistema de blogs en apenas 15 minutos (creo que eran 15 minutos, ya no lo pude encontrar en el sitio oficial) que basto para que muchos nos volcasemos por completo ante la promesa del desarrollo sin dolor y de un lenguaje (Ruby) que ademas de bonito era perfecto.

Los menos impresionables inmediatamente lanzaron la pregunta: Will it scale? (La traducción literal sería ¿Escalará? y, como todas las traducciones literales, it sucks) y 37 Signals se tomo la molestia de escribir un libro completo para responder a esa pregunta: Sean realistas, no nos importa.

Hace poco, cuando por primera vez una aplicación escrita en RoR tuvo verdadero éxito masivo ( Así es, ninguna de las aplicaciones de 37 Signals puede considerarse un éxito verdaderamente masivo) obtuvimos la respuesta a esa vieja pregunta y ésta es: No, RoR no escala. Y si lo presionas de más se tropesará y se quedará catatónico.. O como dijera mejor el mismo Alex Payne ( desarrollador de Twitter) :


Correr sobre Rails nos ha forzado a lidiar con problemas de escalado—Problemas que cualquier sitio en crecimiento eventualmente afronta—creo que mucho antes de lo que hubieramos tenido que hacerlo con otro framework

[...]

Asi que no se trata solo de costo, es tiempo, y tiempo que es muy precioso cuando la gente no puede entrar a tu sitio. Ninguno de estas soluciones de escalado son tan fáciles y divertidas como desarrollar.

Estas declaraciones, naturalmente, hicieron que la comunidad railera se enfureciera. Y digo naturalmente porque la comunidad de RoR es muy parecida a la de los fans de Apple, a la de los hinchas del Atlas y a los seguidores de AMLO, es decir, su fidelidad es tanta que raya en la irracionalidad. Para un verdadero Railero, RoR es la panacea, Ruby es el lenguaje perfecto, DHH es un dios que los vino a liberar de los lenguajes inferiores.

Será por que hay un apartado completo en el libro de Getting Real llamado Ten un enemigo pero como estrategia de marketing a RoR siempre le funcionó bien compararse con otros lenguajes. Es cosa común en casi toda la literatura pro-rails encontrar mofas de el pesado y lento monstruo corporativo que es Java frente a RoR y el asquerosamente feo, ineficiente y retrograda lenguaje que es PHP frente a Ruby. De hecho, hay una especie de leyenda muy famosa en este submundillo que cuenta que la primera intención de DHH fue programar Rails en PHP pero que llego a la conclusión de que era imposible y que tal proeza solo podía ser llevada a cabo con Ruby.

Ahora imaginen lo que sintió la comunidad cuando la semana pasada, Derek Sivers de CDBaby (una compañia que es la mayor distribuidora de musica verdaderamente independiente por internet) escribió un articulo llamado Siete razones por las que regresé a PHP despues de dos años en Rails articulo en el que, despues de haber dado una entrevista que casi era texto canónico para los raileros, hace una declaración que raya en la blasfemia:


“¿Hay algo que Rails pueda hacer y que PHP no pueda?”

La respuesta es no.

Tiré 2 años de código de Rails y abrí un nuevo repositorio de Subversion.

Luego en tan solo DOS MESES, yo solo, sin ni siquiera decirle a nadie que lo estaba haciendo, usando nada mas que vi, y ningún framework, reescribí CD Baby desde cero en PHP. ¡Listo! ¡Liberado! Y funciona sorprendentemente bien.

¿Como han cambiado las cosas en dos años no? ¿Que va a pasar ahora que sabemos que, efectivamente, rails no escala y que esta muy lejos de ser la perfección que nos vendían? Personalmente, hace mucho que me decidí por CakePHP que tiene muchas de las características que hicieron famoso a RoR pero con la confianza de que es PHP por dentro, ese versatil lenguaje que he aprendido a querer.

Ojala esto sirva para que de una vez entendamos lo estúpido que es apasionarse con las herramientas al nivel de hacer menos las otras herramientas y a aquellos a quienes las usan.