Más vale tarde que nunca: Acá va un post dedicado a la anti-conferencia más importante de la web para emprendedores, desarrolladores, diseñadores e inversores en Buenos Aires.
Estuvo genial. Es una gran oportunidad para aprender y estar en contacto con la comunidad de desarrolladores web en Argentina. Es increíble lo bien que resultó pese a/gracias a su espíritu libre y desestructurado. Mis felicitaciones y agradecimientos a los organizadores y sponsors.
Tan desestructurado es BarCamp que hasta yo di una charla, que a continuación les resumo:
En Popego, tuve la oportunidad de trabajar mucho en cuestiones de escalabilidad. Pasando de las aplicaciones web más simples (un servidor con acceso a una base de datos) a las más complejas (con distribución de carga horizontal, utilizando colas de trabajo para aprovechar los recursos de distintos nodos, etc.).
Dicen los mitos de la escalabilidad que en YouTube tienen la siguiente receta: 1. Identificar cuellos de botella. 2. Arreglarlos. 3. Tomar. 4. Dormir. 5. Descubrir nuevos cuellos de botella.
Es decir que es una continua iteración para mejorar las capacidades de la aplicación.
Un ejemplo de los extremos a los que se llega: Como servidor web, hemos recurrido a nginx en lugar de Apache. La documentación oficial de este servidor desarrollado en Rusia nos resulta completamente ilegible ya que está escrita en... ¡ruso!
¿Qué es la escalabilidad? Es la habilidad de llevar aplicación los pequeños números a los grandes. E incluso viceversa: de los grandes a los pequeños. Que una aplicación crezca no significa que sea escalable. Y que una aplicación sea escalable tampoco significa que crezca. Una aplicación escalable es la que se puede hacer crecer (y decrecer) fácilmente.
Escalar es un dolor (de...). Es estar continuamente preocupados por las capacidades de la aplicación, siempre al borde de la máxima eficiencia posible.
Un cuello de botella muy común en donde probamos muchas alternativas es en las bases de datos. En muchas aplicaciones web se están reemplazando los motores de base de datos relacionales (RDBMS) por sistemas de almacenamiento por clave-valor. La desventaja es perder parte de las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) de una base de datos relacional, especialmente las consultas transaccionales y la potencia de SQL (con joins, grup-by, order-by, etc.). La ventaja es ganar eficiencia al utilizar consultas de más bajo nivel, con llamadas que ni siquiera tienen que compilar SQL y acceden rápidamente a los recursos buscados por clave-valor. A la vez, muchas de estas bases de datos alternativas ofrecen mejores soluciones para alta disponibilidad, tolerancia a fallas y replicación. En esto uno no puede dejar de estar abierto continuamente a otras alternativas ya que la escalabilidad gobierna.
lunes 16 de noviembre de 2009
lunes 26 de octubre de 2009
HOWTO install nginx with mod_wsgi
Cómo instalar nginx con mod_wsgi en 3 pasos.
Probado en Ubuntu Linux. Pre-requisitos (paquetes que se pueden instalar via apt-get): build-essential, mercurial, libpcre3-dev y libssl-dev. (Creo que no me olvido de ninguno.)
Si todo sale bien, el "configure" termina con un resumen como este:
Más sobre configuración de nginx en la nginx configuration wiki.
Probado en Ubuntu Linux. Pre-requisitos (paquetes que se pueden instalar via apt-get): build-essential, mercurial, libpcre3-dev y libssl-dev. (Creo que no me olvido de ninguno.)
- Bajar la última versión de nginx 0.7 de http://sysoev.ru/nginx/ (me re-caben los rusos) y el módulo mod_wsgi de su repositorio Mercurial:
wget http://sysoev.ru/nginx/nginx-0.7.63.tar.gz tar -zxvf nginx-0.7.63.tar.gz hg clone http://hg.mperillo.ath.cx/nginx/mod_wsgi/
- Obtener y aplicar el parche para mod_wsgi, como se explica en este thread de gmane.comp.web.nginx.english:
wget http://lophus.org/~fred/mod_wsgi_patch.diff cd mod_wsgi/ patch -p1 < ../mod_wsgi_patch.diff cd ..
- Compilar nginx:
cd nginx-0.7.63/ ./configure --add-module=../mod_wsgi/ --with-debug make sudo make install
Si todo sale bien, el "configure" termina con un resumen como este:
Configuration summary + using system PCRE library + OpenSSL library is not used + md5: using system crypto library + sha1 library is not used + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp"
Más sobre configuración de nginx en la nginx configuration wiki.
The Beatles Playlist in Unicode Art
☞ comes the ☼
A hard ☀'s ☾
☼ ♔
Can't buy me ♥
Back in the ☭
Lucy in the ☁ with ♦
Please Mr. ✉man
Hey ✡de
She's got a ticket to ♞
The Long and ♒ Road
♀ came in through the bathroom ☐
And your bird can ♫
Her ♕
⚐ (I need somebody)
I'm ☺ just to dance with you
A hard ☀'s ☾
☼ ♔
Can't buy me ♥
Back in the ☭
Lucy in the ☁ with ♦
Please Mr. ✉man
Hey ✡de
She's got a ticket to ♞
The Long and ♒ Road
♀ came in through the bathroom ☐
And your bird can ♫
Her ♕
⚐ (I need somebody)
I'm ☺ just to dance with you
viernes 18 de septiembre de 2009
Python en la Web Semántica
Como prometí (más vale tarde que nunca), paso a resumir en este post algunas de las ideas que presenté en la charla de "Python en la Web Semántica" en PyCon 2009 Argentina.
Todos sabemos lo que ha crecido la web en los últimos años (de hecho, no existía hace 20 años). Hoy en día sigue creciendo exponencialmente, lo que significa que hoy hay más usuarios nuevos de los que hubo ayer. ¿Qué se hizo para que esto sea posible? ¿Cuál es la receta?
En los últimos años, surgió una segunda generación de desarrollo y diseño web, conocida como web 2.0, en la que se incorporaron nuevos "ingredientes" en la forma de hacer la web. Pero hoy siguen apareciendo nuevas tendencias para desarrollar y pensar la web distintas incluso a las más recientes. Es decir que probablemente estemos viviendo la muerte de la web 2.0. Por lo tanto, más que preguntarse qué es la web 2.0, sería bueno plantearse qué fue la web 2.0 y cuáles son las nuevas formas de desarrollo web que están surgiendo.
Se podrían decir muchas cosas acerca de la web 2.0. Pero esta presentación se centra en 12 "ingredientes" de la receta que, en términos de ingeniería del software, serían 12 patrones.
Todos sabemos lo que ha crecido la web en los últimos años (de hecho, no existía hace 20 años). Hoy en día sigue creciendo exponencialmente, lo que significa que hoy hay más usuarios nuevos de los que hubo ayer. ¿Qué se hizo para que esto sea posible? ¿Cuál es la receta?
En los últimos años, surgió una segunda generación de desarrollo y diseño web, conocida como web 2.0, en la que se incorporaron nuevos "ingredientes" en la forma de hacer la web. Pero hoy siguen apareciendo nuevas tendencias para desarrollar y pensar la web distintas incluso a las más recientes. Es decir que probablemente estemos viviendo la muerte de la web 2.0. Por lo tanto, más que preguntarse qué es la web 2.0, sería bueno plantearse qué fue la web 2.0 y cuáles son las nuevas formas de desarrollo web que están surgiendo.
Se podrían decir muchas cosas acerca de la web 2.0. Pero esta presentación se centra en 12 "ingredientes" de la receta que, en términos de ingeniería del software, serían 12 patrones.
- Information sharing
- Web 1.0 (odio todo lo que sea "n.0" pero llamemos así al viejo paradigma de la web): "La web es una enorme fuente de información."
- Web 2.0: "La web es una buena fuente de información en la medida que sea un buen sumidero de información." Los usuarios no sólo consumen sino que generan la información.
- Web 3.0: Aparece una nueva dimensión: Siguen estando los usuarios y los sitios, aplicaciones y servicios web como los conocemos, pero algunos de estos servicios pertenecen a la "web semántica", una dimensión que se encarga de analizar y agregar valor a la información que fluye entre usuarios y computadoras (incluso entre sí).
- User-centered design
- Web 1.0: Está centrada en servir recursos.
- Web 2.0: Está centrada en los usuarios.
- Ejemplos típicos: Flickr (no es una simple galería de fotos, sino que su poder está en el contenido generado por usuarios), YouTube (ídem con videos).
- ¿Qué nos ofrece Python para desarrollar este tipo de aplicaciones web?
- Python 3.0 = "Batteries included" (su biblioteca estándar ya provee una base muy completa para cualquier tipo de funcionalidad)
- Python Modules = "Swiss Army Knife" (hay una gran variedad de frameworks y herramientas para todo tipo de desarrollos)
- Model-View-Controller Architecture
- Web 1.0: Un sitio web es un repositorio de páginas estáticas.
- Web 2.0: Un sitio web es una verdadera aplicación multi-capa, con estado. Un cliente (típicamente un navegador) hace un pedido a un servidor, que a través de un "route dispatcher" lo deriva a un controlador. Dicho controlador resuelve con consultas a los objetos del modelo de la aplicación (persistentes en alguna base de datos) y determina qué vista usar para mostrar los resultados que devuelve en la respuesta al cliente.
- Python Web Frameworks: Django, Pylons, TurboGears, Google App Engine, Zope, Plone (CMS), MoinMoin (wiki), Python Paste, CherryPy
- Algunas nuevas tendencias: La separación de las capas (especialmente vista y modelo/datos) se puede dar entre distintos servicios web. Por razones de escalabilidad, se están abandonando los motores de base de datos relacionales (RDBMS) en favor de otros orientados al almacenamiento por clave-valor, con menores posibilidades de consulta (sin joins, no transaccionales, etc.), pero más eficientes para grandes volúmenes de información, escalables y tolerantes a fallas.
- Participation & collaboration
- Web 1.0: Publicación individual. "Yo pongo mi homepage personal y me ocupo de mantenerla."
- Web 2.0: Edición colaborativa. Ventajas de varios editando el mismo documento (ejemplos: Wikipedia, blogs, Google docs).
- Social networking
- Web 1.0: La web es una red de computadoras.
- Web 2.0: La web es una red de amigos.
- Esta idea tan simple es la que le dio grandes resultados a Facebook y Twitter.
- Una tendencia importante en esto es el paso a la "real-time web", basada en actualizaciones instantáneas de lo que le pasa a la gente.
- Search & recommendation engines
- Web 1.0: Navegar para descubrir
- Web 2.0: Descubrir automáticamente con motores de búsqueda y de recomendación (sólo se ve el 10% del iceberg). Ejemplo: Last.fm
- Este es un punto clave en el que seguramente trabajará la web semántica en los próximos años.
- ¿Qué hace una web semántica? 4 cosas:
- Integración o aggregation (recolectar datos de otros servicios)
- Definición de ontologías (determinar un modelo de entidades y relaciones dentro de un dominio)
- Análisis semántico (determinar qué significa la información procesada)
- Agregado de valor (filtrado, recomendación, asociación, etc.)
- Preguntas que surgen en el análisis semántico:
- ¿De qué habla (cuál es el significado) de un determinado documento HTML?
- ¿Cuál es el contenido relevante de un determinado documento HTML?
- ¿En qué idioma está texto determinado?
- ¿Qué palabras son equivalentes entre sí? (stemming, misma raíz)
- ¿Se pueden inferir tags automáticamente a partir de un texto?
- ¿Cómo se pueden eliminar palabras comunes como artículos y preposiciones? (stop words)
- ¿Cuál es la estructura sintáctica de una oración o proposición? (part of speech)
- ¿Cómo se puede eliminar la ambigüedad entre los distintos significados de una misma palabra?
- ¿Es posible agregar información de contexto eficientemente?
- ¿Cómo se puede mejorar la relación señal-ruido (signal to noise ratio) de la información que consume un usuario?
- ¿Cómo ser pueden identificar digramas en un texto?
- ¿Cuántas y cuáles son las categorías apropiadas para clasificar contenidos en una determinada ontología?
- Demo de Meaningtool
- Folksonomy
- Web 1.0: Taxonomy (clasificación jerárquica, conocida a priori)
- Web 2.0: Folksonomy (clasificación por etiquetas, colaborativa, los elementos pueden pertenecer a distintos lugares a la vez, las colecciones emergen solas)
- En cuanto a la web 3.0, ya se mencionaron varias consideraciones de clasificación de información en el punto anterior.
- Community & collective intelligence
- Importancia de construir una comunidad que contribuya a la calidad del servicio. "Wisdom of crowds" (la inteligencia colectiva es mejor que la individual)
- Ejemplo: Ratings, rankings o recomendaciones en Digg y StumbleUpon.
- Inter-operability & data-portability
- Web 1.0: La única forma de consumir información de otros sitios es por HTML scraping a través de web crawlers o spiders (bots).
- Web 2.0: Web syndication (feeds RSS, Atom, RDF, etc.), widgets, open APIs, integración de datos (aggregation). Todo servicio web 2.0 que se precie dedica gran parte de su esfuerzo a proveer una buena API.
- Ejemplos de consumo de APIs y HTML scraping con herramientas de Python.
- Nombres que se escuchan para la web 3.0: Microformats, RDF, OWL, SPARQL (ejemplo: DBpedia), patrón Publisher-Subscriber (ejemplo: Google Wave)
- Rich User Experience
- Web 1.0: La interacción usuario-servicio se da a través de formularios, cargando nuevas páginas con cada envío.
- Web 2.0: La interacción se da asincrónicamente (sin cargar otra página), actualizando la vista por eventos con client-side scripting (Javascript).
- Web 3.0: Web OS? (¿Hacia una web cada vez más cercana a un sistema operativo?)
- Separation of content and presentation
- Web 1.0: Cluttered HTML
- Web 2.0: Estructura y contenido separados de la vista. Permite independencia, modularización, versatilidad, etc.
- Web as a Platform (Ubiquity)
- Web 1.0: Especificaciones "propietarias", dependencia de plataforma, "browser wars"
- Web 2.0: Estándares web, independencia de dispositivo, diseño multi-plataforma
- Web 3.0: Está en cualquier dispositivo (computadoras con cualquier sistema operativo y cualquier navegador, cualquier teléfono celular o dispositivo "de mano", TV, auto, consolas de juegos, teléfono, etc.): Omnipresencia (ubiquity). Estos dispositivos son las ventanas o portales de acceso a la web.
- Podríamos comparar a la web con un gran robot:
- No es exactamente electro-mecánico
- Entorno: El mundo (la web puede representar cualquier cosa: fotos, videos, eventos, amigos, música, lecturas, lugares, artículos de compras, etc.)
- Sensores: Las interfaces humano-máquina, que permiten a la web captar lo que pasa en su entorno
- Actuadores: Las interfaces humano máquina, que permiten modificar el entorno al menos indirectamente
- Inteligencia Artificial: Mayor a medida que aparecen más y mejores aplicaciones y servicios web. A mejorar en la era de la web semántica.
- La web, como un robot, procesa datos y responde a estímulos
- ¿Es un sistema autónomo? ¿Es consciente de sí mismo?
- Es tolerante a fallas
- Es inteligente
- Aprende
- Evoluciona
- Suena ilusorio, pero:
- ¿Podríamos imaginar hace 20 años una web como la que hoy conocemos?
- Además, ya existen aplicaciones... como Wolfram Alpha.
Conclusiones:
- Podemos pensar la web como una gran inteligencia artificial, similar a un robot
- La misión de la web semántica en los próximos años va a ser agregar valor a la información de la web
- Las tecnologías no fueron lo más determinante en la evolución de la web, sino la aplicación de patrones de diseño y desarrollo web.
¡Gracias por presenciar la presentación, leer este resumen o comentar este post! :)
Etiquetas:
argentina,
events,
python,
semantic web,
web2.0
martes 8 de septiembre de 2009
PyCon Argentina 2009: La primera conferencia hispanoparlante de la comunidad de desarrolladores Python
El viernes 4 y sábado 5 de septiembre tuve la oportunidad de asistir a PyCon Argentina 2009, la primera conferencia en español de la comunidad de desarrolladores Python.
Debo admitir que el evento superó mis expectativas. Estuvo muy bien organizado (kudos a PyAr) y si bien nos queda mucho por aprender a los que tuvimos el honor de ser disertantes, creo que el evento te abre la cabeza y te ayuda a no perder el foco en cuanto a lo que uno puede desarrollar para uno y para los demás. Asimismo, te da un panorama de las necesidades de la comunidad de desarrolladores Python local y mundialmente.
Lo que más me gustó:
En el próximo post, trataré de resumir algunos de los puntos más importantes de la charla que estuvo a mi cargo, sobre "Python en la Web Semántica". Se trata de los patrones de la web 2.0 y las nuevas tendencias de la web semántica. O como estuve diciendo "marketingueramente", de la muerte de la web 2.0 y el futuro de la web como una gran AI.
La opinión de Uds. también vale. Por favor, comenten!!!
Debo admitir que el evento superó mis expectativas. Estuvo muy bien organizado (kudos a PyAr) y si bien nos queda mucho por aprender a los que tuvimos el honor de ser disertantes, creo que el evento te abre la cabeza y te ayuda a no perder el foco en cuanto a lo que uno puede desarrollar para uno y para los demás. Asimismo, te da un panorama de las necesidades de la comunidad de desarrolladores Python local y mundialmente.
Lo que más me gustó:
- Haber contado con referentes como Jacob Kaplan Moss, gurú de Django (que faltó a la DjangoCon para venir a las PyCon de Argentina y Brasil), y Collin Winter, ingeniero de software de Google, en las charlas plenarias. Fueron "world-class".
- Haber aprendido al menos algo en cada charla programada a la que fui. Especialmente algunas que me dispararon muchas ideas.
- La modalidad de charlas relámpago. Algunas como la del corrector ortográfico en 5 minutos fueron geniales.
- Mucha gente interesada en robots y temas de AI. ¡Es una buena señal!
- Que PyAr sea "federal" y planifique sus próximas conferencias en Córdoba, por ejemplo.
- Espíritu de comunidad y buena onda contagiosos.
- Poca experiencia de algunos disertantes como yo :P En esto vamos a ir mejorando con los años.
- Los horarios fueron bastante duros. (O a los programadores nos cuesta demasiado dejar de laburar en el horario típico de día de semana y levantarnos temprano un sábado. Depende cómo se mire.)
- Lamento haberme perdido algunas charlas. Pero es difícil predecir si la charla realmente te va a resultar útil y además no se puede estar en todos lados.
En el próximo post, trataré de resumir algunos de los puntos más importantes de la charla que estuvo a mi cargo, sobre "Python en la Web Semántica". Se trata de los patrones de la web 2.0 y las nuevas tendencias de la web semántica. O como estuve diciendo "marketingueramente", de la muerte de la web 2.0 y el futuro de la web como una gran AI.
La opinión de Uds. también vale. Por favor, comenten!!!
Etiquetas:
argentina,
community,
development,
events,
python
sábado 27 de junio de 2009
Ranking Top 42 de Estrategias del Electorado
- Voy a votar a la derecha para no hacerle el juego al kirchnerismo.
- Voy a votar al kirchnerismo para no hacerle el juego a la derecha.
- Aunque el kirchnerismo también sea de derecha.
- Voy a votar al MST para pegarle al kirchnerismo con la izquierda.
- Voy a votar a De Narváez para pegarle al kirchnerismo con la ultraderecha.
- Voy a votat a la Coalición Cívica para pegarle al kirchnerismo con el conservadurismo apocalíptico de clase media, salpimentado con algunos toques radicales, ruralistas y neoliberales.
- Voy a votar a Solanas para pegarle al kirchnerismo con una izquierda tibia observada con una benévola sonrisa condescendiente por la utraderecha.
- Voy a votar al Juez Cruciani para pegarle al kirchnerismo con él, es decir, yo, porque yo (el Juez Cruciani), soy usted (yo).
- Voy a votar a De Narváez porque soy antiperonista. Ah, pará, no, cierto que De Narváez es peronista.
- Voy a votar a Michetti porque soy antiperonista, ah, pará, no, si el Pro está aliado a De Narváez que es peronista.
- Y aparte Macri hacía negocios medio turbios con Menem, que es peronista.
- Igual que el papá, que después se hizo amigo de Kirchner.
- Que es peronista.
- Mejor voy a votar a Prat Gay porque soy antiperonista, a no, pará, cierto que Prat Gay fue funcionario de Kirchner.
- Que es peronista.
- Ya sé, voy a votar a Solanas porque soy antiperonista, ah,no, pará, cierto que Solanas era de la izquierda peronista.
- Ya sé, ya sé, ya sé, voy a votar al kirchnerismo porque soy antiperonista. ¡Son los únicos que no pueden cantar la marchita!
- Voy a votar cualquier cosa contra el kirchnerismo porque me da miedo que usen el último tramo de su Gobierno para hacer todas las cagadas que no se animaron a hacer hasta ahora, y esto ya es mucho decir.
- Voy a votar a favor del kirchnerismo porque me da miedo que en un par de añitos estemos diciendo “che, ahora a la distancia la verdad que este Kirchner era un copado”.
- Voy a votar contra Kirchner porque estoy cansado de que me griten.
- Voy a votar contra Elisa Carrió porque estoy cansado de que me griten.
- Voy a votar contra De Narváez porque estoy cansado de que me griten con voz impostada de actor de los ’40 y risa de psicópata.
- Voy a votar contra Macri porque estoy cansado de que me hablen con frases mal redactadas y la boca medio cerrada.
- Voy a votar contra Michetti porque estoy cansado de que me hablen con voz nasal y haciéndose la sufrida profesional.
- Voy a votar contra Scioli porque estoy cansado de que me hablen con voz abotargada de haber olvidado tomar unas pastillas.
- Voy a votar contra Solanas porque estoy cansado de que me hablen con voz aguardentosa de tío borracho que se hace el bohemio.
- Voy a votar contra el Juez Cruciani porque estoy cansado de que me hablen con voz medio bajita y mala dicción, o sea con mi voz, porque yo soy él (o sea, el Juez Cruciani).
- Voy a votar a De Narváez porque soy comunista y quiero acelerar las contradicciones del capitalismo.
- Voy a votar a Zamora porque soy capitalista y quiero acelerar las contradicciones del trotskismo.
- Voy a votar a Kirchner (o a De Narváez, o a Macri, o a Michetti, o a Prat Gay, o a Solanas) porque soy gorila y quiero acelerar las contradicciones del peronismo.
- Voy a votar al Juez Cruciani porque soy autodestructivo y quiero acelerar las contradicciones del Juez Cruciani, o sea las mías (las del Juez Cruciani).
- Voy a votar a De Narváez porque está ganado Kirchner y quiero un Congreso equilibrado.
- Voy a votar a Heller porque está ganando Michetti y quiero un Congreso equilibrado.
- Voy a votar a Solanas porque está ganando el establishment político de derecha y quiero un Congreso equilibrado.
- Voy a votar a Luis Patti porque está ganando la corrupción y el zurdaje y quiero un Congreso equilibrado.
- Voy a votar a Kirchner aunque sin mucha convicción porque está haciendo todo para el culo, no arregló mínimamente la situación social y tiene más propiedades que el aloe vera.
- Voy a votar a De Narváez aunque sin mucha convicción porque es un multimillonario psicópata, tiene un tatuaje, da medio pánico berlusconianio y su mejor argumento de venta es repetir los chistes que hace el imitador.
- Voy a votar a Michetti aunque sin mucha convicción porque en cuanto alguien le hace una pregunta mínimamente desafiante –por ejemplo, cuánto sale el boleto de colectivo o qué proyecto de ley tiene- se le tambalea todo su mundo y no sabe dónde está, qué pasa, quién es.
- Voy a votar a Prat Gay aunque sin mucha convicción porque no jodamos, es un golden boy. La otra vez salió diciendo que pedirle a los empresarios que pongan a la gente en blanco era “recesivo”. Tudo bem, tudo legal, ¡bien, Don Carlos!
- Voy a votar a Solanas aunque sin mucha convicción porque últimamente hoy lo apadrina hasta Grondona y es como que le están sacando el glamour.
- Voy a votar a Zamora, el MST, el PO, etc. aunque sin mucha convicción porque andamos tan derechistas que no va a entrar ni uno.
- Voy a votar al Juez Cruciani aunque sin mucha convicción porque no quiere laburar y en cuanto ve un billete pierde toda la compostura. Me refiero, claro, no al Juez Cruciani per se, sino a mí (yo), que soy él (el Juez Cruciani).
Disclaimer: Esta genialidad me llegó por e-mail. Desconozco su autoría, es decir, no me la atribuyo.
miércoles 3 de junio de 2009
My Favourite Irish Blessings
An Old Irish Blessing
May the road rise up to meet you.
May the wind always be at your back.
May the sun shine warm upon your face,
and rains fall soft upon your fields.
And until we meet again,
May God hold you in the palm of His hand.
Irish Marriage Blessing
May God be with you and bless you.
May you see your children's children.
May you be poor in misfortunes
and rich in blessings.
May you know nothing but happiness
from this day forward.
Remembered Joy
Don't grieve for me, for now I'm free!
I follow the plan God laid for me.
I saw His face, I heard His call,
I took His hand and left it all...
I could not stay another day,
To love, to laugh, to work or play;
Tasks left undone must stay that way.
And if my parting has left a void,
Then fill it with remembered joy.
A friendship shared, a laugh, a kiss...
Ah yes, these things I, too, shall miss.
My life's been full, I've savoured much:
Good times, good friends, a loved-one's touch.
Perhaps my time seemed all too brief—
Don't shorten yours with undue grief.
Be not burdened with tears of sorrow,
Enjoy the sunshine of the morrow.
Bless This House
Bless this house, o Lord, we pray.
Make it safe by night and day.
Bless these walls so firm and stout,
Keeping want and trouble out.
Bless the roof and chimney tall,
Let thy peace lie over all.
Bless the doors that they may prove
Ever open to joy and love.
Bless the windows shining bright,
Letting in God's heavenly light.
Bless the hearth a-blazing there,
With smoke ascending like a prayer.
Bless the people here within...
Keep them pure and free from sin.
Bless us all, that one day, we
May be fit, O lord, to dwell with Thee.
From Saint Patrick's Breastplate
Christ be with me
Christ before me
Christ behind me
Christ in me
Christ beneath me
Christ above me
Christ on my right
Christ on my left
Christ where I lie
Christ where I sit
Christ where I arise
Christ in the heart of every man
who thinks of me
Christ in the mouth of every man
who speaks of me
Christ in every eye that sees me
Christ in every ear that hears me
Salvation is of the Lord.
Said in the morning when rising...
Christ be with me,
be after me,
be before me,
and be at my right and left hand.
May everything I do be for Christ.
Irish Best Wishes
May there always be work for your hands to do.
May your purse always hold a coin or two.
May the sun always shine on your windowpane.
May a rainbow be certain to follow each rain.
May the hand of a friend always be near you.
May God fill your heart with gladness to cheer you.
Luck of the Irish
Wherever you go and whatever you do,
May the luck of the Irish be there with you.
Suscribirse a:
Entradas (Atom)

