martes, 29 de abril de 2014

La guerra de los mundos

En ASPgems tenemos como valor el hecho de que si a alguien no le gusta algo de la empresa (estructura, campañas, prácticas habituales, etc.) no sólo tiene el derecho, sino también la obligación de alzar la voz y protestar, siempre en un tono constructivo y justificando sus quejas.

Esto dicho así queda muy bonito, pero no está exento de problemas. ¿Cuáles? Pues que al final somos personas trabajando con personas y eso quiere decir que conviven muchas realidades diferentes dentro de una empresa y que la percepción de las cosas por el resto de seres que nos rodean no es siempre la que uno esperaría.

Hace unos días, debatiendo una campaña de comunicación que queremos lanzar, se cruzaron unos cuantos correos que generaron un entretenido y enriquecedor debate... o al menos así lo percibí yo en mi realidad. Sin embargo, pronto noté que esto no era extensible a la totalidad de la compañía. Y es por eso que he decidido escribir este post (y así, de paso, organizo un poco mis ideas).

Históricamente, en todas las empresas las diferentes áreas de la misma están enfrentadas: gerencia con desarrolladores, recursos humanos con dirección, diseño con desarrollo, ventas con operaciones... la lista puede ser infinita. En esta discusión estuvimos implicados todas las áreas de la empresa: desarrolladores, marketing, ventas, CEO, operaciones... y así se hicieron patentes las diferencias culturales de cada mundo.

El problema es que la visión del mundo que tenemos cada uno de nosotros es debida a las experiencias vividas y, claro, las experiencias laborales de un desarrollador, un comercial o un financiero no tienen (casi) nada que ver unas con otras. Esto hace que una acción determinada a mí me puede parecer estupenda pero a mi jefe le puede resultar horrorosa y nos veamos de repente envueltos en una discusión.

Y no pasa nada por discutir. Es más, discutir es lo mejor que te puede pasar, siempre y cuando la discusión se haga de una forma educada y con el fin de entender mejor un problema. No montemos una escena digna de un plató de telecinco, por favor. Como digo, no hay que tener miedo a tener una discusión jamás...

Cada vez que discutes estás aprendiendo algo nuevo, y estás enseñando algo nuevo. Depende de ti querer aprovechar lo que la otra parte te está enseñando. Depende de ti decidir que el otro es un canelo y tirar a la basura todo lo que te haya dicho y mantenerte en tus trece o meditar sobre lo que te ha aportado. Si sales de una discusión pensando exactamente lo mismo que lo que pensabas antes de entrar en ella, enhorabuena: acabas de perder un valioso tiempo de tu vida. Si no es así, puede que sigas pensando que tu postura es la correcta, pero al menos habrás conseguido entender mejor la postura de un tercero. Con esto conseguimos que esas fronteras culturales existentes entre los diferentes mundos dentro de una empresa se hagan cada vez más finas.

Desde que soy CTO he pasado de vivir cómodamente en mi mundo del desarrollo de software a viajar por otros mundos como el comercial, operaciones, dirección, financiero. Cada vez entiendo más a la gente con la que trabajo... y soy capaz de explicar mejor la realidad en la que vivo yo como desarrollador.

Nadie con dos dedos de frente pone en duda lo enriquecedor que es visitar culturas diferentes a la nuestra. Entonces, si somos capaces de quitarnos nuestros prejuicios y dejarnos sorprender cuando viajamos a países culturalmente alejados del nuestro como Japón o la India, ¿por qué nos cuesta tanto adentrarnos un poquito en esos otros mundos que tenemos tan cerca de nosotros y no nos dejamos asombrar? 

Si valoras el aprendizaje continuo, el cambio y la adaptación como modo de vida y estás en una empresa donde ni se facilita ni se fomentan las discusiones, mi más sincero consejo es que huyas: estás perdiendo una oportunidad extraordinaria para descubrir, para asombrarte y para disfrutar enseñando a otros. Si, en cambio, valoras el continuismo y el hacer las cosas siempre igual de mal, entonces enhorabuena: estás en el sitio adecuado para seguir siendo el mismo toda tu vida y no dejar huella de tu paso por el mundo.
El objeto de toda discusión no debe ser el triunfo, sino el progreso. -- Joseph Joubert

martes, 22 de octubre de 2013

¿Y por qué no...?

