Press "Enter" to skip to content

Episodio 2: Comenzando con Docker y técnicas de lectura rápida

Hola a todos. Bienvenidos a segundo episodio de Ruta DEV. Antes que nada me quiero disculpar. Tenía que haber traído este episodio hace dos semanas, pero me ha sido imposible. Me han surgido varios imprevistos y no he podido. Los episodios de este podcast deben ser muy frescos, ya que contaré cómo voy gestionando mi aprendizaje y cómo voy mejorando en el mundo de la programación. Así que no caí, que si en los últimos días antes tengo algún tipo de contratiempo no podré publicar a tiempo. Pero no os preocupéis que he encontrado una solución. Voy a grabar algún que otro episodio especial para tenerlo en la recámara para cuando esto ocurra. Así no os dejaré sin episodio. A estos episodios los llamaré Paradas en el Camino. Y en vuestro podcatcher podréis ver que empiezan con las siglas PEEC. En ellos hablaré de temas relacionados con la programación y el aprendizaje. Os gustará seguro.

Bueno, después de disculparme, comenzamos con la semana. ¿Cómo ha ido todo? Pues la verdad que al principio ha sido un poco caos. No ha empezado mal, pero a los pocos días ya estaba cansado. Trabajo 8 horas al día, y aparte las rutinas que me he propuesto en el primer episodio me ocupa hora y media o dos horas más. Pero bueno, para eso estamos. Hay que ir rectificando, ¿no?

Las medidas que voy a tomar a partir de ahora son las siguientes:

  • En vez de hora y media o dos horas, voy a dedicar una hora. Aunque algunos días dedicaré algo más.
  • En esa hora dedicaré 40 minutos a desarrollar o aprender la habilidad relacionada con la programación, y 20 minutos a la habilidad no relacionada con la programación. Es decir. voy a empezar por lo más importante. De esta forma, si me quedara sin tiempo al final, dejaría lo menos importante.
  • El estar actualizado, buscar herramientas de desarrollo, etc. lo haré después de esta hora cuando me sea posible. O también en otros momentos del día o del fin de semana, según me coja.

Éstas son las medidas que voy a tomar. Al menos ahora mismo no le puedo dedicar más tiempo a ésto. Más adelante ya veremos.

Bueno, y ahora, comencemos a analizar cada punto del que hablé la semana anterior

Comenzando con Docker

Ya comencé a aprender Docker, y tengo que decir que me ha parecido más fácil de lo que me esperaba. No he avanzado tanto como me gustaría por los contratiempos que comenté antes. Pero ya tengo la base.

Os cuento un poco de lo que he aprendido.

Docker es un sistema de virtualización ligera donde puedes instalar uno o varios servicios o softwares. Con virtualización ligera me refiero a que no emula un sistema operativo completo, sino solo una pequeña parte, y el resto de servicios y softwares que nececita lo toma del sistema operativo del dispositivo. Suele usarse para instalar solo ciertos servicios o aplicaciones de manera que estén aisladas del sistema operativo. Se suele decir que esos servicios o aplicaciones están empaquetados en un contenedor.

Usar Docker tiene una serie de ventajas frente a otras formas de virtualización:

  • Al ser una virtualización ligera, usa los componentes nativos del sistema. Ésto hace que consuma muchos menos recursos y que el arranque de la virtualización sea mucho más rapido.
  • Es totalmente portable. Si necesitas pasar tu sistema de dockers a otro dispositivo puedes hacerlo y funcionará igual. Ésto también garantiza que funcione igual para todos los miembros del equipo, y también que funcione igual en un entorno de desarrollo que en el entorno de producción.
  • Puedes ejecutar o parar la ejecución de uno o varios contenedores Docker cuando quieras. De esta forma puedes ejecutar o parar varios servicios de una vez. Asi no tienes que tener esos servicios instalados en tu dispositivo ni tampoco estarían ejecutándose cuando no los necesitas.

Y ahora paso a explicaros algunos conceptos del ámbito de Docker:

  • Contenedor: máquina virtual que usa virtualización ligera para funcionar. En un contenedor puedes ejecutar uno o varios servicios. Y puedes arrancarlos o pararlos cuando quieras.
  • Imagen: plantilla que define un contenedor. A partir de una imagen puedes generar uno o varios contenedores, para posteriormente ejecutarlos.
  • Dockerfile: archivo de configuración que sirve para crear imágenes. En él estableces una imagen en la que se va a basar, y posteriormente defines acciones que quieres que se ejecuten (actualización del sistema operativo, instalación y ejecución de servicios, creación de ficheros y directorios). A partir de este fichero puedes generar una imagen que se usará para crear contenedores.
  • Volúmenes: los contenendores Docker tienen una desventaja. Que es que si se paran y se vuelven a ejecutar, se pierden los datos que se han guardado, ya que el contenido se resetea. Los volúmenes son, por decirlo de alguna manera, directorios compartidos o enlazados entre el sistema operativo y el contenedor. En esos directorios es donde guardaremos los datos persistentes.
  • Links: Son enlaces que conectan contenedores entre sí. Por ejemplo, podemos conectar un contenedor que ejecuta node.js con otro contenedor que ejecuta un servidor de Mongodb. De esta manera las aplicaciones que se ejecuten en el contenedor de nodejs podrán usar la base de datos del otro contenedor.
  • docker-compose.yml: es un fichero que se usa para crear y ejecutar un un contenedor o un sistema de contenedores conectados entre sí. En este fichero también se define la configuración de los contenedores (número de réplicas simultáneas, consumo máximo de recursos, mapeo de puertos, etc.)

