Running background jobs on Ubuntu

Some time ago I mentioned a project I was working on to move an application from Heroku to a virtual server running on Rackspace. One of the challenges I faced in that project was setting up some background jobs.

Given that we were using Ubuntu we decided to use Upstart to manage the jobs.

Here is a summary of the procedure I followed:

  1. Create an specific user for the jobs to run (useradd worker)
  2. Create a config file to make upstart manage each job. These files should be placed under /etc/init/. These files should include some generic information for upstart (like the user that will run the service) and also some specific information related to job (like how to start it). Here you can find and example to configure Clockwork (a cron replacement app built on Ruby).
  3. Now to manage the job you can use this command
    sudo service clockwork {start|status|stop|restart}
  4. The log file of the job will be placed under /var/log/upstart and the file name will be <job_name>.log

Hope you find it useful.

Ubuntu update

Técnicamente no es updated, sino que simplemente decidí reemplazar mi ubuntu de 64 bits por uno de 32 bits debido a que no estaba contento con el rendimiento de mi máquina. Entonces me bajé el ISO correspondiente a 11.04, lo “quemé” en un pendrive y pisé mi antigua instalación. Luego de haber completado todo el setup, noto una leve mejora en el desempeño de mi máquina, pero nada demasiado relevante.

Les paso a contar ahora las yerbas complementarias que instalé una vez finalizada la instalación del sistema base.

Primero actualicé los repositorios utilizados por apt-get

sudo apt-get update

Lo primero a instalar es Gnome-Do una aplicación que permite lanzar la ejecución de un programa tipeando su nombre en un ventana de dialogo.

sudo apt-get install gnome-do

Continuando con los fundamentales, el siguientes paso fue instalar una extension del  explorador Nautilus para tener un menú contextual para abrir una teminal.

sudo apt-get install nautilus-open-terminal

A mi me gustan la fuentes de Microsoft, entonces:

sudo apt-get install msttcorefonts

Un utilitario infaltable es el Gimp:

sudo apt-get install gimp 

El siguiente paso es instalar Chrome, para lo cual seguí el procedimiento sugerido por Google.

Momento de instalar algunos utilitarios que funcionan como add-ons de Firefox: FireBug y FireFTP.

Llega la hora de las herramientas de desarrollo. Comenzado por Java aparece la diyuntiva de si instalar la version OpenJDK o la de Oracle. En teoría ambas siguen la misma especificación, pero la realidad es que hay reportadas menores diferencias. La buena noticia es que ambas versiones pueden convivir. Por una cuestión de simplicidad instalé OpenJDK que se instala fácilmente via apt-get

sudo apt-get install openjdk-6-jdk

Luego bajé un Eclipse classic de la página de Eclipse.

El siguiente items es el entorno Ruby, para cuya instalación me baso en el post que escribí hace un par de semanas.

Para Pharo, bajé el Zip correspondiente con la última versión de la máquina virtual y restauré mi imagen favorita desde mi pendrive.

Bien, estoy es todo para comenzar a trabajar.

Chau 2011

¡Adentro! se fué el 2011 y tal como lo dijera en su momento: 2010 fue un año bisagra y con 2011 empezó una nueva etapa. Entre los hechos destacados de esta nueva etapa debo mencionar:

Respecto de eventos fui orador en Codecamp y en Smalltalks,  participé activamente en el Agiles2011 y en el AO Tour y dicté un workshop en el contexto de ASSE/JAIIO.

Otro punto que quiero destacar es que he mantenido mi constancia en este blog. Durante 2011 escribí 88 post superando las 66 que había escrito durante 2010. Este incremento de casi 30% también se correlaciona con la cantidad de visitas que paso de casi 7.000 en 2010 a casi 11.000 durante 2011. Intentar superar estos números durante 2012 será sin duda una gran desafío.

Bueno, es todo, chau 2011. Me despido no sin antes agradecer a los lectores de este blog deseándoles un gran 2012 y esperando poder seguir aportandoles mis 2 centavos durante este nuevo año.

¡Salud!

De Paint.net a Paint.mono

