Línea de comandos

La terminal, la consola, la línea de comandos o como quieran llamarla. Como usuario intensivo, siempre escucho tanto elogios como críticas que generalmente demuestran poco conocimiento de causa, y no puedo no dejar mi opinión al respecto. Creo firmemente que usar una línea de comandos:

  • Facilita el single tasking: El avance de la tecnología y de la sociedad en general nos inculcan que debemos hacer muchas cosas al mismo tiempo, pero la realidad es que las personas sólo podemos hacer una cosa a la vez (el que mucho abarca, poco aprieta…). En una consola se puede hacer una sola cosa a la vez, y te obliga a pensar qué es lo que realmente querés hacer.

  • Permite concentrarse más en el qué y no en el cómo. Para mí en una gran mayoría de los casos usar una interfaz gráfica es conocer detalles de implementación. Después cambian la interfaz, y todo el mundo se queja (ejemplos sobran: Windows, Office, GMail, Facebook…). ¿Por qué? Porque en la mayoría de los casos se hacía foco en cómo hacer las cosas (por ejemplo, en qué lugar específico de la pantalla hacer clic), y no en qué se estaba haciendo efectivamente.

  • Impulsa un aprendizaje más uniforme: Las herramientas que proveen interfaz de línea de comandos suelen ser más estándar que las gráficas, que tienden a ser completamente distintas entre sí. Por ejemplo, el pasaje de parámetros y el uso de man es un común denominador de muchísimas aplicaciones. La curva de aprendizaje puede ser más dura al inicio (conocer las utilidades básicas Unix, por ejemplo), pero después no hay mucho más, no hay que aprender nada nuevo sino combinar lo que ya se conoce.

  • Favorece la abstracción de tareas repetitivas: Es mucho más intuitivo descubrir lo repetitiva que es una tarea cuando se tipean los comandos que, por ejemplo, cuando se usa el mouse. Y también es más fácil de automatizar, de correr en background, de que sea más portable, entre otras ventajas.

Algunos de los contra argumentos que he escuchado:

  • Para usar la consola hay que ser un experto/gurú/tener memoria para acordarse todos los comandos: Nada, pero nada de eso. La consola no está pensada para tipear comandos complejos. Y si hay que hacerlos, hacerlos una sola vez. Los aliases y los scripts son tus mejores amigos. Mi memoria desastrosa puede dar fe de ello :P

  • Las herramientas gráficas son en general mejores: ¡Depende para qué! ¡Y depende de cada uno y de cómo se da la interacción con cada aplicación! Me pasa muy seguido que puedo estar 15 minutos buscando una opción, navegando por un mar interminable de menús en un programa de ofimática para hacer algo muy sencillo. Eso es un síntoma de que algo falta. Una línea de comandos para decir exactamente qué queremos.

  • La consola es poco cómoda, no se puede resaltar lo importante: Hay un montón de comodidades como los colores y el autocompletado que agregan mucho al uso de una línea de comandos.

Bien… ¿entonces tenemos que usar todas herramientas con línea de comandos? No, simplemente hay que detenerse a pensar qué es lo que usamos de cada programa y cómo lo hacemos, para buscar lo más óptimo que funcione con nuestra forma de interactuar. En mi caso, por ejemplo, nunca usaría un cliente de correo de línea de comandos. O un chat. O un editor de imágenes. Pero depende de cada uno.

Conclusión

Lo ideal es que el potencial de la línea de comandos y los recursos más gráficos avancen de la mano hasta convertirse en una sola cosa (y consistente a través de diferentes aplicaciones). Pero hay cosas que están por demás demostradas (por ejemplo, escribir qué se quiere hacer en lugar de mover y apretar un mouse, y también que en una pantalla negra con sólo letras verdes no se distingue qué es importante y qué no). Entonces, nada de fanatismos sobre una cosa u otra. El único fanatismo sano es el de cuestionarse absolutamente todas las cosas, para pensar mejores soluciones.

Instantáneo

Hace un tiempo leía (lamentablemente no recuerdo dónde) sobre lo que pasa en estos tiempos en donde todo es instantáneo, donde para saber o acordarse de algo basta googlearlo y es cuestión de segundos tenerlo a disposición.

Un ejemplo: estaba escuchando una canción y no recordaba ni el título ni el disco, fui inmediatamente a buscar en internet la info que necesitaba, y me perdí en un par de links… y cuando me di cuenta la canción se había terminado. Claramente me había perdido de lo más importante.

Y en base a esto me vienen un montón de preguntas, sobre todo ¿hasta qué punto esta instantaneidad (si existe tal palabra :-)) es buena? ¿cómo hacía la gente para saber y conocer las cosas en los tiempos en donde no había todo lo que hay ahora? ¿no es bueno que lo que se aprende llegue a través de un proceso más que disparado por un instante? ¿estaremos perdiendo la habilidad de descubrir porque es más fácil lo instantáneo? ¿estamos sufriendo de ansiedad, de adicción, por estas cosas instantáneas? ¿qué valor tienen estas cosas que vienen de arriba?