Llevo muchos años escuchando aquello de que las empresas son el mal, que explotan a los trabajadores, que tratan a las personas como recursos. Típico discurso visceral, que tanta pegada tiene y que tan nuestro hemos hecho entre todos. Que no protestamos dicen. Perdonen, pero yo es que como me levante del sofá la lío parda, el único problema es que la calle ahora mismo pilla lejos.

Creo que es parte de nuestra identidad genética como sociedad. Es mucho más interesante y, reconozcámoslo, divertido, hablar de temas que nos inflan la vena y que nos sitúan en un plano moral superior con respecto al inútil o explotador de turno, que hablar de las cosas que sí que funcionan y que suponen un avance, por pequeño que éste sea.

Bueno, pues resulta que en este país de pandereta, de incongruencias y hipsters instalados en un estado permanente de queja y cabreo hay instituciones, empresas e incluso, ¡ojo!, personas, que hacen las cosas bien. Y si no bien, al menos ponen todo su empeño en intentar mejorar el mundo que los rodea.

Y una de esas empresas, que me perdonen los que se sientan ofendidos por mi descarado orgullo de pertenencia a una institución empresarial, es en la que trabajo yo. ASPgems. No somos ni mucho menos perfectos. Nos equivocamos y a veces metemos la pata hasta el fondo. Eso es así. Pero sí que intentamos mejorar el mundo que nos rodea. Y eso también es así.

La última iniciativa que hemos lanzado ha sido la de patrocinar un número de plazas de guardería para todos aquellos padres (entiéndase el vocablo padres como el término con género no marcado, que nadie se me ofenda) que fueran a ir al codemotion, pero que no pudieran o no tuvieran con quién dejar al vástago o vástagos. Independientemente del éxito o del fracaso de la iniciativa, yo de aquí al menos saco dos conclusiones:

Una y primera. Trabajo con gente con la que no me importa compartir mi parcela en el mundo. Es más, me alegro de haber coincidido con ellos. Mención especial para Ismary, Agustín Cuenca y Álvaro Klasse, que entre los tres idearon, planificaron y ejecutaron la idea. Una de las razones por las que me fui de las anteriores empresas fue que no soportaba trabajar con cierto tipo de gente, cuyos nombres voy a permitirme omitir por no perder la elegancia, y porque uno no sabe las vueltas que da la vida, no nos engañemos.

Dos y segunda. En nuestra mano está cambiar el mundo. No necesariamente de golpe y en plan revolucionario a base de guillotina, sino poco a poco y con pequeños gestos con los que incluso nos podamos ayudar a nosotros mismos. No estoy hablando de filantropía ni de convertirnos en una ONG. Estoy hablando de intentar cambiar a mejor aquello que nos conviene y nos rodea, instalándonos si se me apura en una actitud mayormente egoísta, pero que no por ello ha de ser malvada. En este caso el germen de la iniciativa surgió a raíz de un comentario de Ismary, que estaba pensando cómo podía encajar a su pequeña fiera ese fin de semana, y que Agustín recogió al vuelo y lo devolvió en forma de pregunta. Una pregunta que durante siglos ha resultado en cambiar el mundo tal y como se conocía hasta el momento de ser formulada: ¿y por qué no...?

Pues bien, al final el resultado fue que optamos por ofrecer sesenta plazas de guardería y que de todas ellas sólo una fue aprovechada. ¿Sólo? Pues yo prefiero pensar que ayudamos a conciliar la vida profesional de alguien a quien no conocemos de nada, y que eso es para presumir y que, desde luego, es infinitamente mejor que no haber hecho nada con respecto a un tema que nos afectaba directamente. En definitiva, creo que hemos ayudado a hacer del mundo, o al menos nuestro mundo, un sitio mejor. El año que viene me gustaría repetir la iniciativa corrigiendo los errores que hemos cometido (que haberlos, los ha habido), y a ser posible, que en lugar de ocupar solo una plaza, ocupemos sesenta. Mientras tanto, a mí me vais a permitir seguir creyendo que la cosa no está perdida y que hay iniciativas, que por pequeñas que sean, merece la pena ser escuchadas entre tanta noticia de chorizo, corrupto y malnacido. Y todo esto lo seguiré contando porque me gusta, me apetece y me parece un motivo para presumir.
Al fin y al cabo, somos lo que hacemos para cambiar lo que somos. -- Eduardo Galeano

viernes, 28 de septiembre de 2012

Presentación sobre ruby object model

Ayer hice una presentación en el madridrb acerca del ruby object model, que puede descargarse directamente desde aquí

