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

martes, 26 de julio de 2011

Thumbnails de vídeo en ubuntu

Cada vez que reinstalo Ubuntu (ahora mismo estoy con Ubuntu 10.10), siempre me encuentro con el mismo problema: los thumbnails de los vídeos de algunos formatos (avi, flv, etc) no aparecen. Y como mi memoria es pequeña y frágil, siempre tengo que buscar en google cómo se resolvía esto.

Bien, pues para no tener que buscar más, esto es lo que hay que hacer:


Luego, hay que borrar el contenido de la carpeta ~/.thumbnails
No guardes nunca en la cabeza aquello que te quepa en un bolsillo. -- Albert Einstein

martes, 26 de octubre de 2010

Ruby 1.8.6 y date (ArgumentError)

Intentando instalar en mi máquina local un entorno de desarrollo con ruby ree-1.8.6 (con rvm), he tenido problemas con la clase Date.

Al intentar hacer algo como:

Date.new(1900, 2, 28)


me saltaba una excepción ArgumentError.

Bien, pues la solución es instalar dicha versión de ruby con los siguientes flags:

CFLAGS='-g -DRUBY_EXPORT -D_GNU_SOURCE=1' rvm install ree-1.8.6


¡Gracias a mi compañero Álex por la solución!

El secreto de la felicidad es tener gustos sencillos y una mente compleja, el problema es que a menudo la mente es sencilla y los gustos son complejos. -- Fernando Savater

miércoles, 20 de octubre de 2010

Listas horizontales en IE7

Otra vez tengo que pegarme con HTML y CSS. Es una cosa que no me disgusta, pero que sería mucho más fácil si todos los navegadores implementeran el estándar... pero eso sería demasiado bonito.

El problema que me ha surgido hoy es el siguiente:

Necesito diseñar una barra de iniciales. Esta barra es un elemento ul, que contiene una serie de elementos li, que a su vez contienen un enlace. Esta barra tiene que ser horizontal.

Mi HTML es éste:

<ul id="az-index-bar">
  <li>
    <a>...</a>
  </li>

  ...
</ul>


Y la primera aproximación que hice con CSS fue ésta:

ul#az-index-bar li{
  width:30px;
  display:inline-block;
}

ul#az-index-bar li a{
  display: inline-block;
  width:100%;
}


En Firefox, Opera y Chrome se veía bien, pero nuestro bendito Internet Explorer decidía que esto se tenía que ver en vertical. Así pues, investigando llegué a esta solución:

ul#az-index-bar li{
  display:inline;
}

ul#az-index-bar li a{
  display: inline-block;
  width:30px;
}



Los cambios eran muy básicos: cambiar el display del elemento li a inline, y darle el ancho al elemento a, en lugar de hacerlo al li.


Si yo pinto a mi perro exactamente como es, naturalmente tendré dos perros, pero no una obra de arte. -- Johann Wolfgang Goethe

miércoles, 18 de agosto de 2010

Los cumpleaños de tus contactos en tu Android

Después de tiempo intentando averiguar cómo podía integrar los cumpleaños de mis contactos en mi calendario de google (y así tenerlos disponibles en mi teléfono Android), por fin he dado con ello. Y es muy sencillo.

Lo único que hay que hacer es acceder a tu calendar de google y acceder a:

Configuración > Configuración de calendar > Calendarios > Explorar calendarios interesantes > Más > Eventos y cumpleaños de contactos

Recomiendo echarle un vistazo a todos los calendarios que nos ofrece google, porque hay más de uno muy interesante.

Una vez nos hayamos suscrito, ya lo tendremos en el calendario de nuestro móvil Android en cuanto lo sincronicemos.

Fácil, ¿verdad?

Pues no me queda más que agradecerle a Francisco Santos y Javier Ramírez sus indicaciones para hacer esto :-D

Aunque ellos sean cien y yo sólo uno, no significa que tengan razón. -- Albert Einstein