Esperando Nacer

Serú Girán es para mi gusto la mejor banda que nos dio el rock nacional si tomamos en cuenta quiénes la formaron. Uno más groso que el otro. Una banda que duró poco pero que dejó muchísimo.

Peperina es un excelente disco, el cuarto de Serú, del año 1981. Me cuesta muchísimo elegir una canción de este disco, me gustan todas por igual, pero me decidí por Esperando Nacer, cantada por David Lebón, y con una letra que pega mucho.

Esa idea de estar viviendo pero saber que hay algo más, que puede estar por suceder, con una esperanza para buscarlo que saca fuerzas de quién sabe dónde. Es una apuesta al amor. Cómo será de importante esto, que está asociada al concepto de nacer, es decir, de empezar una vida.

Tengo el corazón abierto
todo el mundo puede ver un camino para correr
Tengo el alma en un desierto
todo el mundo puede ser un camino para crecer.

Todo el mundo dice que mi amor es en vano
y que llevo siglos esperando nacer
esperando nacer.

Yo te he visto en el pasado
con tu cara de jarrón y tu mundo hecho de clichés
que esperás ahí al costado del camino
no escuchaste esta canción
todo el mundo te quiere ver.

Tengo la esperanza de encontrar un sonido
y un amor tan grande que te pueda envolver
por Dios escuchame.

Te imaginas el lamento
de la gente y su manual de las cosas que nunca fueron
y el olor de los jazmines viejos
y la angustia sensación de que el tiempo se echó a perder.

Soy un solitario transmitiendo un mensaje
escribiendo frases para poder creer
esperando nacer
esperando nacer
esperando nacer
esperando nacer.

¡Feliz día del trabajador!

Esa cosa del día a día, de sentirse parte, de esforzarse, asumir responsabilidades, crecer… ¡tantas cosas trae el trabajo que llenan nuestras vidas!

Y a pesar de que a mí no me van esas cosas de fechas puntuales (cumpleaños, fin de año, día de X), es cierto que necesitamos un momento para parar la pelota, observar lo que hacemos, lo que logramos y a dónde vamos, y a veces en la rutina es difícil tomarse ese tiempo y un momento puntual puede ayudar.

Así que, ¡feliz día! Y un especial saludo a aquellos que:

  • trabajan no sólo para cumplir una tarea, sino que van más allá y se esfuerzan por construir un mundo mejor
  • sienten que es su primer día del trabajador (más o menos lo que me pasó el año pasado, esa sensación de que esto nuevo está bueno, y de que hay mucho camino por recorrer)

Links Abril 2013

Ufff, cuántos links, ¡cuántas cosas interesantes en este mes! Y sinceramente, todavía no me pude hacer el tiempo para leerlas todas en detalle. Y cuando quiero cerrar el post, ¡aparecen más links interesantes!

Programación

  • GSoc 2013: Proyectos de ESUG: La lista de proyectos de ESUG para el Google Summer of Code de este año. Yo escribí una propuesta para el proyecto “Arduino Web Interface”. Este viernes (3 de mayo) es el deadline para enviar propuestas. Luego Google dice cuántos proyectos acepta, se hace una votación interna en la organización (ESUG) y ¡los que salgan elegidos van a participar!

  • Pharo ZeroConf scripts: Los llamados ZeroConf scripts son los que nos permiten descargar una imagen de Pharo lista para usar con una URL muy simple. Se pueden descargar diferentes versiones, imágenes solas o con VM.

  • JQuery terminal emulator: Plugin JQuery que sirve para emular líneas de comandos. Posee tab-completion, historial, entre otras cosas.

  • What are ID3 tags all about?: En un rato libre empecé a programar un lector de etiquetas ID3 para Pharo Smalltalk (ya estuve subiendo algo a GitHub y a SmalltalkHub). Este artículo me ayudó a empezar a entender en detalle cómo funcionan las diferentes versiones del protocolo ID3.

  • Your code structured: Un ejemplo de cómo un software puede sufrir complicaciones en cuanto a su estructura a nivel paquetes, haciéndolo así muy acoplado (con todas las desventajas que esto trae). El ejemplo que muestra es la evolución de JUnit desde la versión 3.7 a la 4.11.

  • The Git Parable: Uno de los artículos que no llegué a leer. Pero lo incluí porque lo que vi de los primeros párrafos suena a una muy buena explicación de cómo funciona Git, y entender (cosa que muchas veces no pasa) en detalle los comandos.

  • Coding, Fast and Slow: Developers and the Psychology of Overconfidence: Otro de los posts que no llegué a leer pero me lo recomendaron. Sobre Agile y estimaciones.