Visto ésto, os cuento cómo he procedido en mi aprendizaje.

Lo primero que tengo que decir es que he cometido el error en buscar información básica de Docker en artículos de blogs. Me he dado cuenta que esos artículos están más o menos completos y no todos son igual de exactos. Debería haber empezado por la documentación oficial. Error en el que no volveré a caer. Cualquier buena documentación tiene siempre una sección llamada «Get started» donde te haces una ligera idea del funcionamiento de la herramienta en la que estás interesado. Esta sección suelen tener también pequeñas prácticas para afianzar más lo aprendido. Y después, de forma mucho más completa, puedes ver secciones más específicas. Yo tardé varios días en darme cuenta de todo ésto. Así que si en algún momento quieres aprender sobre «algo», lo mejor es irte directamente a la documentación. Después de eso ya puedes buscar información más concreta de lo que te interese por otros lados.

Al mismo tiempo que he ido viendo artículos de blogs, y luego la documentación, he estado practicando lo que se exponía en estos medios. La verdad es que me ha parecido algo bastante fácil. Con un poco de práctica estos conocimientos se afianzan bien. También he usado una pequeña ayuda que os puede interesar. Desde hace tiempo vengo usando un framework del intérprete de terminal zsh, llamado oh-my-zsh. Este framework, lo que hace es, que mediante un fichero de configuración puedes configurar muchos aspectos de zsh de forma muy fácil. También dispone de plugins muy interesantes, entre los que hay uno de Docker. Este plugin hace que cuando escribes el comando docker y pulses el tabulador te aparecen todos los parámetros disponibles con una breve descripción de su función al lado de cada uno. Por si os interesa saber más de este framework, os dejaré un enlace en las notas del programa.

Y la verdad es que poco más he podido hacer. Ya tengo una pequeña base. Los próximos pasos serán practicar un poco más algún que otro ejemplo, investigar cómo dockerizar mis proyectos y ponerme a ello.

Ya os iré contando en el próximo episodio cómo ha ido todo.

Lectura rápida

Con respecto a aprender técnicas de lectura rápida, os cuento mis primeras impresiones. La primera es que no se trata solo de hacer una serie de ejercicios y después al ir leyendo vas a ir más rápido por arte de magia. Más bien es otra forma de leer que tienes que practicar y acostumbrarte a leer de otra forma. Y eso es lo que realmente hace que sea difícil dominar esta técnica. Pero con un poco de insistencia, se puede conseguir. Al principio es muy probable que cueste retener lo que lees. Pero una vez te hagas a esa forma de leer terminarás reteniendo mejor lo leído. Y ya ahí no habrá quien te pare.

Para mejorar mi velocidad lectora he cogido un libro cualquiera. Y he empezado a leerlo siguiendo las siguientes pautas:

  • He usado un bolígrafo como guía pasándolo por las líneas a una velocidad algo más rápida a la que estoy acostumbrado a leer. Ésto ayuda a forzar un poco el leer más rápido, pero también evita la regresión, que no es otra cosa que volver atrás para releer una palabra o frase.
  • Usando el bolígrafo como guía, en vez de acabar en la última palabra de la línea, acababa en la penúltima, y en vez de empezar la siguiente línea en la primera palabra, la empezaba en la segunda. Ésto ayuda a ampliar el ángulo de visión y a la larga hará que puedas leer varias palabras de una sola fijación de tus ojos. Una fijación es cada vez que movemos el ojo para leer. Cuantas menos fijaciones hagamos por línea, más palabras leeremos de una sola vez y más rápido leeremos en general.
  • Y por último, no siempre, pero si de vez en cuando, cuando leo en vez de repetir mentalmente lo que leo, me pongo a tararear mentalmente una canción o me pongo a contar. Cuesta más entender lo que lees de esta forma, al menos al principio. Pero una vez te acostumbras la velocidad lectora se dispara. Al menos eso he leído. Aunque a mí todavía me cuesta, la verdad. Ésto es debido a que si repetimos mentalmente lo que leemos, la velocidad de lectura nunca será más rápida de la velocidad a la que pensamos.