miércoles, 11 de agosto de 2010

Cellpadding y cellspacing en CSS

Como casi todos los días, hoy me está tocando quitar estilos inline de una maqueta en HTML y pasarlos a una hoja de estilos. Manías que tiene uno, ya veis... Y hoy, otra vez más, me he encontrado un elemento table con unos maravillosos atributos cellpadding y cellspacing, que no son propiedades de CSS. ¿Y cómo se soluciona esto? Pues aquí va la receta que he utilizado, y que me he permitido el lujo de copiar de este post y de este otro.

Cellspacing

Utiliza la propiedad CSS border-spacing

table{
   border-spacing:10px;
}


Cellpadding

Aplica la propiedad padding al td de la tabla en cuestión

table td{
  padding:10px;
}


Fácil, ¿verdad? Pues una excusa menos para utilizar atributos de estilos en vuestro código HTML.
Si el gobernante se impone por sus cualidades y mantiene el orden en armonía con las buenas costumbres, el pueblo sentirá vergüenza de actuar mal y avanzará por el camino de la virtud. -- Confucio

lunes, 9 de agosto de 2010

each_slice en ruby 1.8.6

Hoy me he encontrado con un problema al desplegar en producción con ruby 1.8.6. La aplicación cascaba porque no encontraba el método each_slice para la clase Array.

Esto en ruby 1.8.7 no da problemas, pero para que funcione en 1.8.6 hay que hacer un

require 'enumerator'

Gracias a este post, que me ha ilustrado antes de liarme a hacer cualquier burrada propia de un lunes de agosto.

Hacer preguntas es prueba de que se piensa. -- Rabindranath Tagore

lunes, 5 de julio de 2010

Instalar rvm

Estoy cambiando de equipo y, como siempre, me vuelve a tocar instalar cosas que ya había instalado anteriormente y no me acuerdo de cómo lo hice. Así que, para la próxima vez, aquí van los pasos necesarios para instalar rvm.

bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )


Puede ser que se muestre el siguiente mensaje tras la instalación:


WARNING:  you have a 'return' statement in your .bashrc, likely this will cause untold havoc.
   This means that if you see '[ -z $PS1 ] && return' then you must change this line to:
   if [[ -n $PS1 ]] ; then
     ... original content that was below the && return line ...
   fi # <= be sure to close the if.
   #EOF .bashrc
Even if you use zsh you should still adjust the .bashrc as above.
If you have any questions about this please visit #rvm on irc.freenode.net.

Installation of RVM to ~/.rvm/ is complete.


Así que se debería cambiar la línea

[ -z $PS1 ] && return



por


if [[ -n $PS1 ]] ; then


y hay que cerrar esta sentencia al final

fi



Añadir al final del .bashrc o .bashprofile la siguiente línea:

[[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm



En una nueva terminal, para que los cambios se apliquen, escribir:

type rvm | head -n1



Y se debería mostrar


rvm is a function


Con esto ya debería estar instalado rvm, y sólo quedaría instalar la versión de ruby que queramos

rvm install 1.8.7


Para seleccionar una versión de ruby con rvm

rvm 1.8.7


Para seleccionar una versión de ruby con rvm por defecto

rvm --default 1.8.7



"He notado últimamente que el miedo paranoico hacia ordenadores inteligentes tomando el control del mundo ha desaparecido totalmente. Todo lo que puedo contar es que este hecho coincide con la aparición de MS-DOS". -- Larry DeLuca

miércoles, 23 de junio de 2010

Un año de cambios

Hace algo más de un año decidí dar un cambio de aires a mi vida profesional, y creo que ha llegado el momento de hacer balance.

Todo comenzó con un twitter de un antiguo compañero de trabajo (¡gracias Félix!) avisándome de una oferta de trabajo en una empresa que trabajaba con Ruby on Rails llamada ASPgems. Y lo que en principio iba a ser un simple cambio de trabajo y tecnología (me metía de nuevas en el mundo rails) se ha acabado convirtiendo en un cambio de vida completo.

Recuerdo la entrevista que me hizo Agustín Cuenca y las cosas que me contaba acerca de la forma de trabajar en ASPgems: horario flexible, teletrabajo, confianza en el trabajador... Todo resumido en una frase tal que así
"queremos gente a la que le guste su trabajo, y entendemos que si te gusta tu trabajo, éste forma parte de tu vida diaria tanto como puede hacerlo tu ocio o tu familia. Si eres de los que quiere cumplir un horario y según sales de la puerta te desentiendes de tu vida profesional entonces éste no es tu sitio".
Desde luego, éste era un discurso que se salía de lo común, al menos en lo que respecta a las empresas en las que hasta entonces había tenido el ¿placer? de trabajar. Y en esta vida, si encuentras algo diferente, mi recomendación es cogerlo. Para hacer lo mismo que en el resto de los sitios siempre hay tiempo. Así que finalmente pasé a formar parte de la plantilla de ASPgems. No tenía ni idea de lo que esto iba a suponer.

A nivel técnico Rails me ha gustado mucho. Viniendo de java, con sus interminables ficheros de configuración y sus despliegues para probar cualquier mínimo cambio; o php, donde cada uno hacía lo que le venía en gana, Rails me enamoró desde el primer momento: convención, convención y más convención. No me considero un fanboy, pero hoy por hoy es una tecnología que me convence, y mucho. Ya veremos dentro de un tiempo. No quiero hablar aquí acerca de las virtudes o defectos de rails, que para eso hay gente que sabe mucho más, pero sí quiero destacar un gran valor añadido que le he visto en este tiempo: la comunidad que hay en este país. Con un nivel técnico altísimo y una intención pedagógica muy marcada en líneas generales, te facilitan mucho la transición desde otras tecnologías. Además, en contra del arquetipo de friki informático, esta gente se sabe divertir. Quedar con ellos implica por definición beber cerveza. Para qué voy a contar más :-D

Pero, como decía antes, este año no ha consistido únicamente en un cambio de tecnología sino en un cambio en mi forma de entender el trabajo. Y puesto que trabajamos muchas horas a lo largo de un año, este cambio se ha visto reflejado también en el resto de los aspectos de mi vida.

Mentiría si dijera que estaba totalmente confiado ante el cuadro que se pintaba ante mí. Total, estamos en España, y todos sabemos que en este país las empresas son malvadas, los trabajadores no quieren currar y si puedes escurrir el bulto (a.k.a marrón) a otro, mejor que mejor. Así que sospechaba que me podían estar vendiendo la moto. Después de un año parece ser que estaba afortunadamente equivocado.

Resulta que he ido a caer en una empresa donde las cosas se intentan hacer bien, donde al trabajador se le escucha y se le valora y donde uno tiene la sensación de que está remando en el mismo sentido que el resto de sus compañeros, y todo esto en una época no demasiado propicia para que se den estas condiciones. De una forma más o menos continua hacemos reflexiones acerca de la manera apropiada de trabajar, de detectar y corregir errores y, en definitiva, de establecer los mecanismos para hacer un buen trabajo. Y, en palabras de Javier Ramírez,
"un buen trabajo es aquél en el que la empresa está contenta, el desarrollador está contento y el cliente está contento".
Bonito, ¿verdad? ;-)

Todo esto englobado en un marco en el que prima el buen ambiente, con unos compañeros de los que siempre puedes aprender algo y de los que siempre te alegras de ver cuando entras por la puerta, o a los que echas de menos cuando un día no están. De hecho, hace tiempo que no miro el reloj para ver cuándo termina mi jornada, porque trabajar no supone un dolor ni un martirio. Ni siquiera los lunes son ya el día horroroso que solía ser anteriormente, entre otras cosas, porque los lunes y los viernes, si quieres, se trabaja desde casa. Esto me ha permitido empezar a hacer mis pinitos en la cocina, a tener la posibilidad de organizar más y mejor la casa (esto no siempre lo consigo, pero es parte de mi ser).

Y este es otro punto (puntazo) a favor. Quiénes no han tenido la sensación de que podían haberse quedado trabajando en casa en lugar de comerse un atasco, gastarse el dinero en un menú - que suele ser de todo menos saludable - para comer, volver a comerse un atasco de vuelta... Bueno, pues se puede hacer... si la empresa confía en ti. Y mi experiencia me dice que la confianza se suele devolver con confianza. Así que si estás trabajando en casa, puede que trabajes más horas que en oficina, pero la felicidad en que esto deriva hace que merezca, y mucho, la pena. Que resulta que te piden un esfuerzo, pues no te cuesta hacerlo, porque sabes que aquí sí que existe un quid pro quo.

Podría extenderme mucho más, pero creo que la idea está bastante clara. Aposté por un cambio laboral en un período un poco arriesgado y me ha salido bastante bien. Hay empresas en este país donde se intentan hacer las cosas razonablemente bien. Hay otras, en cambio, estancadas en modelos de los años 80, fruto de herencias jurásicas donde imperan figuras vampíricas intentado exprimir hasta la última gota de tus fluidos vitales, tratando así de compensar inseguridades y complejos, que seguro que Freud no dudaría en relacionar con un destete temprano. Si te sientes identificado como un trabajador de estas últimas, no lo dudes e inténtalo. Hay por ahí empresas que te están esperando.

Y ya para terminar, como diría mi mentor en ASPgems, Dani Mata, ¡salud y rock and roll!
Elige un trabajo que te guste y no tendrás que trabajar ni un día de tu vida -- Confucio

viernes, 11 de diciembre de 2009

Reinstalar Ubuntu y mantener (casi) todas tus aplicaciones

Soy un desastre. Quien me conoce sabe que la entropía en mí es muy alta (gracias a las clases de física por esta excusa tan socorrida) y que me cuesta mucho llevar un orden cuando no es estrictamente necesario. Y esto me lleva a contaros mi último descubrimiento: cómo reinstalar ubuntu y mantener (casi) todas las aplicaciones que tenías instaladas.

No sé vosotros pero yo cada año (últimamente incluso menos) tengo que formatear el ordenador porque deja de ir lo fino que debería ir (tengo el récord en 10 horas con una instalación de windows), o porque sale una nueva versión del sistema operativo que quiero probar. En este caso ubuntu. Y como no soy capaz de llevar un listado de las aplicaciones que necesito, o qué plugins necesito tener instalados para que me funcione vim como me gusta, investigando llegué a este post que explica cómo volver a instalar todas las aplicaciones que tienes antes de formatear.

Como es corto voy a resumir los pasos:

Hacer una lista de las aplicaciones instaladas:

dpkg  get-selections | grep -v deinstall > my_apps

Instalar las aplicaciones una vez reinstalado el SO:

sudo dpkg --set-selections < my_apps
sudo dselect install

Pero como no todo es coser y cantar, me he encontrado con los siguientes problemas:

  • Las aplicaciones instaladas directamente desde un paquete debian no se instalan
  • He tenido problemas con mysql y phpmyadmin. No hay más que volver a instalarlas como normalmente

Lo suyo sería hacer la copia del listado de aplicaciones desde una instalación nueva, para que no se instalen esos típicos programas que instalas para probar y que luego no usas. Pero como soy como soy, yo no lo he hecho. Igual en la siguiente reinstalación (dentro de unos 6 - 8 meses) me lance.
La política es el arte de buscar problemas, encontrarlos, hacer un diagnostico falso y aplicar después los remedios equivocados. -- Groucho Marx

jueves, 10 de diciembre de 2009

Twitter: ¿La simplicidad excesiva nos desorienta?


Hace tiempo escribí un blog en la web de Madrid on Rails acerca de twitter, y hoy, tras una breve conversación con gente del sector, he decidido republicarlo aquí.

Y el blog dice así:

Hoy en día pregunten a cualquier persona entre 10 y 40 años, qué es facebook o tuenti. Seguramente las definiciones que hagan los sujetos no sean, ni de lejos, unas definiciones completas. Sin embargo, casi todos tendrán muy claro para qué sirven: subir fotos, compartir enlaces, jugar, hacer quedadas... En definitiva, saben qué pueden hacer con ellas.

Ahora pregunten a esa misma gente por twitter. Descarten a todos aquellos que no lo conozcan (seguramente sea un buen porcentaje). Y del resto, me atrevería a decir que la gran mayoría les dirá que no saben para qué sirve (o que no sirve para nada), que es muy raro, que no entienden cómo se utiliza... en definitiva: muchos de ellos se sentirán tan perdidos con twitter como mi abuela cuando le explico en qué consiste mi trabajo.

Y esto es algo que no ha dejado de extrañarme porque mucha gente que conozco, y que considero tecnólogos muchísimo más preparados que yo, responden de esta manera.

Así pues, ¿en qué consiste twitter? Sin entrar en definiciones formales, yo describiría twitter como "el sms de la web". Básicamente se trata de escribir lo que quieras en no más de 140 caracteres, en un entorno de red social, de forma que otra gente pueda leerlo. ¿Simple verdad? Pues esta simpleza parece desorientar a mucha gente, si bien es cierto que esta funcionalidad, en mayor o menor medida, la gente lleva utilizándola mucho tiempo sin ser consciente de ello. Y si no, ¿qué son los estados del messenger, gtalk, yahoo o el mismo facebook?


¿Cómo se utiliza twitter?

Para utilizar twitter, primero se ha de dar de alta una cuenta en twitter. Una vez dada de alta, puedes buscar los usuarios que quieras y comenzar a seguir sus actualizaciones, siempre y cuando tengan abierta su cuenta. En caso de no ser así, se enviará una petición a dicho usuario para que te acepte.


¿Qué diferencia a twitter del resto de redes sociales?

Desde mi punto de vista se resume, citando a Baltasar Gracián: "Lo bueno, si breve, dos veces bueno". Y, a partir de aquí, todo es jugar y hacer con twitter lo que quieras hacer con twitter, siempre y cuando te adaptes a la limitación de los 140 caracteres.


La utilidad de twitter

No hay unas reglas establecidas acerca de qué cosas hay que hacer con twitter. Es el propio uso de la aplicación lo que le da forma: Puedes comunicarte con tus amigos, puedes opinar, volcar tus frustraciones, publicar enlaces de interés, crear temas de debate... ¡La imaginación al poder!

Yo, personalmente lo utilizo para estar en contacto con  amigos, seguir noticias y posts de blogs que me interesan, y conocer opiniones de gente con las mismas inquietudes profesionales y de ocio que yo, a las que, por cierto, ni siquiera conozco en persona (cosa que no se me ocurre hacer en facebook).


Twitter como red de información

Con twitter cada usuario se convierte en un nodo de información, y así, la información se propaga rápidamente a través de toda la red. La utilidad de esta información depende, lógicamente, de lo que considere cada uno como útil. A mí, por ejemplo, que una marca de ropa haya sacado una nueva línea de gorros de lana, me resulta absolutamente irrelevante. Pero seguramente haya gente a la que esto le parezca de una trascendencia extrema (en este mundo, doy gracias, hay gente para todo). Un ejemplo de twitter como red de información es lo que sucedió en Irán tras las revueltas postelectorales que sufrió el país en este año (2009). Censurada la libertad de prensa, fueron los propios ciudadanos los que informaban lo que iba pasando a pie de calle.


Conclusiones (personales)

Twitter está revolucionando la forma de comunicarse en la red, en el sentido en que la información que se propaga es concisa, rápida e inmediata. Además, es muy sencillo de utilizar. Mi consejo: probadlo, utilizadlo, sacad vuestras propias conclusiones y, después, "twiteadlo" ;-)