La presentación está hecha con libreoffice impress y en formato odp. Puesto que tiene animaciones, no aconsejo su visualización directamente en slideshare. Tampoco sé cómo se verá en otros programas similares.


Con mis maestros he aprendido mucho; con mis colegas, más; con mis alumnos todavía más. -- Proverbio hindú

lunes, 23 de enero de 2012

Aceleración gráfica en el Dell Vostro 3500 con nvidia GeForce 310M y Ubuntu 11.10

Este fin de semana he vuelto a reinstalar por enésima vez mi sistema operativo (con n tendiendo a gúgol). Y esta vez he decidido probar la versión de Ubuntu 11.10, que viene con Unity. No voy a contar qué es lo que me parece, porque no viene al caso en este post.

Lo que sí voy a contar es cómo, por fin y después de casi dos años, he conseguido tener aceleración gráfica en mi Dell Vostro 3500, y su tarjeta gráfica Nvidia GeForce 310M (from hell, añado yo). Quien sea el afortunado poseedor de dicha tarjeta gráfica, habrá podido comprobar en sus propias carnes lo frustrante que puede llegar a ser intentar instalar los drivers de nvidia para esta tarjeta en Ubuntu.

Pues como decía, el otro día que me puse a reinstalar el sitema operativo, y después de dejarlo niquelado, me dije a mí mismo: "como no tengo mejor que hacer con mi vida, ¿por qué no vuelvo a intentar instalar esta $#!* #@!*%& de tarjeta?"

Así que me puse a ello, instalé drivers, y demás y... ¡¡¡pantalla en negro!!! Por un momento dudé: no sabía si lo que estaba viendo en mi monitor era el futuro, o el alma de quien creó esta maldita tarjeta. Pero no, era lo de siempre: una alegoría a la facilidad que tengo para cargarme sistemas operativos recién instalados.

En fin, volví a restaurar el archivo de configuración de las X y, como no soy casi cabezón, me di otra oportunidad y navegué y navegué en la web hasta que di con el post de un tipo que decía... ¡que había podido activar la aceleración 3D en el mismo ordenador que el mío utilizando para ello un proyecto llamado bumblebee!

No me lo podía creer, así que me puse manos a la obra.

Antes de seguir, y para evitar el estrés conocido clínicamente como estrés qué-pasará-estoy-super-nervioso-quiero-ver-otro-capítulo-de-Lost-que-en-éste-seguro-que-me-resuelven-algún-misterio, quiero avisar a los lectores interesados que conseguí tener aceleración 3D, pero sólo para aplicaciones, no para el entorno de escritorio. No me echéis la culpa a mí, echádsela a los gobiernos, a las agencias de rating o a Mourinho, que yo sólo soy el mensajero.

Así que, como decía, estos fueron los pasos que seguí, y que también se pueden consultar aquí:
Primero añadí el ppa de bumblebee

sudo apt-add-repository ppa:bumblebee/stable

Eliminé los drivers de nvidia que tenía instalados en el sistema.

sudo apt-get purge nvidia-current

Añadí el siguiente ppa

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates

Actualizé apt-get

sudo apt-get update

Instalé bumblebee

sudo apt-get install bumblebee

Añadí mi usuario al grupo bumblebee

sudo usermod -a -G bumblebee elafo

Reinicié las X y comprobé que todo había ido bien ejecutando

glxspheres

Esto hará que veamos unas esferas y unos resultados de rendimiento

optirun glxspheres

Esto hará que veamos las mismas esferas que antes, pero con mejor rendimiento.

Así pues, cuando necesitemos aceleración 3D, basta con ejecutar lo que necesitemos anteponiendo el comando optirun

Por último, si queremos tener aceleración 3D para aplicaciones en 32 bits (por ejemplo wine), y nuestro SO es de 64 bits, tendremos que instalar los siguientes paquetes

sudo apt-get install virtualgl-libs:386
sudo apt-get install virtualgl-libs:i386

Con esto ya tenemos la posibilidad de tener aceleración 3D. La pega de esto, es que no puedes utilizar aceleración 3D en máquinas virtuales, ni tienes disponible la aceleración 3D para tu entorno de escritorio. Así que habrá que seguir investigando para tener la aceleración en todas las facetas de nuestra vida.
Empujen fuerte, caballeros. Pero ya veremos quién empuja más tiempo. -- Arthur Wellesley