Bueno, ¿y cómo mido mi velocidad lectora? Pues no es muy complicado. Coge el libro que estés leyendo y selecciona unas 10 líneas que estén completas, que no tenga ningún salto de línea antes de llegar al final. Cuenta cuantas palabras tiene cada una de las líneas, y haz la media. Ese es el número de palabras por línea que vas a usar para hacer los cálculos. Después lees una parte que no hayas leído antes poniéndote un temporizador de 1 minuto. Intenta que no haya cambios de capítulos ni nada parecido en las próximas páginas. Cuando suene el temporizador, cuenta el número de líneas que has leído en ese tiempo y multiplica ese número por el número de palabras por línea medio que calculaste antes. Esa operación te dará el número de palabras por minuto que eres capaz de leer. Para que el resultado se acerque más a la realidad, sería conveniente que fueras agrupando líneas que no están completas. Por ejemplo, si dos de las líneas terminan a la mitad, se contaría como una sola línea.

Yo he medido mi velocidad lectora al principio de comenzar este aprendizaje y ahora justo antes de grabar el podcast. Os muestro los resultados:

  • Inicio: 260 palabras / minuto.
  • Ahora: 360 palabras / minuto.

La mejora es considerable. Pero ésto tiene dos problemas:

  1. Como dije un poco antes, hay que estar pendiente de que sigues la nueva forma de leer. Si no estás pendiente terminarás volviendo a la forma en la que leías antes, por lo que la mejoría no sería tan notable.
  2. No debes parar de ejercitar estas técnicas. Sobre todo al principio. Si dejas de practicarlas es mucho más fácil que vuelvas a tu velocidad lectora inicial, ya que te tienes que interiorizar esas técnicas.

Te aseguro que es complicado, porque hay que estar muy pendiente siempre que leas. Pero creo que una vez interiorices las técnicas, lo harás de forma natural. Ya os iré contando como evoluciono en este sentido en los siguientes programas.

Para acabar con esta sección, os comento cuáles serán mis siguientes pasos:

  • Por una parte, seguiré practicando la lectura rápida como lo he hecho hasta ahora.
  • Por otra incluiré un nuevo tipo de ejercicios. Usaré una app que compré hace tiempo para mejorar la velocidad lectora. Esta app se llama «Leer más rápido». Un nombre muy simple, ¿no? Te propone ejercicios para mejorar el enfoque, ángulo de visión, aumentar el número de palabras por fijación, etc. así como un seguimiento de como llevas los ejercicios y tu velocidad lectora. La verdad es que tenía buena pinta y la vi recomendar por algún que otro sitio. Ya os comentaré qué tal.

Y por último quería comentar lo que se cuece en la comunidad de Ruta DEV.

Comunidad… y una propuesta

La comunidad no ha empezado nada mal. Teniendo en cuenta que sólo había un capítulo. En el canal de Telegram hay 15 seguidores y 8 componentes en el grupo de Telegram. Hemos estado compartiendo las newsletters sobre programación a las que estamos suscritos. La verdad que ha salido una colección bastante buena. Con ésto se me ha ocurrido una cosa que podríamos hacer. Se me ocurre que en cada programa puedo proponer un tipo de recursos, herramientas, libros, etc. relacionados con la programación. Los que formemos parte de la comunidad los compartiremos por el grupo de Telegram, y yo me encargaré de recopilarlos para publicarlos en el futuro en algún sitio. Por ejemplo, los puedo publicar en el canal de Telegram con un hastag particular. También podría publicarlo en la web, o incluso podría crear un repositorio tipo awesome. Qué os parece? Para que no nos dejemos nada atrás estas dos semanas seguiremos compartiendo newsletters. Quien tenga alguna que compartir, compartidla en el grupo de Telegram con el hashtag #rc_newsletters. RC como siglas de Recursos de la Comunidad. Propongo un formato para estas publicaciones. En un mensaje del grupo colocad primero el hashtag, después el nombre de la newsletter, debajo el enlace para apuntarse a ella, y por último, una breve descripción. Así me resultará más fácil recopilar la información y publicarlo todo en un mismo sitio. Podemos ir discutiendo y resolviendo dudas en el grupo de Telegram si queréis.

Despedida

Bueno, pues éstos han sido mis progresos estas semanas. Nos vemos en un par de semanas. Os vuelvo a pedir disculpas por la ausencia, y espero tener pronto un episodio especial en la recámara por si me vuelve a surgir algún contratiempo de última hora. Hasta pronto, ¡y buen camino en la ruta del aprendizaje, desarrolladores!

Enlaces de interés


Créditos de música:

Loopster Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0 License
http://creativecommons.org/licenses/by/3.0/