Anotaciones de diversos temas relacionados con código abierto, metodologías de desarrollo y programación con Ruby on Rails
jueves, febrero 06, 2014
Reseña del libro "Learning Mongoid"
Sin embargo, después de leer varias reseñas en sitios como Amazon y similares no quise seguir el mismo formato: leer de inicio a fin el libro y publicar mis comentarios.
En lugar de eso quiero hacerlo como un reporte de avance, cada capítulo leído compartir mis opiniones sobre el tema, como presentó la idea el autor, qué me parecieron los ejemplos del texto.
Así que a partir de hoy inicio la lectura de “Learning Mongoid” de Gautam Rege.
Espero me acompañen en esta lectura.
Finito.
Book Review: Learning Mongoid
But after reading many book reviews in sites like Amazon I don't want to use the same format: read the book from beginning to end and then publish my comments.
What I want to do is to publish an advance report for each chapter I read and share my opinions about the subject, the way the author presented the idea, how much I liked the explanations or the code.
So, I’m beginning to read “Learning Mongoid” by Guatam Rege.
Hope you join me in this reading.
Finito.
martes, octubre 20, 2009
WorkshopCamp Cd. de México
WorkshopCamp será un evento con talleres con una duración de 3 horas impartidos por quien tenga algo que compartir y enseñar en un salón con temas orientados al diseño y desarrollo web.
Habrá dos turnos de talleres, el primero de 10 a 13 hrs y el segundo de 14 a 7 hrs.
El evento se llevará a cabo el próximo Domingo 25 de octubre 2009 en las instalaciones de Ked México, ubicadas en Av. Revolución No. 374, Col. San Pedro de los Pinos a una cuadra del metro San Pedro de los Pinos en la línea 7 del metro.
En lo particular me registré para participar exponiendo sobre el tema de "Behaviour Driven Development" dentro del track de ponencias de "México On Rails". Esta vertiente de desarrollo viene a completar mucho de lo expuesto en las metodologías ágiles en las cuales la interacción con el patrocinador del proyecto es indispensable. En el caso de BDD (por sus siglas en inglés) se tiene que resumir los requerimientos a aquellos que:
- Protejan las ganancias
- Incrementen las ganancias
- Reduzcan los costos
En el mundo Ruby y Ruby On Rails, se han desarrollado varias herramientas para apoyar las metodologías ágiles y BDD no es la excepción. El producto estrella en este caso es Cucumber, un framework para el soporte de los elementos del BDD. Se apoya en otro producto muy reconocido, RSpec, que permite el desarrollo de pruebas de una manera más natural y coloquial que por ejemplo Test::Unit, el framework estándar de Ruby y RoR.
Como sabemos que no todo mundo está familiarizado con Ruby y su medio ambiente, se incluirán charlas y talleres introductorios a Ruby, JRuby y una sesión de mejores prácticas.
El registro lo pueden realizar en WorkshopCamp Cd. de México.
¡Los esperamos!
Finito.
sábado, junio 06, 2009
Un día después
Alex Juárez y su equipo de trabajo se encargaron del 99% del trabajo de organización del evento el cual incluyo una extensa lista de ponentes (/me incluido) que trataron una variedad de temas pero que nos dejaron con el ansía de seguir realizando eventos de este tipo donde escuchar experiencias e ideas de gente que usa estas herramientas para ganarse el pan y no solo bluffing mercadológico para vendernos algo.
Me parece que es necesario seguir ampliando los espacios para compartir experiencias y traer más material del tema en español. Comentaba en una oportunidad que si bien existen toneladas de información en inglés, es necesario crear nuestra base de conocimientos y compartirla, intercambiar dudas, preguntas, inquietudes sin temor a no obtener respuesta ni a una competencia desleal.
Me sigue inquietando el hecho de que seguimos protegiendo nuestros 'productitos' o 'sistemitas' más que a un niño pequeño e indefenso y por otra parte, en la edición de mayo-julio de la revista Software Guru viene una entrevista a Jorge Zavala que si bien no reconozco en algún ámbito dice algunas frases que me parecen bien ciertas,
- "fail fast", si tienes una idea, enfréntala a la realidad, si es buena y funciona, invierte en ella sino continua con la siguiente.
- Necesitas gente con mentes frescas antes que grandes recursos financieros.
- Los negocios son para venderse, no quedarse toda la vida con ellos.
También hace referencia a los 'Super Happy Dev House' que se han venido realizando y en lo particular lo asocio con algunos de los eventos 'BarCamp' que han pasado. Hay gente que buscamos compartir lo que creemos bueno, nuestras experiencias y nuestras ambiciones y encontrar algunos otros con las mismas inquietudes, buscar una o más relaciones 'ganar-ganar' donde los beneficios se repartan entre los participantes.
Me quedé con un costal de ideas y un delicioso sabor de boca después de esta experiencia y sin lugar a dudas creo que este ha sido el mejor evento en lo que va del año. Realmente espero el siguiente para participar de nuevo y encontrar más personas participando, intercambiando experiencias y conocimiento.
Finito.
viernes, mayo 29, 2009
RubyCamp
miércoles, octubre 22, 2008
Podcast con invitado especial: Yo :D
Mi gran sorpresa fue recibir una invitación de parte de ellos para platicar sobre Ruby On Rails, herramienta con la que he venido trabajando durante el último año y que en el podcast comparto mi experiencia y opiniones sobre el tema y algunos comentarios adicionales.
Si no les gusta el tema, pueden buscar otros episodios en los que seguramente encontrarán algún tema de su interés y quien sabe.. a lo mejor también ingresan a las filas de los retrosexuales :P
Un agradecimiento enorme al crew de Monólogos de la Cantina @omendoza, @_kuro y por supuesto, @arturogarrido.
Finito
jueves, febrero 21, 2008
CONSOL 2008
Como el año anterior envié mi propuesta para exponer y con mucha alegría leí el correo donde me notificaron que fue aceptada. Eso me puso en un real aprieto, a partir del cambio laboral me ha quedado muy poco tiempo para dedicar a estas actividades. Pues aún así no di marcha atrás y estuve pendiente de de la fecha del evento.
El tema para la presentación fue "Rails: Desarrollo Ágil para Web" dado el amorío que traigo con este framework. Estuve leyendo varias referencias para ir organizando la presentación pero la verdad es que casi ninguna me dejo con algo que compartir así que realmente me basé en lo que he aprendido en los últimos meses.
Llegar a la sede fue menos complicado de lo que esperé y después de investigar donde se encontraba la oficina de registro, me dirigí apreciando los edificios de la uni. La verdad es que me parecieron excelentes instalaciones. A punto de llegar a mi destino me encontré con Alejandro Juárez, un excelente desarrollador y conocedor de metodologías ágiles a quien conocí en uno de esos viernes de Cova.
Resulta que Alex también envió su propuesta y fue aceptada. Y además, su presentación era a continuación de la mía. Después de saludar y conversar un poco, finalmente llegué al registro y me dieron mi gafete. Acompañado de Alex buscamos el auditorio y en lo que terminaba el ponente anterior charlamos un rato.
Finalmente llegó la hora, acomodé mi equipo y con un auditorio al 75% de ocupación inicié la presentación. Al principio, como es costumbre, me sentí bastante tenso pero al paso del tiempo me fui relajando y empecé a disfrutar el estar al frente. De hecho, mi temor inicial era que me fuera corriendo en las diapositivas y me acabara la presentación en 15 mins. Cuando me senté junto a la lap para hacer los demos casi llevaba 50 mins. :O
En el tiempo que me quedó hice una breve demo en línea de comandos y reservé cinco minutos para preguntas. No fueron muchas pero bueno, la próxima vez le voy hacer como Sandino, voy a llevar mi lista de preguntas.
Terminando la presentación se me acercó una persona que resultó ser nada menos que Carlos Ortega, otro "railero" que incluso contacté para ofrecerle chamba :D.
Cuando me despedí del auditorio, un voluntario me entregó una bolsa con "souvenirs" y un boleto para ir al comedor así que sin más nos fuimos a la gorra. :D
En una carpa, se encontraba instalado el comedor y ahí me encontré con un buen de caras conocidas: Zodman, Compermisos, Bea y otros ponentes.
Ahi conocí en vivo y en directo a Vendetta. ¡shio!. Y pues a lo que fuimos: comer, charlar y comentar sobre varios temas.
La exposición de Alex empezó con algunos problemillas proyectando la imagen... pero al final lo resolvieron. Realmente me sentí bien novato al ver todo el trabajo de Alex y su equipo.
Otro tema importante de este CONSOL es el 3er aniversario de la Revista SL en la cual he tenido la oportunidad de colaborar echando a perder los artículos :P
Finito.
lunes, diciembre 24, 2007
Instalando Ruby on Rails en Mac OS X
$ sudo port install ruby$ sudo port install rb-rubygems$ sudo gem update --system$ sudo gem install sqlite3-ruby$ sudo gem install rails --include-dependencies$ sudo gem install rails --version "= 1.2.6" --include-dependenciessábado, diciembre 08, 2007
Rails 2.0: El NexGen del desarrollo web
Para actualizar tu sistema recuerda que lo único que se requiere es ejecutar la siguiente instrucción desde una ventana de línea de comando:
C:\> gem update rails -y
Esta instrucción descargará e instalará todos los componentes necesarios. Un punto importante para tener en cuenta es que pueden existir diferentes versiones de gem instaladas al mismo tiempo, por ejemplo en mi equipo al ejecutar
C:\> gem list --local
presenta todos las gem's instaladas con el número de versión, para el caso de Rails aparece
rails (2.0.1, 1.2.6, 1.2.5)
Web-application framework with template engine, control-flow layer,
and ORM.
Cada vez que se genera un nuevo proyecto Rails, en el archivo config/environment.rb se puede encontrar la versión específica de Rails y cambiarla.
Ahora, a probar las nuevas características de esta versión.
Finito.
domingo, diciembre 02, 2007
Instalando Rails + sqlite3 en Windows XP
Pues bien, este equipo con todo y sus limitaciones alguna vez me sirvió para trabajar y ahora se me ocurrió actualizarlo al ambiente de desarrollo que utilizo. Pero para tal efecto se me ocurrió utilizar sqlite3 en lugar de cualquier otro RDBMS. Los pasos fueron los siguientes:
- Descargar e instalar Ruby.
- Descargar, extraer e instalar RubyGems.
C:\ruby-gem-0.95> ruby setup.rb- Actualizar las gem's instaladas.
C:\> gem update- Descargar sqlite3, extraerlo en un directorio y agregar ese directorio al PATH.
- Instalar la gem sqlite3-ruby
C:\> gem install sqlite3-ruby- Instalar Rails
C:\> gem install rails --include-dependencies- Presto!
C:\> rails --database=sqlite3 demo
lunes, noviembre 19, 2007
Configuración de Rails y SQL Server
Un ambiente que se va a presentar muy comunmente es Windows y SQL Server.
Entonces he aquí la receta sencilla y probada para soportar SQL Server dentro de Rails.
Primero, habrá que descargarse la gem ruby-dbi desde http://rubyforge.org/projects/ruby-dbi . ruby-dbi es un mecanismo de acceso a datos inspirado en Perl::DBI. En la gem viene incluido el soporte a varias bases de datos y durante el proceso de instalación se selecciona cuales se van a soportar.
La descarga es un archivo .tar el cual se expande en un directorio desde el cual ejecutamos las siguientes instrucciones:
# primero configuramos el ambiente para usar ActiveX Data Objects (depende de win32ole)
c:\>ruby setup.rb config --with=dbi,dbd_ado
# la llamada de siempre
c:\>ruby setup.rb setup
# finalmente la instalación
c:\>ruby setup.rb install
Con esto ya tenemos la capacidad de acceder a SQL Server desde Ruby. Ahora falta configurar SQL Server para que permita conexiones mediante usuario/contraseña. Para esto configuramos el modo de autenticación "mixed" dentro de las propiedades de seguridad del servidor.
A continuación se crean el login de SQL Server y la base de datos asociando el login como dbo de la base recién creada y se crea el proyecto rails como de costumbre.
c:\>rails proyecto
Después se actualizan los datos del archivo config/database.yml
development:
adapter: sqlserver
database: database_development
username: user
password: password
host: .\SQLEXPRESS
Esta configuración funciona con las versiones 2000 y 2005 de SQL Server. La diferencia que he encontrado es el manejo de valores nulos en columnas de tipo integer. En SQL Server 2005 sustituye los valores nulos con ceros mientras que en la versión 2000 funciona correctamente.
Finito.
sábado, noviembre 17, 2007
Desarrollo multiplataforma
Actualmente estoy desarrollando una aplicación web con Rails. Lo curioso del caso son los ambientes que manejo: desarrollo, pruebas locales y servidor de prueba.
El equipo de desarrollo como imaginarán es mi laptop, el ambiente de pruebas locales es mi laptop con otro sistema operativo y el servidor de prueba está más cercano a lo que será el ambiente de producción. En la tabla a continuación muestro los detalles
| Ambiente | Características | OS | DB Server | Ruby/Rails versions |
|---|---|---|---|---|
| Desarrollo | MacBook Core 2 Duo/2GB RAM | Mac OS X 10.4 (Tiger) | sqlite3 | 1.8.6/1.2.5 |
| Pruebas Locales | MacBook Core 2 Duo/2GB RAM | Microsoft Windows XP Professional SP2 | SQL Server 2005 Express | 1.8.6/1.2.5 |
| Servidor Pruebas | HP Xeon 2.0 GHZ x 4 | Windows 2000 Advanced Server | SQL Server 2000 Enterprise Edition | 1.8.6/1.2.5 |
El soporte a SQL Server en Windows es algo laborioso de configurar (prometo detallarlo en otro post) y algo que llama mucho la atención es el diferente comportamiento de SQL Server entre sus dos versiones, 2000 y 2005. En SQL Server 2005, todos los campos enteros aún y cuando se defina el valor por defecto como null siempre aparecen con un valor '0'. En SQL Server 2000, si dices null aparace null. Tal cual.
Fuera de eso y de las obvias configuraciones el código de la aplicación es el mismo.
Por cuestiones desconocidas para mí (y creo que para el admin del servidor también) el desempeño del servidor es terriblemente malo. En los logs de Rails se registra un cálculo aproximado de peticiones que se pueden atender según el equipo en el que estamos ejecutando. En mi laptop este número varia entre 13 y 15 peticiones por segundo. En el servidor de prueba hay valores tan bajos como 4 peticiones por segundo. Espero que el ambiente de producción esté mejor operado.
Finito.
jueves, noviembre 15, 2007
El Camino del Código
Reencontrarme con el desarrollo ha sido estupendo, las problemas que por momentos parecen no tener sentido, se resuelven de manera transparente y relajada como el correr del agua en un riachuelo. No hay que poner demasiado esfuerzo, como caballo desbocado sino más bien permanecer quieto y alerta para en el momento justo tirar una sola línea de código como trazo de pincel... ni más, ni menos.
También cuando vas escribiendo código y piensas: "si éste método existiera de este otro modo..." y el método ya existe o cuando integras por primera vez un nuevo concepto y empiezas a complicar todo cuando la respuesta es tan simple.
No es que Rails sea mejor que X o Y. Es simplemente nadar con la corriente en lugar de nadar contra la corriente.
Finito.
viernes, octubre 26, 2007
Rompiendo el silencio (Trabajo)
Hasta ahorita me he definido como un "hombre de equipo", esto es, mis amigos son en primer lugar las personas con los que trabajo todos los días. Así, cuando cambio de equipo de trabajo, cambio de amigos. Cambio hábitos de comida, de trabajo y me esfuerzo por no cambiar de trato pero como algunos reclaman, no siempre lo consigo. Una cosa curiosa es mi nuevo equipo: Yo. Actualmente en el proyecto que trabajo soy el único recurso de tiempo completo por parte de mi empresa, así que el equipo soy Yo. Ja.
Dentro de la empresa, veo muchas áreas de oportunidad: metodología, capacitación, proyectos. Ahora necesito conseguir tiempo y concentrarme en mis tiempos "muertos" a ir armando los bloques que traigo en la cabeza.
Me voy re-encontrando con herramientas y tecnologías. Una de las cosas que quiero hacer es buscar espacios para Rails, sin embargo, éste mi primer proyecto está amarrado a .NET al cual le estoy tomando sabor de nuevo. Fueron casi tres años sin tirar código para una UI y ahora al re-aprender ASP.NET influenciado por la visión Rails le encuentro un sabor distinto. Ahora me veo usando componentes que hace un par de años (o meses) veía como objetos de pecaminosa pereza pero desde un enfoque pragmático tienen su valor (y razón) de ser.
Cuando desarrollamos con Rails hacemos usos de una cantidad inmensa de clases y componentes de los cuales aprovechamos toda la funcionalidad sin preocuparnos del detalle de la implementación. De repente nos encontramos usando ActiveRecord a diestra y siniestra confiando ciegamente en que la implementación del patrón de diseño cumple con todos los cánones habidos y por haber. No hay duda ni cuestionamiento, ActiveRecord es un componente que nos permite ser más productivos ¿para qué entrar al detalle de su funcionamiento? Funciona y listo.
En mi regreso a ASP.NET estuve a punto de retomar la complejidad de implementar patrones, armar bosques de clases y aplicar todos los principios de arquitectura existentes; la realidad es que los tiempos comprometidos me están obligando a encontrar alternativas que nos permitan avanzar más rápido y tener elementos visibles, tangibles, que hagan sentido al usuario final del sistema. Se generó en mi un gran conflicto. Siempre peleé por "hacer las cosas bien, más que rápido" y ahora tengo que "hacer las cosas rápido más que bien". Al final, encontré un punto medio. La experiencia con Rails me enseño que no tengo que recrear la complejidad (usar las clases existentes de ActiveRecord en lugar de construir de cero mi implementación del patrón de diseño) sino a usar lo ya existente y confiar en que en su momento lo puedo mejorar (esto último es más "agile oriented").
Tome los componentes ASP.NET que más me latieron y conseguí avanzar un buen tramo en la construcción del sistema sin caer en un "arrastra-controles" ni re-construyendo todo por ser víctima del síndrome "No-Inventado-Aquí". Estoy cierto que de ser estrictamente necesario más adelante puedo cambiar esos componentes así que se redujo parte de mi conflicto interno.
Esta situación también me dejo entrever otra cosa: de manera natural seguimos ciclos (o espirales dirían los dialécticos). En las artes marciales se inicia con el aprendizaje portando un cinturón blanco, signo de ignorancia, conforme se avanza el cinturón se va tornando oscuro hasta llegar al negro representando la "maestría" alcanzada. Al paso del tiempo el cinturón negro se desgasta mostrando la fibras blancas originales. Simple, complejo, simple.
En el contexto del desarrollo nos adentramos con "asistentes" y construimos aplicaciones arrastrando componentes en nuestro ambiente de desarrollo. Luego vamos conociendo nuevas tecnologías que aumentan los beneficios de nuestras aplicaciones a expensas de la erudición necesaria para su uso. Patrones, técnicas, innovación amarrada a la complejidad pero esto tiene que ser así ¿cierto? Entre más fácil para el usuario, más complicado para nosotros.
En ese momento aparece Rails y entiendo el porqué de la migración. Nos olvidamos de las complicaciones. Sabemos que los componentes de Rails son implementación de patrones y conceptos que veneramos y con eso nos basta. No los ponemos en tela de juicio ni criticamos, simplemente los usamos.
Así me paso con ASP.NET, ya no cuestiono ni critico los componentes que ofrece. Aqui y ahora me hace sentido. Sé que de requerirse puedo incluir toda la complejidad que se requiera pero de momento solo necesito una cosa: que funcione y lo estoy consiguiendo.
Finito.
viernes, agosto 24, 2007
La verda' no se puede ocultar
Me encanta la última escena.
Finito.
Rails vs. .NET
Finito.
martes, agosto 14, 2007
Misterio sin resolver
Independientemente de esta situación, me parece el clásico ejemplo PHP: ininteligible, aburrido y extremadamente "verbal".
Mi punto de vista sobre un lenguaje siempre nace la capacidad de 1) representar un modelo de dominio y 2) el esfuerzo para representar éste. A lo largo de ya algunos años he conocido y trabajado con dos modelos para construir software, con n lenguajes y en n plataformas. En cualquier caso he ido saltando de lenguaje conforme apareció otro que me representara una ventaja sobre el actual tomando como referencia los numerales anteriores.
En concreto, con PHP no se obtiene ventaja de uno u otro aspecto. Y cuando volteo y me encuentro con RoR, simplemente se afirma mi punto de vista y aumenta mi duda ¿cómo es que PHP llegó a tener la difusión que goza actualmente?
Finito.
viernes, mayo 25, 2007
Último Ruby on Rails vs. PHP
Cada vez que alguien conoce Rails se entusiasma de manera increíble. Es que Rails realmente es increíble. Te deja con una sensación de productividad como si te hubieras metido no sé que cosa. Desarrollas rápido, no importan los cambios, el 90% de las veces los consigues cambiando archivos de configuración, te concentras en otorgar valor en el marco del negocio y no en el de la tecnología.
Sin embargo, casos como Twitter demuestran que no todo es miel sobre hojuelas. Menciono Twitter por que es el caso más conocido y que además uso regularmente :D. Además de la serie de posts del mismo DHH y el equipo Twitter, las extensiones a estos posts (tipo programa de notas faranduleras) en las que ponen a DHH como un ególatra energúmeno sabelotodo que lo único que hace es regañar a los desarrolladores de Twitter.
Sea cual fuere la razón Rails en Twitter fue y es rebasado. Y si miran el modelo, es terriblemente simple. ¿Significa esto que Rails no vale la pena? ¿Qué no tiene el solicitado status de nivel empresarial? Para mí significa que igual que con cualquier tecnología, la solución está de nuestro lado: desarrolladores, arquitectos, hw-junkies y demás. No hubo, no hay ni habrá tecnología que llegué a sustituir al 100% las capacidades humanas. Cuando menos no durante lo que yo viva.
Entonces, no importa que Twitter falle. Agarren Rails y cójanle cariño. Vayan probando hasta donde pueden estirar la liga de la suerte. Estirenla tan fuerte que se rompa y entonces aflojen un poquito. Esa será la medida correcta (¡Gracias Jeff!).
Después de este choro viene la diversión.
Finito.
domingo, mayo 20, 2007
Ruby on Rails vs. PHP
Finito.
martes, mayo 15, 2007
Ruby vs. PHP: Sigue la mata dando
Finito.