La programación es una carrera entre ingenieros de software luchando para construir programas cada vez más grandes, mejores y a prueba de idiotas, y el universo intentando producir cada vez más grandes y mejores idiotas. Por ahora, gana el universo. -- Rich Cook

miércoles, 9 de diciembre de 2009

Historia de dos empresas

Leyendo "Fuckowski. Memorias de un ingeniero", me ha venido a la cabeza mi época en mi antigua empresa (de ahora en adelante Vietnam S.L.). Una empresa de esas en las que sabían cómo motivar a la gente:
"En la empresa wadus han despedido a 400 personas, como comprenderás tengo donde elegir"
o mi preferida
"Yo parto de la base de que a mitad del proyecto, cuando no sepas cómo arreglarlo, te piras y nos dejas el marrón a nosotros".
También tenían un gusto exquisito por las nuevas tecnologías:
"El twitter está prohibido", "El gtalk está prohibido", "Gmail está prohibido"
La metodología de trabajo era inmejorable:
[Jefe] Esto tiene que funcionar ya. Hay que subirlo a producción inmediatamente. Así que hazlo así [rellenar con cualquier burrada que se te ocurra]


(Al día siguiente, cuando la solución de turno ha cascado por todos los lados)


[Jefe] Eres un inútil. Es que lo tengo que hacer todo yo. No tenéis ni puta idea. No sabéis ni escribir.
Y además, tenían claro que la formación era lo más importante:
(Llama el cliente y el jefe le pasa la llamada a la última incorporación al equipo, recién salido de la carrera)


[Jefe] Di "esto" que yo no me quiero poner


[Becario] "no esto"


(El jefe le da un colleja y acto seguido mi compañero pide perdón)

En definitiva, me mantuve a flote (siempre por debajo de la delgada línea marrón de Fuckowski, por supuesto) durante los cuatro meses que duró el proyecto gracias a mis queridos Judas Priest, Iron Maiden, Manowar y El Reno Renardo (sin ellos ahora mismo estaría calvo del todo y consumido por el estrés)

Alguno me llamará exagerado (o blando), pero después de la primera amenaza me dediqué a buscar trabajo para cuando terminara el dicho(so) proyecto.

Fue entonces cuando un antiguo compañero de trabajo me envió una oferta vía Twitter (esa herramienta que sólo sirve para perder el tiempo) de una empresa que trabajaba en rails y que buscaban un desarrollador con ganas. Así que me puse en contacto con la empresa para ver si les podía interesar. Yo no tenía experiencia en rails, aunque había trabajado con java, python y php. Pero aún así decidieron que una entrevista no hacía daño.

Fui a dicha empresa y me empezaron a contar su forma de trabajar: teletrabajo, horario flexible (yo a estas alturas ya estaba babeando), y el perfil que buscaban: alguien a quien le guste su trabajo, inquieto, que le guste formarse continuamente... Salí de la entrevista como si después de dos años de matrimonio con una pareja borde, aburrida y fea, hubiera salido de copas y hubiera conocido a una chica impresionante, divertida, que me daba mi propio espacio y que me animaba a poner en marcha todas mis inquietudes: el divorcio era inminente