Aunque a mi amigo Marcio le cueste creerlo, desde mi viaje a Francia que estoy con Ubuntu como mi sistema operativo principal. Esto se debe a que he logrado encontrar prácticamente software para cubrir todas mis necesidades. Una de las pocas cosas que me faltaba resolver era un editor gráfico, ya que si bien en linux está disponible el famoso Gimp, nunca me resulto cómodo. Puede que sea por el modelo de ventanas que tiene o porque me cuesta encontrar algunas funcionalidades. En Windows, yo suelo utilizar el fantástico Paint.Net. Yo sabia que si bien el Paint.Net estaba construido con tecnologia .NET hacia un uso importante de WindowsForms y ello fue lo que me llevo a pensar que no funcionaria en Windows, lo cual comprobé que era efectivamente asi, pues en la página de Paint.Net se indica explicitamente que es un editor para Windows. A pesar de esto se me dio por googlear “paint.net linux” y para mi sorpresa me encontré con Paint.mono un port the Paint.Net a Mono. Luego de investigar un poco, logro instalarlo exitosamente en mi sistema ejecutando los siguientes tres comando de una terminal:

sudo add-apt-repository ppa:xmlich02/ppa
sudo apt-get update
sudo apt-get install paint-mono

El único detalle de esta forma de instalación es que no agrega una entrada de menu correspondiente a Paint.mono. Para ejercutarlo hay que presionar ALT+F2 y luego tipear paintdotnet.

Más buenas nuevas en Linux

Esta última semana me he visto sorprendido por mis lectores al ver que los mismos se manifestaron positivamente sobre mi incursión en el mundo Linux :-).

Y para deleite de ellos les comento que recientemente sumé dos nuevas experiencias positivas a vida con linux: Skype y Java Development Kit. Ambos paquetes instalados desde el Package Manager.

Seguimos en contacto, Bye.

Entre windows y linux

Hace un tiempo actualicé mi distribución de Linux (de Ubuntu 9.4 a Ubuntu 9.10). Lamentablemente no fue una experiencia del todo feliz. Si bien la actualización fue totalmente desatendida (una vez aceptada la propuesta de actualzación lanzada por el sistema operativo, automáticamente se realizó la descarga e instalación casi sin intervención adicional), algunas cosas dejaron de funcionar, una de ellas fue el modem 3G. Por otro lado, luego de la actualización mi sistema funciona más lento y al mismo tiempo los cambios en la interface de usuario (aunque mínimos) no me resultan más amistosos. Esto me ha llevado a volver a trabajar con más seguido con Windows.

Por qué Linux no es masivo

Se que este post puede resultar polémico, pero a pesar de eso quiero compartir mi visión.Este es un post que tenia pendiente desde hace bastante tiempo. Lamentablemente me encuentro escribiendo este post desde Windows porque luego de actualizar la distribución de Ubuntu (de 9.04 a 9.10)  el modem 3G dejó de funcionar.

Según veo las cosas yo, a pesar de que Ubuntu ha logrado proveer de una experiencia de usuario muy “amistosa” en comparación con las otras distribuciones de Linux, aún se encuentra bastante distante de la expericiencia de usuario provista por Windows y Mac OS.

Creo que el caso del modem 3G es un claro ejemplo: mientras que en Windows el uso del modem es muy directo (simplemente doble click para instalar el marcador, dos clicks mas para activar el modem y marcar,  y listo, ya estamos manejando),  en Linux es necesario ejecutar una serie de pasos desde una consola, con permisos de superusuario (pasos que pueden llegar a incluir la instalación/configuración de un driver).

En gran medida esta situación puede que se deba a que no todos  los fabricantes de hardware proveen drivers para Linux. Por otro lado la filosofía open source creo que también puede resultar un impedimento, ya que no todo el mundo está dispuesto a “publicar” su código fuente. ¿Como influye esto? Ciertas distribuciones no incluyen en el instalador software que no sea Open source, obligando a que el usuario deba tomar a su cargo la “instalación/configuración” de los drivers  que la distribución no incluye.

Por último, pero no por eso menos importante, está el tema de la consola/terminal. Entiendo que a los programadores de linux les encante trabajar en una terminal, pero para la gran mayoria de los usuario les resulta extraño y/o incómodo .

Tengo algunos otros puntos sobre este tema, pero son muy particulares y creo que no aportan a la discusión, pues lo aquí mencionado es de mucha mayor relevancia.