viernes, 20 de enero de 2012

RVM: LoadError (no such file to load -- openssl)

Hoy he tenido que reinstalar mi Ubuntu (versión 11.10) y al instalar una nueva versión de ruby (1.9.2) con RVM he tenido problemas para instalar la gema ruby-debug-base19.

En concreto me daba este error, que ya había visto muchas otras veces, pero del que nunca recuerdo su solución:

LoadError (no such file to load — openssl)


Bien, pues lo que pasaba es que había instalado esta versión de ruby antes de instalar los requisitos para esta gema, a saber, libssl-dev, openssl, libssl y compañía.

¿Cómo lo he solucionado? Pues en mi caso, que soy más vago que un político en agosto, he optado por desinstalar dicha versión de ruby y volverla a instalar.

A ver si la siguiente vez que tenga que reinstalar el SO (apuesto a que no más allá de tres meses) me acuerdo de hacerlo bien a la primera

La política es el arte de buscar problemas, encontrarlos, hacer un diagnostico falso y aplicar después los remedios equivocados. -- Groucho Marx

jueves, 12 de enero de 2012

Ordenando por el día actual en una relación has_many con thinking sphinx y rails

Mi último problema con thinking sphinx ha sido el siguiente:

Presentación

Tengo un modelo al que llamaremos, en un alarde de originalidad, A.

Dicho modelo, tiene una relación tipo has_many con otro modelo que, para no destrozar el flow, llamaremos B. Este modelo B, tiene un campo de tipo date llamado turn_date (aquí, el lector avezado, habrá podido intuir que el campo turn_date, representa la fecha de un turno.)

Lo que quiero es realizar una búsqueda con thinking sphinx, de forma que los elementos de A que tengan algún turno en el día actual me aparezcan primero.

Nudo

Para entendernos más fácilmente pongamos un ejemplo concreto: estamos haciendo una web donde se muestran los turnos de los hospitales en Cataluña para que, en el caso de que sufras un infarto, puedas saber a cuál tienes que ir (no vaya a ser que llegues media hora antes del cierre y no te puedan atender).

Así, pues tendríamos los modelos Hospital, y HospitalTurn


Lo que queremos es mostrar los resultados de una búsqueda, de forma que los hospitales que presten servicio en el día actual aparezcan primero.

Bien, ¿cómo hacemos esto?

Suponiendo que tenemos thinking sphinx configurado (y funcionando) habría que crear un atributo que represente si un hospital tiene algún turno que coincida con el día de hoy.


De esta forma hemos creado un atributo que valdrá 1 si existe un turno de guardia para este día, o 0 en caso contrario.

Desenlace

Ahora para realizar una búsqueda y ordenar por el criterio que queremos, es decir, mostrar primero los hospitales que dan servicio hoy, bastaría con hacer:


Y ya por último, sólo nos quedaría asegurarnos, por medio de un cron de que cada día a las 00:00 se reindexa nuestro bienamado sphinx... y, por supuesto, esperar no sufrir ningún infarto a partir de las 17:00 en Tarragona.

Créditos

Gracias a Javier Ramirez, que es el que me dio la solución a este problema.

Ahora con internet los niños se te educan solos. -- Hommer J. Simpson

jueves, 4 de agosto de 2011

Cambiar los colores del terminal cuando nos conectamos por SSH a diferentes máquinas

Muchos de nosotros nos conectamos a diario a diferentes máquinas: producción, integración... Y algunos de nosotros lo hacemos por ssh. Sin embargo, no estaría de más poder cambiar el aspecto de del terminal para evitar hacer destrozos del tipo Account.delete_all en la máquina que no es.

Pues para esto he creado un script muy sencillo, que junto con algún alias, me permite, en mi ubuntu, cambiar los colores del terminal según la máquina a la que me conecte.

Para esto, basta con copiar este script en algún directorio que esté dentro del PATH (yo lo tengo en ~/bin)


Para utilizar este script se ejecutaría la llamada


Para hacerlo un poco más cómodo, creo unos aliases en .bash_aliases


En cuanto a los colores, me gusta tener en producción un color rojo de fondo que resulte incómodo, para estar lo menos posible conectado a producción. Para integración utilizo un color de fondo verde. Pero como reza el dicho: "Para gusto los colores", así que cada cuál que se lo configure como más le guste

Las guerras seguirán mientras el color de la piel siga siendo más importante que el de los ojos. -- Bob Marley