David Anguita — Blog

Dropbox para sincronizar tus equipos de trabajo

Por muchos es conocida Dropbox, aplicación que nos permite almacenar archivos en la nube con objetivo de compartirlos, mantenerlos sincronizados entre varios equipos, realizar un backup de los más críticos o simplemente disponer de una versión accesible vía web de los mismos. Aprovechando la integración de Dropbox con los distintos sistemas de archivos podemos utilizarlo para sincronizar automáticamente los archivos esenciales, que en mi caso son los que me permitan tener un entorno de desarrollo preparado en el menor tiempo posible.

Habitualmente trabajo con sistemas UNIX (Mac OS X y GNU/Linux) por lo que empleo enlaces simbólicos para enlazar los archivos que necesito sincronizar en el directorio Dropbox, de esta forma:

$ ln -s /ruta/del/directorio/dropbox/archivo /ruta/del/archivo

 

Los tipos de archivo que mantengo sincronizados:

Dotfiles

Archivos generalmente alojados en el directorio de usuario, cuyos nombres comienzan con un punto y definen variables de entorno, alias, opciones de ejecución y preferencias globales de intérpretes del sistema y otras aplicaciones.

Algunos de ellos:
  • .bashrc (bash shell)
  • .bash_profile (bash shell)
  • .vimrc (editor de textos vim)
  • .gitconfig (git VCS)
  • .gitignore (git VCS)
  • .irbrc (Intérprete interactivo Ruby)
  • .screenrc (GNU screen)
  • .zshrc (zsh shell)
Archivos de configuración
  • Archivos de preferencias, Bundles y Themes de IDEs y editores de texto
  • Sitios FTP
  • Medios de acceso a equipos remotos
  • Conexiones a Bases de Datos (con y sin túnel SSH)
Scripts de sistema

Principalmente orientados a automatización de tareas en servidor.

Documentación
  • Referencias sobre frameworks y lenguajes de programación
  • Cheat Sheets
  • Presentaciones
  • Otra bibliografía esencial
Claves y certificados
  • Passwords (encriptado)
  • Certificados de usuario y seguridad
Enlaces de descarga

Suelo almacenar enlaces de descarga de mis aplicaciones esenciales en un archivo de texto, para descargarlas en lote en un equipo nuevo.

Con todos estos archivos sincronizados, el enfrentarnos a un equipo nuevo supondrá perder menos horas de productividad, bastará con instalar las aplicaciones y realizar los enlaces simbólicos en el sentido inverso. ¿Cuáles son vuestras técnicas para ganar minutos en este tipo de tareas que, inevitablemente, nos hacen perder tiempo cada vez que renovamos hardware?
Posted 14 days ago
Loading mentions Retweet

Cómo gestiono Twitter desde HootSuite

Hace algún tiempo abandoné clientes de escritorio como TweetDeck o Seesmic Desktop para pasar a utilizar el cliente web HootSuite como herramienta única de gestión de mi cuenta Twitter. El motivo no es otro que ser tan completo como cualquier cliente de escritorio actual y poseer una característica inherente a las aplicaciones web convencionales: Sólo necesito un navegador para utilizarla.

HootSuite es especialmente flexible a la hora de filtrar y organizar contenidos, pudiendo segmentar tu timeline en dos niveles: Pestañas y columnas.

La naturaleza de ambos niveles es clara: Cada pestaña podrá contener columnas y cada columna mostrará los tweets que satisfacen la condición que aplica. Estas condiciones son las habituales según el API de Twitter (timeline público, menciones, favoritos y DMs), además de Listas y búsquedas almacenadas.

Este es el interfaz general que ofrece HootSuite, donde identificamos las pestañas en la zona superior izquierda y las columnas en el cuerpo de la página:

Mi sistema de gestión se basa en cinco pestañas: Timeline, DMs, Searches, Favs y Pending.

La primera de ellas, Timeline, contiene cuatro columnas:

  • Home Feed, que es el Timeline público habitual.
  • Una lista privada llamada "timeline", en la que sitúo a aquellos usuarios con los que tengo una comunicación más activa. La observo más frecuentemente que el Timeline público.
  • Menciones, no hay mucho que contar aquí.
  • Tweets enviados, ya que suelo necesitar un histórico de mis envíos.

La segunda, DMs, es más evidente y tiene como objetivo separar visualmente la otra gran vía de comunicación en Twitter, en este caso de carácter privado:

  • DM Outbox (Enviados)
  • DM Inbox (Recibidos)

La siguiente, Searches, está destinada a búsquedas almacenadas. Generalmente busco contenidos interesantes por mi profesión: Desarrollo de software general, desarrollo web, frameworks MVC, frameworks JavaScript y un largo etcétera. Es una fuente importante de usuarios a seguir, ya que generan el contenido relevante para mí.

Favs también es evidente, simplemente alberga mi lista de tweets favoritos en una única columna. Suelo usar esta funcionalidad en Twitter para marcar aquellos tweets que referencian contenido interesante y que quiero leer en cuanto tenga tiempo libre. Habitualmente acumulo favoritos durante la semana y suelo procesarlos los fines de semana. Se que no es el uso habitual y que otros clientes ofrecen marcado de tweets sin pasar por favoritos, pero para mí es un medio muy cómodo.