Ciencia/Tecnología/Informática

  • El Capitán Beto ya se lanza al espacio: ¡Gran noticia gran! El nanosatélite argentino de hardware libre CubeBug-1 (se lo puede seguir por Twitter) ya está girando alrededor del planeta :-). En 10Pines estamos desarrollando una consola que se comunica con la radio terrestre, que eventualmente se comunicará con nuevos satélites similares. ¡Muy contentos y orgullosos de participar en este proyecto! La noticia también salió por La Nación y por el sitio del Ministerio de Ciencia y Tecnología nacional.

  • Contame un cuento: Aplicación que permite fomentar la lectura de cuentos a través de recursos multimedia.

  • TMUX the terminal multiplexer: Tmux es un software que permite construir sesiones bastante configurables de terminales (ventanas, tabs, paneles horizontales/verticales, etc). Link a la segunda parte del post.

  • Teamocil: Herramienta hecha en Ruby que permite definir sesiones personalizadas de Tmux con sencillos archivos de configuración en formato YAML.

  • Huayra Linux: Distribución GNU/Linux de origen argentino, pensada para las netbooks del programa Conectar Igualdad, pero también para uso general.

  • Mis “20 centavos” sobre el plan Conectar Igualdad: Una opinión, que comparto mucho, sobre el programa Conectar Igualdad.

  • Counter intuition TED talk: Charla TED acerca de las cosas que nuestro cerebro ignora por estar concentrado en otras. Otro video relacionado a este tema es “Colour changing card trick”, simplemente véanlo y se van a impresionar.

  • Locos (parte 2): Segunda parte del artículo de Paenza, con más ejemplos de genios locos que cambiaron el mundo y que tienen hoy en día muy poco reconocimiento. Link a la primera parte.

  • Hackatón Musical: Los proyectos que resultaron del Hackatón que se hizo en el MICA (Mercado de Industrias Argentinas) del 11 al 14 de abril en Buenos Aires.

  • Girls for Raspberri Pi: Presentación de un curso de niñas que realizaron proyectos muy interesantes con Scratch y Raspberri Pi.

  • Sonata (cliente para MPD): MPD es un servidor de reproducción de música. Sonata es un cliente gráfico Gtk. Es muy completo, tiene playlists, edición de tags, sincronización con last.fm, descarga de letras y covers, entre otras cosas.

  • Explorar la clandestinidad en clave de género: mujeres hacker: Un análisis de la participación de las mujeres en el software libre y la cultura hacker.

Minimalismo/Desarrollo Personal

  • Minimalism: Addition not subtraction: Excelente visión del minimalismo como una suma de cosas en lugar de una resta de cosas. Obviamente lo que se agrega es aquello que realmente importa y agrega valor (y que, oh casualidad, no es material).

  • Achieving without goals: “lograr sin objetivos”, algo que estoy comenzando a entender y comparto esa idea cada vez más. Otro gran post de zenhabits.

  • Why you should write daily: Otra joya de zenhabits, sobre los beneficios de escribir como hábito diario.

  • News is bad for you, and giving up reading it will make you happier: Probablemente uno de los mejores artículos que leí en mi vida. Absolutamente recomendable. Habla de las características de las noticias, los efectos que tienen sobre nosotros y nos aconseja dejar de leerlas (obviamente explicando por qué).

  • Is busy-ness a drug?: Interesante análisis sobre la necesidad (muy común en muchas personas en estos días) de estar ocupado siempre, como una droga que permite ocultar ciertos problemas de fondo.

  • Instagram’s Envy Effect: Excelente artículo acerca de las redes sociales y la importancia que deberíamos darle (poca).

  • Minimalism: the process IS the destination: Otra gran visión del minimalismo como un proceso y no como un objetivo a alcanzar.

  • Mi dieta de información: Algunos tips para sobrevivir a esta era en donde estamos sobrecargados de información.

El resto

  • Ante cualquier duda: Sitio con información interesante sobre medicina e interés general, del Dr. López Rosetti ¡un capo para explicar las cosas!.

  • Rincón del Ukelele: Sitio con info y acordes de canciones para tocar con ukelele. Aunque los acordes sirven para cualquier otro instrumento y hay un montón de canciones conocidas (sobre todo de artistas nacionales).

  • What is socialism: Explicación bastante amigable en un comentario de Reddit sobre qué es el socialismo.

  • Un país unido en dos ruedas: sueño de aventura y solidaridad: Linda noticia, de esas que cada vez, lamentablemente, aparecen menos. Dos hermanos que recorrieron todo el país a lo largo y fueron conociendo las necesidades de muchas escuelas rurales, y planean volver para darles una mano.

  • Explain like I’m five: Bitcoin: Eso, explicación simple de Bitcoin.

  • Historia de Boca Juniors: Si sos hincha de Boca, no te podés perder. Todos los partidos, todos los goles, los jugadores, todas las estadísticas. Se puede hacer todo tipo de búsquedas sobre esos datos. Muy bueno.

Acá los posts de meses anteriores: