Un día en «Teacher’s Hell»

Credit: http://www.flickr.com/photos/barkbud/4257136773/

Credit: http://www.flickr.com/photos/barkbud/4257136773/

He impartido muchos cursos a lo largo de mi vida profesional. Muchos. Muchas horas de formación. Es algo que me gusta mucho y me llena. Puedo explotar mi faceta de abuelo cebolleta y contar todas las batallitas que me apetezcan a un público cautivo que no puede huir a ninguna otra parte. Y encima me pagan por ello. Así qué todos contentos (menos los alumnos que tienen que aguantarme, claro)

Debido a esta experiencia acumulada, suelo preparar con mucho esmero cada curso. Reviso mi bolsa para comprobar que llevo el cargador del portátil, los cables de conexión al proyector, si llevo algún bolígrafo o libreta, el mando a distancia para pasearme mientras pongo alguna presentación en Keynote. Y voy preparado para todo. Bueno, para casi todo. Hace poco viví un completo Teacher’s Hell, una de las peores situaciones que he vivido. Hasta perder el avión de ida en el viaje a Panamá para el curso de Android que impartí en Julio me parece menos grave. Por la acumulación de problemas.

Llegué al aula con tiempo. Al menos, 40 minutos antes de empezar el curso. Empezamos a las 16:00 y acabamos a las 21:00, y son las 15:20. Así tengo tiempo de encender el equipo, probar el proyector, conectarme a la red, beber un café… Entro en el aula y todos los alumnos ya están allí, sentados. El proyector encendido. En tono de sorna digo «bueno, parece que hay ganas de empezar, ¿no?. ¡Eso es bueno, venís con ganas!». Mirada sería del responsable. «Diego, empezábamos a las 15:00».

De pronto, una sensación de caer en el vacío. El mundo se me viene encima. Una vez me presenté para un curso en la dirección equivocada y tuve que recorrer media Córdoba a la carrera. Pero llegar tarde, nunca, si puedo evitarlo. En mi calendario, apuntado el inicio a las 16:00. En la presentación del curso, igual. En mi mente, las 16:00. Reviso el correo, y efectivamente no aparece ninguna hora. Hablamos de «por la tarde». Probablemente asumí mal el horario, pero me extraña.

Me rehago. Saco el ordenador con una sonrisa nerviosa mientras me disculpo, lo enciendo y lo conecto al proyector. No se ve. Miro el cable de conexión al proyector: hay un bifurcador extraño, uno de esos cables en Y que permiten ver el proyector y la imagen en un monitor a la vez. Desconecto y conecto el proyector directamente al portátil. Se ve en la pantalla. Uf.

Tengo que dejarles los ejemplos a los alumnos, y además ellos deben conectarse a una B.D. MySQL que llevo en mi MacBook Pro. Es un curso de Hibernate. No MySQL == No curso. Pregunto por la WiFi. No hay WiFi. Bueno, sin problema, pienso: «me conecto con un cable Ethernet y listo». No, no tan rápido, la dirección de sistemas no te deja conectarte a la red, y además no vas a obtener IP con tu portátil. Bien. El entorno de desarrollo que traigo montado y la base de datos MySQL al infierno.

Bueno, aunque todo se tuerce, puedo montarlo todo durante el curso, mientras hablo de la teoría con mi keynote del Mac. El ordenador del profesor es un Dell con Windows XP. A fin de cuentas, me han dejado usuario y contraseña. Los introduzco y me sale el típico «tu contraseña ha caducado, y como veo que no tienes mucha prisa ahora mismo voy a molestarte un poco más obligándote a cambiarla«. Evito la tentación creciente de gritar y golpear algo. Me concentro e introduzco una contraseña segura, para evitar chorradas con el criterio de generación de contraseñas: «la contraseña es corta, debe tener mayúsculas, minúsculas y el Emoji de un caganet«. El ordenador me dice que no puedo cambiar la contraseña, que no tengo permisos para ello, pero que o la cambio o no puedo iniciar sesión. Llamo a soporte. Comento el problema, y lo solucionan de forma remota. Inicio sesión y se lanza un logon script de esos que tardan en una red corporativa medio año mientras un intérprete de comandos realiza tareas misteriosas. Tras lo que me parece una eternidad, llego al escritorio de XP.

Bueno, vamos a descargarlo todo: MySQL, etc. La velocidad de descarga se mide en Kbs, no en Mbs. Y son pocos. Estoy en el CiberDespacio. La descarga comienza a alargarse ante mis ojos, cansados y tristes. Los nervios aumentan. Se me acaba la teoría. No tengo BD. Tengo he pasar a los alumnos los ejemplos, esos que ya están en la carpeta pública de mi Mac, esa a la que no pueden acceder. Empiezo a pensar en preguntar por un cable serie Null-Módem para pasar las cosas, pero me muerdo la lengua. No hay red, y me acuerdo de la cita de Tanenbaum: «Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway». Tiro de USB.

Disco Kaput

Vamos con el pendrive. Saco mi flamante pendrive de 4GB. «Lo copio todo aquí, se lo paso a un alumno, lo pone en la red y listo». Parece que hay un servidor de ficheros, así que probablemente lo use. Introduzco el pendrive en el Mac. Aparece un error en pantalla. Algo de que copie los datos, que está mal el pendrive. No me lo creo. Parece que lo voy a tener que formatear. Ya formalmente cabreado, abro la Utilidad de Discos. Voy a darle formato FAT, que luego hay que usarlo en un XP y no quiero más problemas a estas alturas. No puedo. Me dice que el sector cero está defectuoso y que tire el pendrive. A estas alturas, empiezo a mirar alrededor buscando la cámara oculta. He llegado a la hora que no era, estoy sin WiFi, sin posibilidad de conectarme a la red, sin pendrive… Pregunto a los alumnos. Ninguno tiene uno encima. Quiero morir.

Utilidad de discos no puede formatear el disco

Hablo con el responsable del curso, que amablemente me ofrece uno. Lo uso para copiarlo todo en el pendrive y se lo paso a los alumnos. Mientras copian, mi mente procesa a toda velocidad. Vale, tienen los ejemplos, pueden ver la teoría en pantalla, pero me falta la B.D. Puedo instalarla en el ordenador del profesor, pero creo que lleva 20 Kb descargados o algo así. ¡Al menos podría pitar como pitaban los módems antiguos!.

De pronto, me viene la inspiración. Desde informática me han dicho que no puedo conectarme y que no obtendría una IP en mi equipo. Eso es lo que me han dicho. Pero no lo he comprobado. Busco el cable Ethernet conectado al ordenador del profesor y lo conecto a mi MacBook Pro. ¡Voilà!. Tengo acceso a la red local y a Internet. Todo cambia, al fin, para bien. Continuamos con el curso y se acaban los incidentes.

Cosas que he aprendido de esta experiencia:

  • por bien que creas que llevas preparadas las cosas, piensa mal, hasta que te parezca que es de manera absurda. Todo puede torcerse, todo. Y varias veces.
  • las presentaciones las debo llevar en dos pendrives. Si muere uno, tengo el otro.
  • las presentaciones debería copiarlas en formato PDF. Si se muere mi MBP siempre puedo usar cualquier otro ordenador que muestre un PDF.
  • siempre copiarlo todo en Dropbox. Aunque recientemente, en otro curso, me falló Dropbox al ir a bajar una presentación 😀
  • antes de impartir una charla o un curso en un sitio nuevo, confirmar el equipamiento de que dispongo. Me ahorro sustos luego.
  • confirmar las horas y fechas (algo que siempre hago, pero en este caso se ve que no…)
  • no cabrearse es mejor. Solucionas los problemas y te sientes bien por duplicado: porque has solventado el marrón y porque te has controlado a ti mismo.

Por cierto, recuperamos todo el tiempo perdido, de forma que los alumnos no perdieron nada. Eso nunca: lo primero son mis alumnos.

j j j

Cómo hacer que tu web alojada en casa sea visible desde Internet

He recibido un correo de Diego (sí, se llama igual que yo) desde Melilla:

He instalado un servidor UBUNTUSERVER en el VMWARE, que gracias a ti conocí…, hasta ahí bien… Lo siguiente fue instalar Apache, que veo desde el portatil y el fijo. Lo siguiente fue hacerme una cuenta en Dyndns y guay, pero pongo en el navegador la direccion y me sale mi router… ¿como hago para ver el servidor?… toy hecho un lio… echame un cable pleaseeeeeeeeeeee.

Veamos. Supongamos que tu portátil tiene una IP como 192.168.1.x, con x entre 1 y 254. Es decir, que está en una red interna. Las direcciones 192.168.x.x están reservadas para las direcciones privadas, las que usamos en las redes locales. Hay otros rangos (10.x.x.x y 172.16.x.x)

Cuando tu portátil se trata de conectar a Google, pregunta por su dirección y se manda una petición HTTP (para ver una página web) al servidor web de Google (bueno, con uno de ellos, tienen decenas de miles). El servidor web de Google debe entonces responder a tu portátil para que tú puedas ver la página en tu navegador. Si se encuentra una dirección privada ¿cómo llegar hasta tí?. ¿A cual, de los miles y miles de ordenadores situados en redes privadas con las mismas IPs debe responder Google?. Evidentemente este problema no lo tienes, es decir, puedes navegar. Ello es debido a que tu router de acceso a Internet hace IP masquerading, también conocida como NAT: al detectar una conexión desde un ordenador de tu red hacia fuera, cambia en la cabecera del mensaje la IP original por la suya propia (por la del router) que es pública. Google ahora sabe a quién responder. Es trabajo del router (y de NAT) deshacer ahora el cambio y entregar al equipo de la red interna la p?gina web solicitada.

En tu el caso es al revés. Quieres que desde fuera puedan ver un servidor web en tu red interna. Usualmente este tipo de servidores se colocan en un segmento protegido de la red interna llamado DMZ (zona desmilitarizada), mientras que otro segmento queda inaccesible desde el exterior (la MZ, zona militarizada). Por sencillez puedes dejarlo en la interna, aunque es menos seguro.

El caso es que debes hacer dos cosas:

  1. abrir el firewall en entrada para el puerto 80 para la IP de tu portátil, es decir, permitir a cualquiera desde fuera que se conecte al puerto 80 de tu máquina, que está en la red interna.
  2. crear una regla en el router de «port forwarding». Esto es algo similar a NAT, pero aquí se cambia la IP de destino, no la de origen como antes. Si alguien intenta conectarse a tu router en el puerto 80, éste le pasa la tarea a tu portátil. Como ves, la IP destino (originalmente la IP pública de tu router, que es lo que se ve desde Internet), se cambia por la IP de tu portátil (que está en la red interna). El paso inverso (llevar la respuesta desde el portátil) lo hace el router, como antes con NAT.

Evidentemente, los firewalls deben permitir conexiones entrantes por el puerto 80. Las salientes ya las permiten porque puedes navegar ¿no?

j j j