Por último, Pending muestra una única columna de tweets programados y pendientes de envío, otra de las funcionalidades de HootSuite. Realmente la utilizo contadas veces, pero su especial naturaleza me obliga a aislarla del contenido en tiempo real.

Twitter es una fuente inmensa de contenidos y una correcta organización evitará que pasemos por alto tweets y enlaces relevantes y nos ayudará a aislar el "ruido" que es pocas veces útil.
Probablemente la gestión de contenido en Twitter es algo muy personal y dependiente de vuestra profesión o intereses, por supuesto indispensable para los llamados Social Media y Community Managers aunque también útil para los meros usuarios como yo.

Los comentarios están abiertos, ¿cuál es vuestro sistema?
Posted 6 months ago
Loading mentions Retweet

La "Cheat Sheet" que todos hemos hecho alguna vez

Existen cientos de Cheat Sheet o chuletas que los desarrolladores de software creamos —y generalmente compartimos— con objetivo de reunir la información más relevante y práctica acerca del uso de un editor de textos complejo, un framework, un lenguaje de programación, un sistema operativo, una metodología de desarrollo y un largo etcétera.

Me ha sorprendido encontrarme con una Cheat Sheet muy similar a las que suelo acumular en mi espacio de trabajo, además de ser realmente completa al tratar un editor de textos complejo, a la par que genial, como es Vi.

Extraída de esta completa guía de uso de Vi.

Completando el post, no podría terminar sin recomendar una genial colección de las citadas Cheat Sheets especialmente bien estructuradas en mi opinión. Sintetizan temas muy interesantes para desarrolladores web como HTML, CSS, PHP y Ruby on Rails: Added Bytes Cheat Sheets.


Posted 7 months ago
Loading mentions Retweet

Línea del tiempo de distribuciones GNU/Linux

Desde http://futurist.se/gldt/ se está realizando un gran trabajo creando y manteniendo un mapa de distribuciones GNU/Linux que abarca su evolución, derivaciones y bifurcaciones en el tiempo partiendo de distribuciones "maestras" como Debian, Slackware, Red Hat y muchas otras.

A continuación os muestro la última versión hasta el momento (9.3). Es posible que existan actualizaciones en el fichero debido a que ciertas familias de distribuciones están en constante derivación, todo ello está correctamente versionado en http://futurist.se/gldt/

Posted 8 months ago
Loading mentions Retweet

CSS extendido con LESS

Ante lo tosco —sintácticamente hablando— que puede resultar un desarrollo CSS atendiendo a las especificaciones actuales, numerosos son los frameworks CSS o utilidades que surgen con el objetivo de flexibilizar este proceso.

LESS es una gema Ruby que nos permite generar ficheros CSS a partir de su propia especificación, que no es otra que una extensión de CSS con cuatro mejoras fundamentales:

Variables

Permite definir atributos en el documento CSS y asignarlos a múltiples clases, por lo que las modificaciones de estos atributos tienen repercusión de forma global.

#colors {
    @header: #fff;
    @wrapper: #000;
    @footer: blue;
}

A los que accederemos con:

.wrapper {
    color: #colors[@wrapper];
}

Mixins

Permite asociar todos los atributos de una clase a cualquier otra, permitiendo también el paso de parámetros a la primera, lo que a efectos prácticos la convierte en una función que devuelve una serie de atributos.

.bordered(@color: #fff) {
    border: 1px solid @color;
}

Reglas anidadas

Permite definir la jerarquía de clases en el DOM estableciendo unas claras reglas de herencia.

#header {
    background-color: #000;
    .wrapper {
        width: 960px;       
    }
}

Operaciones

Aporta un dinamismo relativo
 a la generación de CSS permitiendo aplicar operaciones aritméticas a valores y colores definidos en la hoja de estilo.

.wrapper {
    background-color: #888 / 2 + #000;
}

Para trabajar con LESS, una vez instalado en nuestro sistema a través de ruby-gems, editaremos un archivo con extensión .less que utilizaremos para generar el CSS estándar de forma automática a través de la gema.

Este es un buen ejemplo de código LESS y su correspondiente CSS generado aplicando la mayoría de sus mejoras (extraído de http://github.com/cloudhead/less/tree):

LESS
@dark: #110011;
.outline (@width: 1) { border: (@width * 10px) solid black }

.article {
    a { text-decoration: none }
    p { color: @dark }
    .outline(3);
}

CSS
.article a { text-decoration: none }
.article p { color: #110011 }
.article { border: 30px solid black }

Recordemos que no estamos hablando de CSS dinámico, sino de una especificación extendida del CSS estático que conocemos. Las técnicas de CSS dinámico requieren generalmente un servidor o intérprete y tienen objetivos adicionales a flexibilizar el proceso de desarrollo.

Para los más curiosos, LESS es open source bajo Licencia Apache y mantiene un repositorio público en github desde este proyecto.

Web oficial de LESS

Posted 9 months ago
Loading mentions Retweet