Por una vez en mi vida, conseguí ligarme a la guapa y ahora estoy trabajando ahí.

Siete meses después, me siento por encima de la delgada línea marrón. Estoy rodeado de gente técnicamente muy buena (algunos de mis compañeros hacen aportaciones al core de rails, o de capistrano), ansiosa por aprender y enseñar, con un sentido crítico muy alto (algo de lo que me han acusado muchas veces en mi vida) y he aprendido más en estos meses que en los dos años en Vietnam SL

Pero además, doy fe de que de esta manera produzco más. Si tengo que echar horas de mi tiempo libre porque hay algo que desconozco y quiero investigarlo no tengo problemas. Es más, me siento animado a hacerlo.

Y claro, las comparaciones son odiosas sobre todo cuando sales perdiendo. Entiendo que toda empresa existe para ganar dinero, pero la diferencia está en los medios utilizados. Y aunque las diferencias son muchas, me quedo con una que creo fundamental: el valor del conocimiento. Mientras que en Vietnam SL el conocimiento era algo irrelevante e, incluso me atrevería a decir que peligroso, en la actual es pilar básico: charlas mensuales en las que algún compañero expone algo que ha aprendido y que además últimamente se han abierto para que asista gente de fuera de la empresa (no me digáis que no es bonito...), se utilizan herramientas de comunicación como irc, yammer, google apps... Y si hay algo que no funciona como debería, no pasa nada: se piensa si es salvable, y si no, se cambia.

Con esto quería exponer dos formas muy diferentes de llevar una empresa y gestionar sus recursos desde "el otro lado": el del empleado. Porque al fin y al cabo somos la otra mitad de la "relación", ¿no?

Me voy a abstener de dar el nombre real de mi querida Vietnam S.L. porque se dice el pecado pero no el pecador, pero para quien se esté preguntando a qué empresa me cambié, ésta es ASPgems.

Seguro que muchos pensarán que soy un pelota por hablar bien de la empresa en la que trabajo. Están en su pleno derecho, pero que conste que no es peloteo: es orgullo.

A veces pienso que la prueba más fehaciente de que existe vida inteligente en el universo es que nadie ha intentado contactar con nosotros. -- Bill Watterson

miércoles, 7 de octubre de 2009

Resolviendo el error al instalar las guest additions de Virtual Box en Ubuntu 9.04 con ATI

Como siempre que me creo una máquina virtual nueva de Ubuntu 9.04 en VirtualBox (OSE), tengo problemas al instalar las Guest Additions.

Nunca me acuerdo de cómo se hacía, así que voy a ponerlo bien clarito aquí para que no se me olvide.

Antes de nada, mi equipo es un HP EliteBook 8530p, de esos que vienen con ATI (nunca más, lo prometo...). El sistema operativo que tengo instalado a día de hoy es Ubuntu 9.04 y la máquina virtual que voy a instalar es otro Ubuntu 9.04. Y dado que no soy ningún genio, me he tenido que seguir las instrucciones de este artículo, que es el que me dio la solución.

Ahora sí, empieza la chicha: después de crear una nueva máquina virtual, instalar el sistema operativo y montar el cd, abro un terminal (en la máquina virtual se entiende) y tecleo:

sudo /media/cdrom/VBoxLinuxAdditions-x86.run


Y el resultado es el siguiente:



¿Veis esas últimas líneas donde dice algo así como: Warning: unknown version of the X Window System installed. Not installing X Window System drivers?

Pues eso nos está indicando que tenemos un problema. Y si reiniciamos la máquina nos encontraremos con esta dichosa pantalla:





Bien, pues para solucionar esto, nos vamos al terminal y ejecutamos:

sudo /media/cdrom/VBoxLinuxAdditions-x86.run --target ~/guest_additions


Esto nos creará los archivos necesarios para la instalación de las guest additions en el directorio /tmp. Tenemos que editar el archivo install.sh (yo utilizo vim)


sudo vim ~/guest_additions/install.sh



Y en la línea 415 y cambiar Cambiar la línea siguiente:


1.5.99.* | 1.6 )


por


1.5.99.* | 1.6.0 )
1.5.99.* | 1.6.* )

Ahora ya podemos ejecutar el script de instalación:


sudo ~/guest_additions/install.sh


Y listos para reiniciar, y poder a utilizar nuestra máquina virtual con Ubuntu 9.04 y las guest additions funcionando correctamente.

A esto lo llaman la hora mágica. El día aún no ha terminado pero la noche aún no ha llegado, y en algun lugar Rocco Sifredi se está cepillando a una mujer que no ama -- Peter Griffin

martes, 6 de octubre de 2009

Las nuevas buenas maneras en el mundo 2.0

Tomándome una cerveza y viendo la tele, que es una de las mejores maneras de tener una idea divagar, me ha surgido la siguiente duda.

Con la implantación cada vez más rápida de la web 2.0 en nuestras vidas (el 24,7% de la población) están surgiendo nuevas maneras de comunicarnos (relacionarnos) entre todos nosotros. No voy a entrar en si la calidad de la comunicación mejora o empeora (igual en otro post me lanzo). Sí me gustaría, en cambio, reflexionar acerca de los nuevos códigos de conducta o protocolos que se van formando. En definitiva, qué es hoy en día una conducta social 2.0 aceptable.

Tengo claro que hay ciertos comportamientos sociales que funcionan de la misma forma en ambos escenarios: tanto en el mundo 2.0 como en el mundo 0.1-beta no suele ser buena idea insultar, descalificar o humillar (salvo que estemos en el parlamento, o en un plató de telecinco)

Hay otros, sin embargo, que mientras pueden suponer una conducta reprochable en uno de nuestros mundos, en el otro sencillamente no aplican. Me intentaré explicar:

Imaginemos a una pareja de concursantes en el Un, dos, tres, presentado por Mayra Gómez Kemp en cualquiera de sus etapas cuando este inventazo, que es internet todavía estaba en el huevo.

(Mayra Gómez Kemp): Ahora, por 374 pesetas, dígannos comportamientos sociales que no son bien aceptados, como por ejemplo, mascar chicle con la boca abierta haciendo ruido. Un, dos, tres, responda otra vez:


(Él): Mascar chicle con la boca abierta haciendo ruido

(Ella): Enseñar la ropa interior



(Él): Escupir en la calle


[...]

Bien, ahora imaginemos que se hace un remake del Un, dos, tres presentado por cualquiera de las presentadoras de la sexta (el Un, 2.0, tres)

(Pibón bendito): Ahora, por 2,25 euros, dígannos comportamientos sociales 2.0 que no son bien aceptados, como por ejemplo, CHATEAR UTILIZANDO EXCLUSIVAMENTE LAS MAYÚSCULAS. Un, dos, tres, responda otra vez:


(Él): CHATEAR UTILIZANDO EXCLUSIVAMENTE LAS MAYÚSCULAS

(Otro él): Copiar contenido de un blog personal sin dar referencias


(Él): Publicar fotos de un tercero en facebook y etiquetarle para que todo el mundo vea el pedo que se pilló la noche anterior a una reunión importantísima a la que no fue porque "se puso malo"



El problema que me he encontrado es que imaginándome esta última escena, no estoy muy convencido de que pudiera sacar demasiada pasta con esta pregunta. Yo sé qué es lo que a mí me parece una conducta poco apropiada, ¿pero será así para el resto? Me consta que no para todo el mundo, pero ¿cómo lo voy a saber si no he tenido una educación 2.0?

Así pues, me gustaría saber qué cosas os molestan de la red, qué buenas costumbres tenéis y creéis que sería bueno que más gente las practicara, o si realmente todo esto es una son paja mental mía...

Nota: Por si no hubiera quedado suficientemente claro quisiera aclarar que el término 2.0 ha sido utilizado de forma sarcástica en todo el artículo (como no podría ser de otra manera)

Pensar es el trabajo más difícil que existe. Quizá esa sea la razón por la que haya tan pocas personas que lo practiquen. -- Henry Ford