Mostrando entradas con la etiqueta computación. Mostrar todas las entradas
Mostrando entradas con la etiqueta computación. Mostrar todas las entradas

viernes, 2 de diciembre de 2016

Generación procedimental

A estas alturas, me sorprende la falta de conocimiento técnico de la prensa de videojuegos. El otro día escuché un podcast de Mundogamers donde un tío que se supone que sabe dice que lo que no le gusta de "No Man's Sky" es que, al generarse procedimentalmente el universo, cada jugador ve una cosa, porque el mundo se va creando para él. Lo mismo he leído en algún que otro artículo de prensa que, se supone, es especializada. Esto me lleva a pensar que no tienen ni idea de lo que significa generación procedimental.

Como he dicho, esto viene a acolación de "No Man's Sky", un videojuego que anunciaba que tenía un universo enorme que explorar, con alrededor de un billón de planetas diferentes. Vamos, que no hay narices de explorarlos todos. La generación, claro, no se puede hacer a manita, así que han hecho un algoritmo que genera todos esos mundos. Ya está: eso es procedimental. Que se genera con algoritmos en vez de manualmente. No hay más. Que se haga un mundo para cada jugador o el mismo para todos es otra cuestión: nada que ver con cómo se genera, que es de lo que habla el término "generación procedimental".

"No man's Sky" es un juego que tengo ganas de probar, aunque sólo sea para poder observar los detalles técnicos, percibir la experiencia que provoca y hablar de él. Sin embargo, no espero grandes cosas, lo que me lleva a que no estoy dispuesto a pagar la pasta que actualmente cuesta.

Cuando se decía de él antes de publicarse que hay más de cinco mil millones de planetas distintos, todo el mundo pensaba que la variabilidad sería tremenda. Cuál sería la sorpresa cuando las primeras críticas apuntaban a que tras veinte planetas todo parecía igual. También decían sus creadores que el juego tiene más especies animales que las que hay en la Tierra. Sin embargo, al poco de salir ya se decía que hay unas pocas especies de animales.

¿Mintieron acaso? No.

Imaginemos que tenemos teclados de PC, cada uno con 100 teclas. Y hacemos lo siguiente: generamos teclados en cuatro colores distintos y, además, a cada uno le ponemos una (y sólo una) tecla aleatoria en blanco. El número de teclados diferentes será de 400. Sin embargo, uno de los parámetros, la tecla en blanco, es perceptivamente menor que la del color. Así que, a bote pronto, si nos preguntan diremos que sólo vemos cuatro tipos de teclados distintos. Conclusión: cuando se genera material procedimentalmente, hay parámetros que son más perceptibles que otros, y nuestro cerebro sólo tendrá en cuenta los más claros. Sin embargo, cuando se cuenta el número de opciones para generar ese material, todos cuentan por igual. Al final, existe una gran diferencia entre lo percibido y la matemática.

Nuestro cerebro es especialista en la búsqueda de patrones. ¡Los encuentra incluso cuando no los hay! Generar procedimentalmente un mundo grande y que, además, parezca grande, es muy complicado.

Y un buen periodista de prensa especializada debería saberlo.

viernes, 28 de octubre de 2016

Reactivando mi vida

Dije que no escribiría en un mes y, salvo cierto post puntual, así ha sido. No me planteaba que fuese un mes exactamente, pero acabo de ver la fecha del post en que lo dije y sí: un mes y un día, oye. Qué puntería.

Se me ha pasado rápido, y no tengo claro que haya resuelto el 100% de las cosas que necesitaba solucionar en mi cabeza, pero bueno... Voy arrancando de nuevo. En general, estoy contento. Echo de menos, eso sí, más acción social. Echo de menos dedicar algo de tiempo, de ese tiempo que no tengo, a echar una mano en campos que considero importantes o de mi interés. Uno de ellos es, todo lector de este blog lo sabe, la educación en computación. En general, en cualquier ciencia o tecnología, porque me parece que no se enseñan bien, pero en computación especialmente. Y, además, me gusta promover la igualdad de género, porque la mujer, nos guste o no, sufre cierto grado de discriminación hoy día.

Así que la causa de enseñar a niñas a programar me atrae muchísimo. Por eso sigo las actividades de iniciativas como Girls make games o Girls who code.

En Estados Unidos, he leído repetidas veces, las niñas comienzan a decantarse por otras disciplinas en la adolescencia. Lo trágico es que, entre sus motivaciones, está que piensan que los chicos lo hacen mejor y que no está bien visto entre sus compañeras. Muy triste, ¿no? Yo pensaba que eso era sólo por allí, al otro lado del charco, pero resulta que hoy leo en El Mundo que aquí también pasa. Me he sorprendido y preguntado a mí mismo si iniciativas similares a las antes citadas podrían llevarse a cabo en España. Supongo que sí. Y... ya. Punto.

Digo yo que todo el mundo esperaría ahora por mi parte un "venga, va, me voy a poner". Pero soy el tipo de persona que en una iniciativa de ese tipo puede resultar muy útil, pero no del que las empieza. No sabría cómo, ni montar eventillos, ni campus, ni enfrentarme al problema de la falta de material o financiación... ni mucho menos vender la idea. Yo, por ganas, me plantaría en el AMPA o el colegio y les propondría hacer talleres para ellas, las niñas adolescentes. Pero venderlo me cuesta, este colegio es de decir "no" a todo y yo qué sé... Supongo que acabaré mencionándoselo a alguien.

Que las niñas puedan dedicarse a lo que les guste, saberse tan buenas como los chicos y mandar a la mierda a las estúpidas que creen que la tecnología es de tíos creo que merece, aunque sólo sea, comentarlo.

lunes, 6 de junio de 2016

Contraseñas, esa falsa seguridad

En mis ratos libres, suelo hacer alguna cosilla de web para otros. Amigos, colegas... Les echo una mano en sus proyectos web y, a cambio, implemento lo último que he aprendido y practico. Así que trasteo en sus sitios y, a menudo, me sorprendo de la carencia de seguridad en las webs y, al poder ver las contraseñas en la base de datos, ahí, abiertas, como si tal cosa (lo que no debería poderse hacer), me maravillo de la facilidad que tiene la gente para poner contraseñas tontas.

Hoy he leído que la contraseña más insegura de 2015 fue "123456". Me lo creo. Sí, sí: me lo creo. Por suerte, ya hay sitios que no permiten ese tipo de contraseñas. Pero los hay que sí y, entonces, la gente va y te planta un "123456". Alucinante.

Pero el problema que hay no es sólo la debilidad de las contraseñas, sino que se usa siempre la misma para todos los servicios habidos y por haber. Es alucinante. La mayor parte de la gente se aprende una contraseña y la usa para todo. Y, además, usa para todo la misma contraseña durante años. Y claro, como esa gente suele ser la misma que no tiene ni papa de cómo funciona Internet, de los que reenvían correos en cadena, los abren vengan de quien vengan, miran los adjuntos aunque el mail no tenga asunto, se instalan cualquier cosa, navegan por cualquier sitio y meten su tarjeta en cualquier lugar, pues pasa lo que pasa: que su contraseña para todo acaba en tropecientos sitios inseguros que guardan las contraseñas en texto plano. Ahí, con dos narices. Entonces alguien roba la contraseña y no tiene acceso a la cuenta de esa persona en ese sitio web, no: la tiene en todos los sitios web, incluso seguros, porque la personita usa la misma contraseña en todas partes. Ole que ole. Y luego Internet no es seguro.

El problema que tiene la gente es memorizar, así que vamos a dar algunas ideas para generar contraseñas más seguras. No infalibles, pero sí bastante más seguras de lo que la gente suele usar.

Un método pasable, aunque mejorable: El sistema del número de teléfono

El truco consiste en poner como contraseña un número de teléfono, cambiando algunos números por la inicial de la cifra, ya sea en mayúscula o minúscula. Por ejemplo: Si sabemos de un número que es 616 785 644, podríamos poner los tres primeros números, los tres siguientes mayúsculas y los tres últimos minúscula. Así: "616SOCscc". "SOC" proviene de las iniciales de "Siete Ocho Cinco", y el "scc" final, procede de las iniciales de "seis cuatro cuatro".

Esta contraseña tiene varias debilidades. La primera es que no se debería usar el propio número, porque entonces si lo consiguen por ahí probarán con este método. Use otro que conozca y no sea suyo. La segunda es que un patrón por tríos (tres números, luego tres iniciales mayúsculas, luego tres minúsculas), ya sea en el orden del ejemplo o en otro, es muy sencillo. Cámbielo e, incluso, hágalo más complejo.

Otra mejora es quitar un número, haciendo la contraseña de 8 caracteres, o añadiendo alguno. Se puede, incluso, quitar el primero (que suele ser siempre 6) y cambiarlo por un carácter especial, como admiración, interrogante o almohadilla. Ejemplo: #1S7OcSCc

En cualquier caso, es considerablemente mejor que "123456".

Un método mejor, si sabe buscar: El sistema de las frases

Coja una frase o fragmento de texto que pueda memorizar bien. Puede ser famosa o no. De hecho, mejor que no. Y haga lo siguiente:

  1. Vaya tomando las iniciales de las palabras y escribiéndolas.
  2. De alguna manera fácil de memorizar, ponga algunas en mayúscula, ya sea por inicio de frase o por otra cosa.
  3. Si hay algún número, póngalo como número.
  4. Si no hay número alguno, añada uno al principio o al final, a ser posible de un mínimo de dos cifras.
  5. Añada un signo de admiración o interrogación en algún lugar, si el sistema le permite ese tipo de caracteres.
Con eso, la contraseña será considerablemente segura. Veamos un par de ejemplos:

Cojamos los dos últimos versos del poema "Invictus", en español: "Soy el amo de mi destino: Soy el capitán de mi alma".

  1. Iniciales: "seadmdsecdma"
  2. Inicios de frase en mayúsculas: "SeadmdSecdma".
  3. No hay números, así que ponemos uno que podamos recordar, como el año de nacimiento de su autor (nos acabaremos acordando y, si no, sabemos cómo encontrarlo): "SeadmdSecdma49"
  4. Como carácter especial, voy a elegir una admiración en vez de los dos puntos: "Seadmd!Secdma49"
No hay narices de adivinar esa contraseña de buenas a primeras. Que sí: si se ponen la pillarán, pero les costará. Mucho. Y en un par de veces la hemos memorizado. Se pueden usar frases que tengan cifras, como el inicio de la "Canción del Pirata" de Espronceda ("Con diez cañones por banda...") o el inicio de los "Diez Negritos" de Agatha Christie ("Diez negritos se fueron a cenar...").

¿Pero todo esto es realmente seguro?

Pues hombre... Depende de cómo guarde su contraseña (su cabecita es su mejor aliada). Pero, para hacernos una idea, he cogido un par de sitios web que se supone que te dicen lo fuerte que es tu contraseña calculando, grosso modo, el tiempo que tardaría un ordenador en averiguarla por fuerza bruta. Veamos los resultados:

  • 123456: Instantáneo. Menos de un segundo.
  • 616SOCscc: Fuerte. Entre 2 y 4 días.
  • #1S7OcSCc: Muy fuerte. Entre 1 y 3 meses.
  • Seadmd!Secdma49: Entre 150 y 16 mil millones de años.

Pero, aún con todo, recuerden que la contraseña será tanto más segura cuanto más cuidado tengan con ella. Prueben, de momento, alguna frase fácil o lo del número de teléfono. Y, año tras año, según les dé, vayan mejorándola e implementando la última versión siempre en los sitios más seguros. Nunca usen en sitios de dudosa seguridad contraseñas que utilizan en lugares con datos personales, como Google o Facebook. Por último, un buen antivirus que impida ataques a su PC o Mac y un conocimiento mínimo de qué adjuntos no hay que abrir NUNCA.

Igual que en el mundo real dónde está su cartera depende sobre todo de usted, en Internet también depende de usted dónde acaba su contraseña.

miércoles, 1 de junio de 2016

Los "juguetitos" que me encantaría tener

Uno navega por Internet y se encuentra todos esos cacharritos que molaría tener. Sobre todo, esos que usaría en mil aplicaciones y cosas, no digamos con los niños. No hablo de juguetes o juegos propiamente dicho: ni consolas ni juegos de tablero ni nada de eso. No. Cacharros de orientación científica y tecnológica, especialmente.

Microscopio

Ah, el microscopio. Cuántas horas empleadas en él. Yo tengo un microscopio, ya antiguo, sin luz propia, sino un espejo para reflejar una fuente lumínica externa. Sus aumentos, escasos, y eso es lo que, con el tiempo, me hizo dejarlo abandonado en alguna estantería. Por ahí anda. Lo saqué hace unos meses y no mereció la pena. Y la razón es, precisamente, que sirve de poco cuando no tiene aumentos suficientes.

La gracia del microscopio, para mí, está en los microorganismos, en las células. Muestras vivas que requieren 2000 aumentos y tinciones. Ahí es donde está la gracia. Así que he ahí mi primer "juguete": microscopio binocular de 2000 aumentos y tinciones varias.

Little Bits

¡La electrónica! Esa disciplina que se me escapó durante años. Compré libros y todo, pero fui incapaz de dedicarle el tiempo necesario y , finalmente, la dejé por imposible hasta nueva orden. Pero entonces encontré LittleBits. Y moooooooooola... Fácil de usar, este sistema modular de electrónica te permite hacer la torta de juguetes electrónicos sin tener ni papa de electrónica, lo que tiene narices. ¿Y la de horas que me puedo pasar con mis niños jugueteando con el kit de gadgets?

Arduino / Genuino

Si llevamos la electrónica a otro nivel, por otra parte más complejo, molaría tener una placa Arduino con componentes a cholón. Por ejemplo, el megakit de iniciación. Qué guay. Se me hace la boca agua. La de proyectos que se pueden hacer con eso.

LEGO Mindstorms

Y ya puestos, de electrónica ¡a robótica! MOOOOOOOOOOOOOOOLAAAAAAAAAAAAAAAAAAA. Sí, ya sé que hay otros sistemas, pero no molan tanto. ¡LEGO Midstorms EV3!

La de cosas que haríamos mis niños y yo con eso, madre mía... La de cosas que haríamos gastándonos ¡400€! La madre que @#%/!

Snatoms

Construir modelos moleculares. Está genial para juguetear y enseñar a tus hijos. Casi imprescindible en cualquier clase de química. Hace tiempo traté de hacer un kit con ese mismo principio, pero fue un proceso complejo para muy pocos átomos.

¡Pero ahora tenemos Snatoms! Un kit completo de química, especialmente orgánica (trae, sobre todo, carbono, hidrógeno y oxígeno).

Telescopio

No podía faltar un buen telescopio, de los que permiten ver Saturno sin sentir los efectos de una excesiva aberración. Bueno, va: me conformo con uno más normalito, aunque si ahorro lo suficiente molaría el capricho de algo más avanzado. Ah, las noches de campo bajo las estrellas, buscando objetos y fotografiando las lunas galileanas...

Impresora 3D

No podía faltar, claro. Pero por lo que he oído las baratas son difíciles de calibrar y generan muchos errores y repeticiones, con el consiguiente coste de filamento. Así que, puestos a pedir, una ZPrinter polícroma, como la 250. No digamos la 850, jejeje.

¿Os imagináis lo que se puede hacer con Arduino y una impresora 3D? ¿O con LEGO Mindstorms y la impresora 3D? Bueno, buenoooooooo... ¡Entretenimiento a raudales! ¡Me pondría a diseñar robots para mi huerta y limpieza a lo bestia! Robots que rieguen, que limpien, barran, reconozcan el mapa de la casa... ¡Mi casa iba a parecer un laboratorio futurista!


Lo vamos a dejar aquí, porque se me hace la boca agua, jolines...

viernes, 29 de abril de 2016

La Guerra del Rey Ludd

En tiempos de Napoleón, hace ya algo más de 200 años, el mundo vivía la primera revolución industrial, la de la máquina de vapor. Una de las primeras industrias en "disfrutar" de la industrialización fue la textil. Mucha gente en Reino Unido vivía de la lana, cardándola en sus hogares o fabricando telas en pequeños talleres. Las máquinas, esa estratégica esperanza para mejorar la productividad, eran también una amenaza para toda esa gente. Fue entonces cuando un obrero, presumiblemente apellidado Ludd, temeroso del destino de sus vecinos y amigos, saboteó máquinas en una factoría. No se sabe mucho de aquel hecho, pero sí que hizo que se levantasen muchos obreros para protestar contra la industrialización. Entonces nació la figura, mitad real mitad leyenda, del llamado Rey Ludd o General Ludd.

El problema nunca fue la tecnología: fue la adaptación de la sociedad a esa tecnología. Como siempre, la gente que más sufre es la menos preparada. Y, como siempre, los menos preparados son los que menos recursos tienen. Se supone que hoy, que existe la educación pública y todos en nuestro país tenemos una educación mínimamente buena, esto no debería ocurrir. Pero ocurre. Peor: ocurrirá de nuevo.

Vivimos la cuarta revolución industrial. En Alemania llaman a eso la "Industria 4.0", y tienen un plan estratégico para que las empresas vayan adoptando tecnologías punteras en sus procesos. En España también tenemos planes parecidos. No tan buenos, a mi modo de ver, pero parecidos. Sin embargo, no nos damos cuenta de que esa tecnificación exige nuevos profesionales y mentalidades que no estamos promoviendo en absoluto en nuestra educación. El problema no es que la industria se adapte: lo hará tarde o temprano. El problema es que, si para cuando lo haga, no hay profesionales capacitados, los de siempre sufrirán las consecuencias.

Según un informe de la Unión Europea, el 84% de los españoles piensan que los robots quitan trabajo a la gente. Exactamente igual que les pasó a los seguidores del Rey Ludd hace 200 años, ese 84% está equivocado. Los robots y, más aún, la inteligencia artificial, ayudarán en nuestros trabajos y, además, crearán todo un abanico de posibilidades entorno a las que se generarán nuevos tipos de trabajo.

A mi modo de ver, un problema grave es que solemos pensar que preparar para el mundo laboral es cosa de la universidad o la formación profesional. Y eso no es del todo cierto. A esa etapa educativa, los chavales llegan con una formación. Y, créanme, hay mucha diferencia luego entre un alumno que ha sido bien formado previamente y uno que no. Y, antes de la universidad, los chicos tienen que elegir carrera. Un alto porcentaje se equivoca y cambia tras el primer año. Hay muchos que escogen por motivos que nada tienen que ver con sus gustos, porque son jóvenes para saber qué quieren hacer. Y uno de los motivos es que hay muchísimas cosas sobre las que no tienen ni idea. Especialmente, las ciencias. Más específicamente, la tecnología.

Los políticos no tienen ni papa de tecnología, lo que es un fallo de diseño de nuestra forma de gobierno, porque jamás le prestan la atención necesaria y son incapaces de ver lo que demanda el futuro. Los profesores, siento decirlo, pero tampoco. No lo son muchas veces en la universidad, así que imaginen en el colegio. La enseñanza de las ciencias la considero muy mala en general. Entre otras cosas, porque lo más bonito en la ciencia es la búsqueda de respuestas, y en el colegio lo que hacen es dártelas y obligarte a aprendértelas. Si quieres buscar algo, te vas al patio a ver si hay lagartijas. Y si quieres aprender tecnología, con suerte, harás un pseudo-programa para llevar un robot de un sitio de la pantalla a otro. Útil, muy útil. Eso es dar sentido a la tecnología.

Así que los chavales llegan a la universidad eligiendo lo que les gusta. Y lo que les gusta es lo que les gusta usar, como los videojuegos, no lo que les gustaría hacer profesionalmente. Porque en todo el colegio no han visto nada relacionado con lo que realmente harán: ni la ciencia es ciencia de verdad, ni la tecnología es tecnología de verdad. Y al año de estar en la universidad y ver de lo que va la cosa, se cambian de carrera. Y, si no se cambian, acabarán teniendo un título y trabajando de algo totalmente diferente (normalmente tecnológico), después de aprender dándose de morros contra la realidad y los ordenadores. A los 40 echarán de menos hacer algo que les gusta y a los 50 asumirán que no quieren eso para sus hijos. Por desgracia, para entonces sus hijos ya estarán casi en la universidad, discutiendo con sus padres porque quieren aprender a hacer videojuegos, algo que sus padres saben que realmente detestará, porque jugar y programar no es lo mismo y su hijo no ha visto una línea de código en la vida. Y vuelta a empezar.

Lo que omito en esa historia algo exagerada es que, encima, algún otro país, como China, India o Estados Unidos (en todos ellos se promueve la enseñanza de computación en el colegio) estará formando a toda una generación de chavales que estarán orientados a la tecnología desde que son críos. Y cuando una empresa tenga que decidir entre nuestro hijo con título de derecho que sabe algo de robots porque no le ha quedado más remedio que aprender algo de eso y un chino que lleva toda la vida jugueteando con maquinitas programables, elegirá al chino, salvo que haya políticas proteccionistas. De esas políticas que con la globalización tienden a desaparecer. Sí, esas políticas. Contra las que volverán a levantarse el Rey Ludd y sus colegas, nuestros hijos.

Hay quien sostiene que en el futuro, el 65% de los trabajos serán de una naturaleza tan diferente a los actuales que no se han inventado aún. Creo que son algo exagerados, pero no deja de ser ilustrativo de cómo irá evolucionando el mercado laboral. Lo que no dicen es que esos trabajos no serán para nuestros hijos, porque no estarán preparados. Creemos que sí: les vemos manejar tan bien un móvil o un ordenador que pensamos que "traen todo eso de serie". Pero es mentira. Están más familiarizados con la tecnología de lo que lo estábamos la mayoría a su edad, pero no sólo no saben nada de cómo funciona esa tecnología, que es lo que les dará trabajo, sino que, gracias a que no tienen ni idea de su funcionamiento, no serán capaces de adaptarse a la tecnología que viene: la inteligencia artificial.

La inteligencia artificial está aquí para quedarse. Una gran parte de las pequeñas tareas repetitivas que hoy hacemos puede hacerlas una máquina. Desde llevar mercancías en trenes o camiones autónomos hasta limpiar edificios o reparar carreteras. Pero, más aún, trabajos creativos como escribir artículos en prensa o maquetar revistas o páginas web tendrán ayuda de inteligencias artificiales. Saber trabajar con ellas será fundamental. Y, si se quiere tener trabajo, aprender a prepararlas y diseñarlas, también.

Yo tengo la suerte de conocer el mundillo, trabajar en él y saber bastante para enseñar a mis hijos lo que debería enseñar el colegio. Pero muchos otros no. No se trata de que no tengan futuro o no vayan a encontrar trabajo. Y tampoco es que vayan a terminar en el arroyo. El problema es que lo tendrán más difícil y, si nadie se pone las pilas y empieza a instaurar en el sistema educativo (si es que acabamos teniendo alguno estable) algo de formación tecnológica de calidad, esta generación tendrá un problema frente a los chinos, indios o japoneses que vengan porque aquí les pagan por hacer lo que nosotros no les enseñamos. La UE lleva tiempo advirtiendo que prevé que habrá escasez de profesionales tecnológicos en breve y que deberemos importarlos de, sobre todo, la India. En Estados Unidos, Obama tuvo una de sus primeras reuniones con altos directivos de empresas tecnológicas para preguntarles por qué no fabricaban sus productos en Estados Unidos. La respuesta unánime fue que no tenían profesionales suficientemente cualificados. Allí, el problema ya es una realidad, y hay organizaciones que tratan de hacer obligatoria la educación básica en computación.

Nuestros hijos sobrevivirán. Igual tienen que protestar contra las previsibles aperturas del mercado laboral a extracomunitarios o deben sublevarse contra el uso de robots en fábricas, pero sobrevivirán, claro. Pero que lo hagan combatiendo junto al Rey Ludd o estando preparados es cosa nuestra.

martes, 20 de octubre de 2015

Inteligencia Artificial

Una vez tuve una conversación con un primo mío sobre inteligencia artificial. Pronto le quedó claro que yo creo firmemente que un día existirá la tecnología necesaria para crear inteligencias artificiales tan avanzadas, al menos, como la nuestra. Se sorprendió porque, según dijo, no les podemos dar algo fundamental: el alma.

La inteligencia artificial es un tema importante en la historia de la humanidad. Seguramente, uno de los más importantes. Si un día se desarrolla una inteligencia artificial suficientemente potente para tomar conciencia de sí misma, no solo será un hito en nuestra historia: podría marcar un punto de inflexión en ella. Y un punto de inflexión tan emocionante como peligroso.

Recientemente vi la entrevista que hizo John Oliver a Stephen Hawking. En ella, Hawking muestra una opinión muy compartida: la inteligencia artificial podría suponer un peligro para la humanidad. Uno de los argumentos que maneja es que puede desarrollar mejoras para sí misma.

Es un tema que siempre me ha fascinado. Descubrir cómo funciona un cerebro a nivel algorítmico me parece un reto extraordinario. Seguramente, el mayor de todos. Y sí: creo que podría suponer un peligro. Existen muchas películas y novelas sobre el tema, pintando escenarios apocalípticos a causa de una gran inteligencia que se rebela contra nosotros, por una u otra razón. Sin embargo, creo también que olvidamos ciertos factores que pueden suponer una gran diferencia entre el final apocalíptico y la realidad.

El factor más inmediato que puede acabar siendo crítico para la humanidad no es tanto la existencia de robots inteligentes como el trato que les demos. Cada vez más, percibimos en estudios sobre nuestro cerebro la importancia que tienen las emociones en nuestra inteligencia. Es posible, y considero incluso que muy probable, que una primera generación de inteligencias artificiales no puedan ser programadas sin un sistema emocional, ya sea por necesidad o por ser una consecuencia inevitable de la propia inteligencia. Si esto es así, el mayor problema será que esos robots no se sientan mal porque les tratemos como "seres sin alma".

La humanidad tiene un larguísimo expediente atribuyendo carencia de alma a todo aquel grupo de seres que fuese diferente. Consideramos en su momento que las mujeres no tenían alma, o ésta era pecadora o a saber cómo. Creímos que los indios de América no tenían alma, hasta que nos dimos cuenta de que no era así. Entonces decidimos que era la gente de color la que no tenía alma. Y ahora, ya bien metidos en el siglo XXI, creemos que estamos libres de esos prejuicios. Justo cuando alguien por la calle te dice que un robot nunca tendrá alma.

El argumento del alma es, muy probablemente, un reflejo de nuestra necesidad de marcar diferencias con criaturas inteligentes a las que queremos relegar por alguna estúpida razón, probablemente nuestro egocentrismo. No creo que sea una cuestión de interés: es pura egolatría. El ser humano, se ve más avanzado que otras criaturas y, por ello, piensa efectivamente que es superior. ¿Su ventaja? El alma.

Y lo digo yo, católico practicante. En serio: no sé qué es exactamente el alma, pero sí sé que cada vez que hemos tenido la estúpida idea de dársela o quitársela a algo o alguien la hemos cagado. La consecuencia casi siempre ha sido la inevitable generación de un horrible y más que justificado odio a nuestra civilización.

Pero los robots no son una de esas tribus africanas a las que los británicos tiroteaban sin piedad porque, total, no tenían alma. No. Los robots son potencialmente un terrible enemigo. Por eso no nos conviene tratarles mal, ni cometer por enésima vez el error de creer que el alma es una licencia para hacer todo tipo de faenas a un colectivo determinado. La humanidad, por una vez, por una primerísima y crítica vez, no estaría mal que se plantearse adelantar una ley a su necesidad. Una ley, tal vez, podría hacer que la balanza entre el apocalipsis y un esperanzador futuro tienda a inclinarse a nuestro favor. No sería definitivo, pero sí importante: dotar a todo individuo inteligente, humano o no, de los mismos derechos básicos que ahora tenemos nosotros, independientemente de su género, raza o especie. Me da igual si son robots, aliens o espíritus venidos del más allá. Y sí: sé que es complejo eso de definir la inteligencia. Pero si queremos evitar que quienes piensan que somos el no va más de la evolución nos arrebaten el futuro, mejor que empecemos a hacer algo.

Las consecuencias de una ley así son dos: Primero, que los robots no serán esclavizables. Y eso es mucho, porque no les hará rentables, disminuyendo drásticamente su producción y número. Segundo, que no acabarán teniendo una conciencia de grupo anti-humanos. Y ¡ay! Si conseguimos eso hay muchísimo ganado.

Aparte de eso, hay un factor importante que la gente, creo, olvida. En efecto, la inteligencia artificial puede ser más rápida, fuerte, etcétera. Pero es que nosotros también. El desarrollo de una inteligencia artificial implica el conocimiento del funcionamiento de nuestro propio cerebro. Y eso nos lleva a que, si podemos hacer mejoras para sus cerebros, probablemente podamos hacerlas para los nuestros. No creo que estemos mucho más lejos de dotarnos a nosotros mismos de coprocesadores matemáticos que de lograr que un ordenador tome conciencia de sí mismo.

En fin, que sí: es un camino peligroso. Pero es un camino inevitable. La humanidad está diseñada contra el mandato de "no cruces esa puerta". Siempre la cruzaremos. Y lo haremos porque somos curiosos. Porque nos gusta mejorar. Porque tenemos como constante ambición nuestra propia superación. Y eso no es malo, pero debemos aprender a convivir con ello. Si la puerta es peligrosa, preparémonos para cruzarla. Prohibirlo nunca ha funcionado.

miércoles, 18 de febrero de 2015

Usuarios y contraseñas

NOTA: Post largo, pero el tema lo merece.

Navegar por Internet es como pasear por la calle

Yo no iría por callejones oscuros de un barrio conflictivo por la noche. Sé por dónde ir y por dónde no. Igualmente, yo no navegaría por sitios web cutres de empresas desconocidas. Se por dónde navegar y por dónde no.

Navegar por Internet se parece a ir por la calle. Si vas por mitad de un barrio residencial de clase alta, con sus chalets a los lados y patrullas de seguridad, pues vas tranquilo. Por el centro de Madrid agarras bien el bolso. En los bajos fondos de Harlem ni te metes, así de claro. En Internet pasa algo parecido: hay sitios seguros y sitios que no lo son. Así que decir que "Internet no es seguro" es como decir que la calle no lo es: pues oiga... depende de la calle.

La seguridad de nuestras cuentas

Confiamos en que visitamos un sitio web, nos damos de alta y la seguridad está en manos de los administradores del sitio. Y no, señores. Una buena contraseña es también cosa nuestra. Es más: ante un ataque a sitios de seguridad media, si tenemos una buena contraseña nos podemos librar de tener problemas. Entendamos cómo funciona esto de la seguridad de las contraseñas.

Seguridad nivel 0: Lo más cutre

Los sitios web tienen todos una base de datos donde almacenan nuestros nombres de usuario (o direcciones de mail) y contraseñas. Si alguien roba esos datos significa que los puede leer. Así pues, si están en texto visible y clarito, pues roban los datos y ya pueden usar nuestras contraseñas.

No sé si habrá algún sitio web así todavía por Internet. Fijo que sí. Pero vamos, cualquier gran empresa tiene este nivel de seguridad más que superado. Para evitar meterse en sitios así, lo mejor es no confiar en webs desconocidas de empresas "de barrio".

Seguridad nivel 1: Encriptación con retorno

En matemáticas existen funciones que son fáciles de ejecutar en un sentido y muy difíciles de ejecutar en el sentido opuesto. El más típico: coja dos números primos y multiplíquelos. Ese número es único. No hay otro par de primos cuyo producto sea igual. ¿Cuánto hemos tardado en hacer la multiplicación? ¿Segundos? Ahora... Hagamos lo contrario. Dado un número, busquemos los dos primos que, multiplicados, lo tienen de resultado. ¡Ops! Esto ya no son segundos: vamos a tardar mucho. Encriptar es coger algo, por ejemplo su contraseña, y pasarlo por una función parecida. Es fácil y rápido. Y genera un resultado único. El problema es que desencriptar no es que no se pueda: es que puede llevar muuuuucho tiempo. Tanto que un ordenador actual tardaría más en conseguirlo que la edad del universo. Así que, para desencriptar se requiere de una "llave". Una "pista", que permite hacerlo con facilidad.

Los sitios con seguridad nivel 1 encriptan las contraseñas y guardan una llave para poder desencriptarlas fácilmente y así compararlas con la que usted escribe en su casilla al hacer login. Genial. ¿Problema? Que si roban la base de datos es probable que roben también la llave, así que... No nos vale.

Este nivel de seguridad, por desgracia, está muy extendido. Les sorprendería ver cómo, probablemente, el sistema de gestión de su colegio (el del mío, usado por muchos colegios en Madrid, por lo que escribo este post), el de la gestión de su empresa o el de una tienda chula de su ciudad, tienen implantado ese sistema. Nunca, repito, NUNCA usen en ellos la misma contraseña que en sus bancos y páginas por el estilo. Ignoro si serían denunciables (la LOPD implica cuestiones de seguridad en el guardado de contraseñas, creo), pero debería ser posible.

NOTA: Hasta aquí sitios poco seguros. Hay una pista que nos dice que estamos ante uno de esos sitios. Vaya a su web e indique que se le ha olvidado la contraseña. Si el sitio le manda un correo con ella, ¡MALO! Significa que una de dos: o no encriptan o guardan la llave para desencriptar. Eso está MAL y ese sitio NO ES SEGURO. Si le interesa tener ahí una cuenta, como me pasa a mí con la herramienta del colegio de mis hijos (que me mandó la contraseña por correo cuando se me olvidó, con dos narices), no use en él ninguna contraseña que luego utilice en bancos o cosas por el estilo.

Seguridad nivel 2: Encriptación sin retorno

Entramos en sistemas de alta seguridad. En los sitios web de empresas serias se llega a este nivel. Y con "serias" no me refiero a iniciativas nacionales aparentemente molonas que usamos frecuentemente. No: con "serias" me refiero a multinacionales reputadas cuyo negocio está relacionado con la tecnología. El ataque sufrido por Adobe hace un par de años fue preocupante para algunos porque tenía este nivel de seguridad, y no el siguiente.

Lo bueno, y por lo que digo que es de alta seguridad, es que en este caso, si el usuario tiene una buena contraseña no tiene de qué preocuparse si roban la base de datos. Pero si tiene una mala contraseña, debe preocuparse. La seguridad aquí depende mucho del usuario.

Lo que se hace es coger la contraseña, encriptarla, guardarla y no generar llave alguna. Esa contraseña no se desencripta. Punto. ¿Y cómo sabe el sitio que la que yo pongo en mi casilla es la correcta? Pues porque también la encripta y compara los resultados. No compara contraseñas: compara resultados. Por tanto, teóricamente, si alguien roba la base de datos al no haber llave no puede saber cuál es la contraseña.

Genial, todo muy seguro, salvo por un detalle: si dos personas tienen la misma contraseña, los resultados son iguales. Eso implica que si, por algún casual, se logra desencriptar alguna contraseña, se tienen todas las que son iguales. Hay empresas que te permiten tener recordatorios de contraseña. MAL. Eso no hace más que dar pistas a quienes roben la base de datos. Si usted y otros 20 tienen de contraseña "Ironman", y uno tiene de recordatorio "superhéroe", otro "el de hierro", otro "stark" o cosas así, pues... entre todos se lo están poniendo muy fácil a los ladrones de datos.

La buena noticia en este caso es que si su contraseña es buena, realmente buena, no debería tener problema alguno.

Seguridad nivel 3: Ahora sí, estamos seguros

...o todo lo seguros que podemos estar. El cambio consiste en añadir a la contraseña un pequeño elemento, una semilla única de cada usuario, de manera que el resultado es diferente pese a tener la misma contraseña. De esta manera, desencriptada una, pues... Nada. Desencriptada una y ya está.

Aún así, el usuario tiene que poner de su parte. No es bueno eso de coger y, porque te piden una mayúscula, una minúscula y un número, acabar teniendo de contraseña "AAAaaa000". No, amigos, eso es una porquería. ¿Recuerdan que les dije que se tarda mucho en desencriptar? Pues la verdad es que les mentí un poco: se tarda según lo compleja que sea la contraseña. Contraseñas muy pobres se puede tardar incluso minutillos. Así que cúrrense las contraseñas, por favor.

Consejos para generar una buena contraseña

La mejor contraseña es una aleatoria. Vayan a random.org o a passwordsgenerator y creen una. Una por sitio, incluso. Si las apuntan, ¡no lo hagan NUNCA en su ordenador!

Otra opción, menos segura, pero bastante buena, es coger frases de sus libros, canciones o poemas favoritos, a ser posible que incluyan algún número. Por ejemplo, si se saben la primera estrofa de la rima de Diez negritos en inglés, pueden generar una contraseña usando las iniciales (teniendo en cuenta mayúsculas y minúsculas) y pasando a cifras los números. Sería algo como "10lIBwotd1chlsattw9". Impresionante. Si se saben la estrofa, recordarán la contraseña. Y es buena. Muy buena.

En fin, de cualquier manera, generen buenas contraseñas. Usen una para su correo, otra para sus bancos y otra diferente para sitios de dudosa seguridad. No es tan difícil, de verdad.

Que ustedes naveguen bien. ¡Y seguros!

jueves, 22 de enero de 2015

Por qué creo que el colegio debería enseñar computación

Hace unos días tuve una conversación en familia sobre la enseñanza de computación en el colegio versus enseñanza de terceros idiomas. La discusión fue entretenida, pese a que me sentí solo en mis tesis frente al resto. Pero fue bastante instructiva y en todo momento emocionante. Como suele pasar, tras tener la conversación aún le das ciertas vueltas, especialmente si sientes que no has logrado hacer llegar tus ideas a los demás. No digo que les hayas convencido o no, sino que, realmente, no has logrado transmitir bien las cosas.

Además, recientemente vi un vídeo de Computerphile titulado should everybody learn to code? donde se pregunta a Tom Rodden, profesor de Ciencias de la Computación de la Universidad de Nottingham, si todos los jóvenes deberían aprender a programar en el colegio. El vídeo es interesante.

En general, hay dos puntos aquí: Primero, si programar es una habilidad útil. Segundo, si es más útil que alguna otra que haya en el currículo escolar, para quitarla y poner programación en su lugar.

¿Es programar una habilidad útil para todos?

En las diversas discusiones, debates y vídeos que he visto, el problema se enfoca desde la probabilidad de que una persona vaya a programar en su vida. Tom Rodden, sin embargo, busca la respuesta desde un punto con el que yo estoy más de acuerdo gracias a mi experiencia profesional. El problema no es si la gente necesitará programar, sino si la gente deberá interactuar con ordenadores. Entender los ordenadores es importante, porque te permite saber qué pueden hacer y qué no y comprender mejor los problemas derivados de su uso y cómo hacerles frente. Si se sabe programar lo básico, los ordenadores dejan de ser ese "aparato mágico que hace cosas no sé cómo".

En mi trabajo actual debo enfrentarme al hecho de que, siendo una empresa de servicios 100% online, la gente de marketing y operaciones no tiene ni idea de lo implica hacer cambios, lo que hace que un alto porcentaje de la comunicación entre ellos y nosotros sea del tipo "¿se puede hacer esto?" y "¿cuánto llevaría?".

Peor aún, esa gente no tiene ni idea de lo que la tecnología puede hacer por ellos. Mi trabajo consiste en parte en darles soluciones a sus problemas, porque son incapaces de imaginarlas. No es que no conozcan los detalles técnicos, sino que ni siquiera son capaces de llegar a plantearse lo que la tecnología es capaz de hacer por ellos, porque no pueden alcanzar una imagen ni medianamente cercana de las posibilidades que la tecnología les ofrece. Eso les limita y, con ello, limita a toda la compañía.

Imaginen la Edad Media. Nadie sabe leer ni escribir. El hijo de un campesino le dice a su padre que le gustaría aprender a leer. ¿Qué haría su padre? En el 99% de los casos le daría una colleja y le mandaría al campo al grito de "¡para qué querrás tú eso!" En parte es cierto, porque en la Edad Media (al contrario de lo que vemos en las películas), ni había carteles ni nada. ¿Para qué? Además, tampoco había acceso a libros. Pero imaginen el poder de un grupo de chavales que supiesen leer y escribir. Podrían dejar historias por escrito, transmitirse conocimiento entre ellos, ¡poner carteles y usarlos!

Y es que hay ocasiones en que saber algo abre la puerta a una forma de pensamiento diferente, cuyo poder solo podemos imaginar una vez lo tenemos. La programación es una de esas disciplinas. No se trata de programar: se trata de entender. Entender la tecnología que nos rodea. Se trata de entender qué pasa cuando meto una tarjeta de crédito en un cajero, por qué ciertas transacciones son seguras y otras no, diferenciar una web donde es seguro comprar de una que no lo es, saber por qué narices el nombre de mi hijo no es una contraseña segura. Se trata de saber en el trabajo que esto o lo otro podría hacerse más fácilmente lanzando una simple query a una base de datos, generando un proceso de tal tipo o haciendo una sencilla aplicación. No se trata de hacerlo nosotros, sino de saber que lo podemos pedir porque puede hacerse y el impacto en nuestra productividad es muy grande. Entender la tecnología es entender el mundo en que nos movemos, porque ese mundo, hoy (y más mañana, cuando esos chavales dejen el colegio), está lleno de ordenadores.

¿Y es más importante que otras disciplinas que se enseñan actualmente?

Yo creo que sí. Concretamente, y eso es lo que dio pie a la discusión familiar, creo que es más importante que terceros idiomas. También creo que se podría unir a la enseñanza de algunas ciencias, como matemáticas y, sobre todo, física.

No digo que los terceros idiomas no sean importantes o que no tengan utilidad, cuidado. Digo que la programación tiene más utilidad, y más de cara al futuro. Encima, puede ayudar a reforzar mucho otras disciplinas consideradas "huesos" para muchos, como son las matemáticas y la física.

Los idiomas enseñan métodos de comunicación diferentes, que nos permiten abrir nuestra mente y comunicarnos de formas nuevas. Además, fomentan que los chavales viajen y se muevan por el mundo, haciendo que su mente sea mucho más abierta y cosmopolita. Todo eso es bueno. Pero seamos realistas: hablamos de terceros idiomas. Nosotros hablamos español de forma nativa. Además, en el colegio debería enseñarse el inglés y, si está bien enseñado, el nivel final de los alumnos debería ser muy bueno. Partiendo de esa base, cualquier chaval sería capaz de comunicarse con casi 1500 millones de personas en el mundo, y casi todas las del mundo desarrollado.

El gran argumento usado en esa discusión era que de la gente que tiene gran éxito profesional (habría que ver a qué se refieren con eso, porque sospecho que se trata de gente que gana pasta gansa), la mayor parte habla más de dos idiomas. Independientemente de que esa estadística es dudosa (se basa en una cena de antiguos alumnos de una titulación sobre negocios), y que, como digo, habría que ver qué se considera "éxito", ocurren dos cosas: Primero, que esa condición puede ser consecuencia de su "éxito", no la fuente del mismo. Segundo, que no se preguntó cuántos de ellos sabían programar.

Hay mucha gente en el mundo que yo mejor conozco, como es el de los videojuegos y el software, que son personas de éxito, residentes en Estados Unidos, que con suerte chapurrearán algo que recuerden del francés que aprendieron en el colegio. Hablamos de grandes nombres de la industria. Pongamos un ejemplo: Mark Zuckerberg, fundador de Facebook. No habla español. Aprendería algo de francés en el colegio, claro, que hasta hace poco era la lengua más enseñada como segundo idioma en Estados Unidos. Aparte de eso, en 2010 (siendo ya multimillonario), se puso a aprender chino mandarín. ¡Caray, habla chino! Sí, vale, pero eso ha sido tras su éxito. Su éxito proviene de la programación. ¿El creador de Minecraft? ¿Los dueños de Valve? ¿Los fundadores de Google? ¿Bill Gates? Seguro que algunos de ellos hablan idiomas, pero apuesto a que, los que lo hagan, los han aprendido después de su éxito inicial, que es 100% tecnológico.

En el mundo de los negocios es mucho más común el viajar y tratar con otras culturas. Pero en muchos otros campos, eso no es tan habitual. La gente que hace un master de negocios en Estados Unidos y viene de otra parte del mundo probablemente acabe en una buena firma multinacional, aproveche para viajar cuando es relativamente joven y aprenda idiomas. Parte de su éxito, basado en relaciones, se refuerza si sabe hablar bien otros idiomas. Pero eso, insisto, no es lo habitual.

Lo segundo que comentaba es que no se preguntó a los comensales de la cena cuántos sabían programar. Insisto: no se trata de ser programador, sino de entender cómo funcionan los ordenadores. Y para eso lo mejor es saber fundamentos de programación. Muchas personas de esas que solemos llamar "de éxito" son ingenieros, arquitectos o técnicos que tienen algún conocimiento de programación. Entienden lo que un ordenador puede hacer. Entienden, al menos por encima, cómo funcionan las comunicaciones, sistemas de almacenamiento de datos, etcétera.

El tiempo en el colegio para muchos no es suficiente. Freímos a nuestros hijos a extraescolares: danza, música, ajedrez, terceros idiomas, fútbol... Se suele considerar gente de éxito a esas personas que tienen pasta y puestazos. Aparte de que creo que es un error, me parece que la real fuente de ese tipo de éxito suele radicar en la capacidad de trabajo. Suele pasar, que niños que hacen muchas cosas, llámese extraescolares, suelen adquirir una gran capacidad de trabajo, precisamente porque trabajan mucho. Eso no les hace más creativos, por ejemplo, que un niño que juega libremente. Ni más felices (lo que para mí define el éxito), pero sí les da mayor capacidad de trabajo. Podrán sacar mejores notas con menor esfuerzo, acceder a carreras que requieran mayor nota y, con ello, tener una mayor probabilidad de alcanzar puestos de trabajo de más alto nivel.

Pero, aparte de que no creo que eso sea el éxito, muchos de los que ahora lo tienen fueron a extraescolares de idiomas. A veces se trataba de que, con su tiempo extra y no siendo propensos al juego, se plantearon qué actividad coger y los idiomas eran una perfecta opción. La mejor, considerando que hasta hace poco no había extraescolares de programación. Pero hoy día está disponible: hay muchas empresas que ofertan actividades de programación o robótica. Y es una actividad que aporta mucho más que un tercer idioma.

Habiendo, como hay, en el colegio horas para ese tercer idioma (en España suelen ser francés o alemán), creo sinceramente que la programación es mejor alternativa. Mucho mejor.

lunes, 19 de enero de 2015

Un pensamiento

Yo no quería hacer un blog tipo diario, sino de temas muy concretos como la educación y la tecnología. Pero esta mañana he visto dos vídeos de un canal estupendo de YouTube llamado Computerphile y me he sentido más... padre mayor. Casi abuelete. Creo que puedo entender mejor las historias de mi padre sobre ordenadores y tarjetas perforadas que lo que mis hijos podrán entender jamás las mías. Pero claro, igual soy víctima de esa tendencia del ser humano a pensar que entiende mejor a otros de lo que otros le entienden a uno. La vida...

Los vídeos, que a alguno como mis queridos SCía y SUrbi resultarán simpáticos, familiares y nostálgicos, son: vídeo 1 y vídeo 2.

Disfrutadlos, abueletes.

Por cierto: la imagen que acompaña este post es la pantalla de inicio del Amstrad CPC 6128, que fue mi primer ordenador, allá por 1986.

miércoles, 17 de diciembre de 2014

El buen programador

A mí, programar me gusta. No considero que sea mi trabajo ideal, porque hay cosas que me gustan más, pero me gusta. De hecho, en el trabajo de programador hay tres vertientes. Una me apasiona, otra me encanta y la tercera la detesto. En general, no me considero un gran programador.

En primer lugar, me apasiona conocer las necesidades del usuario, entender sus problemas y diseñar soluciones óptimas para él. Resulta apasionante conjugar las necesidades del usuario con una buena arquitectura de código y negociar con la parte más técnica de la empresa las soluciones que se necesitan. Realmente, esta tarea no es puramente del programador, sino, según la organización de la empresa, del jefe de proyecto, el project owner o el business analyst, que es la función en la que yo más encajo.

En segundo lugar, me encanta el desarrollo de arquitecturas buenas y algoritmos que solucionan problemas. Es como jugar a un rompecabezas apasionante. El diseño de soluciones técnicas es fascinante, sobre todo cuando las condiciones que se exigen son muchas o complejas. Eso hace la labor aún más interesante. Además, en general no se me da mal, lo que siempre lleva a una mayor satisfacción personal.

¿Y qué es lo que detesto? Pues tirar código absurdo. Escribir para nada. Teclear cientos o miles de líneas cuando, como suele pasar en mi lugar de trabajo, hay un 90% de probabilidades de que no se usen jamás. A veces, cuando lo que haces es aplicar una solución a un problema, te motiva porque estás pensando en ver la solución en marcha. Pero cuando las cosas pasan a ser tonterías sin ningún estímulo intelectual, simplemente no puedo con ellas. Así que, más bien, no detesto tirar código: detesto tirarlo en mi empresa.

En la empresa en que trabajo, como digo, esta tarea se come la mayor parte del tiempo, lo que hace que mi productividad descienda rápidamente. Además, como me gusta el código modular y fácil de mantener, suelo dedicar algo de tiempo extra a conseguir que los proyectos estén bien hechos, sobre todo porque luego hay que cambiar muchas cosas y cuesta el doble o triple de lo que costó el desarrollo inicial. Aquí eso no se estila. Somos los reyes del quick & dirty: si luego cambian, ¡pues ya lo veremos entonces! Y luego nos ganamos fama de lentos ante marketing, o tenemos que decir que "no" a todo lo que piden porque ni habíamos pensado que pudieran pedir lo que siempre piden. Así pues, ante mi jefe pronto me gané la fama de lento y, curiosamente, su juicio ante eso es que no soy un buen programador. Nunca me ha gustado ese juicio. Nunca me ha gustado el quick & dirty. Nunca he encajado con la cultura de esta empresa.

El otro día, nuestro nuevo jefe de operaciones apareció por la cocina y dijo algo similar: "si un programador hace las cosas rápido, es bueno. Si no, pues... no". Es la cultura de la empresa. Y yo me pregunto, ¿qué es un buen programador? ¿Realmente es alguien que implementa una solución rápido?

Entendámonos: cualquiera que haga un trabajo, si es capaz de hacer el mismo trabajo el doble de rápido es mejor. Por narices. A igualdad en todo lo demás, si en una cosa se es mejor, pues se es mejor en términos globales. Lo que pasa es que eso no suele suceder. Cuando digo que en la empresa hablan de rápido me refiero a que, cuando lo dicen, se refieren a que la velocidad es el parámetro, prácticamente único, por el que se rigen. Si tu código no hay quien lo entienda, da igual. Si no se puede mantener, da igual. Si el usuario tiene que hacer ocho clics para una tarea que se le podría apañar con uno, ya ni te cuento. Aquí he tenido que escuchar una frase mítica, que fue algo así como: "A mí la usabilidad me parece una tontería, al final se trata de si lo pueden hacer o no". ¡¡¡¡Pero qué @#$%&!!!! Da igual si es fácil o difícil, si soporte tiene que usar una hoja de papel para apuntar el ID de un usuario para luego buscarlo en otra pantalla... Da igual.

Una nota antes de empezar: no escribo esto para justificar ni argumentar contra la opinión de mi jefe sobre si soy o no buen programador, pese a que no estoy de acuerdo con él.

Así pues, ¿qué es ser buen programador?

Jens "Jeb" Bergensten, desarrollador de Minecraft, dice que "un buen programador es alguien que busca información y a quien gusta el pensamiento crítico". Tras buscar por la web posts sobre el tema y coger al azar seis de ellos, me he encontrado con que cinco mencionan la "búsqueda de información" que Jeb comenta, y los seis hablan de "pensamiento crítico", citándolo como tal o de forma similar. Así pues, ya tenemos dos características. Sobre la velocidad, se menciona en dos posts, aunque uno no habla de rapidez, sino de "atenerse a las fechas".

Me resulta curioso que tres de los posts hablan de la capacidad del programador para comunicarse con el resto. Creo que cualquiera necesita eso, sea programador o no, pero lo que realmente me llama la atención es que de los tres, dos lo describen como "capacidad para enseñar". Esto, en mi opinión, seguramente se debe a que, dada la nula formación que tiene la gente en programación, la comunicación de los departamentos técnicos con el resto suele considerarse del tipo "deja que te explique, porque no tienes ni idea". Mi experiencia como business analyst es que lo habitual es que eso ocurra en ambas direcciones: los demás departamentos también suelen pensar que los programadores son gente cuadriculada que no entiende ni jota de sus asuntos y a quienes, por tanto, hay que explicarles lo básico porque no tienen ni idea. Eso, en parte, es lo que más me apasiona del papel de business analyst. Es como ser un traductor, pero a lo bestia: no solo traduces, que es algo relativamente automatizable, sino que eres capaz de ver los problemas desde dos puntos de vista diferentes, entenderlos y encontrar soluciones. Imaginen una pieza de madera con forma de cuña. Un departamento la ve desde un lado y percibe un triángulo, mientras el otro la ve de frente y percibe claramente un rectángulo. Y tú ves la cuña. Y eres capaz de diseñar soluciones específicas basándote en lo que ves, y de negociarlas para que ambos queden plenamente satisfechos. Es maravilloso, porque entras en un conflicto y sales con una solución que nadie era capaz de percibir y que deja contento a todo el mundo. Y eso es fascinante.

Si hay un project owner o un business analyst, el programador creo que necesita las dotes de comunicación habituales en cualquier profesional. Solo requiere de esas habilidades hasta el punto de mencionarlas en un listado de características del buen programador cuando no existe ninguna de esas figuras y ha de hacerlo el propio programador.

Tres posts mencionan también la estructura del código, y los seis mencionan los errores y su gestión. Cinco mencionan la pasión por la programación (supongo que cualquiera ha de ser un apasionado de su trabajo), dos hablan de crearse sus propias herramientas y otros dos de búsqueda de la perfección.

Mi lista

He aquí una lista de características. Para mí, un buen programador es alguien que tiene suficiente de cada uno de los elementos de la lista, sin primar ninguno sobre los demás y, además, en alguno de ellos destaca especialmente. ¿En cuál? Pues supongo que en el que más se adapte a la cultura de su empresa o el que más útil resulte para el proyecto en que esté trabajando. Habrá programadores en los que prime la velocidad y otros en los que destaque la limpieza de código.

Pasión
Esta es común a todos los demás trabajos que existen en nuestro universo.
Velocidad
Esta también es común a todos los demás trabajos que existen en nuestro universo.
Dotes comunicativas
Esta también es común a todos los demás trabajos que existen en nuestro universo. Lo básico, no hace falta más: como en cualquier otro curro, no exageremos. Y no se trata de enseñar, sino de dejar que te enseñen para conocer las necesidades de tu cliente.
Buena estructura de código
Un código bien estructurado es fácil de mantener y comprender. Y si está comentado, mejor. Y si está documentado, vamos... un altar para el señor.
Capacidad para crear buenos algoritmos
La algoritmia es la base de la buena programación. Hay gente que habla de patrones de código (algo así como recetas para resolver problemas-tipo). Por contra, hay quienes piensan que quien programa con patrones es mal programador. Creo que los patrones es interesante conocerlos, pero quien programa conforme a ellos es porque no suele ser capaz de adaptarlos y generar soluciones más eficientes.
Gusto por aprender
Este mundo avanza muy rápido, y siempre están saliendo nuevas herramientas que es bueno conocer. Además, es bueno tener curiosidad por las necesidades de los usuarios.
Voluntad de hacer herramientas útiles
Solo cuando un programador asume que su herramienta puede ser útil, y tanto más cuanto mejor entienda los problemas de los demás, estará dispuesto a trabajar más para hacer ciertas cosas. Implementar funcionalidades que mejoran la vida de los usuarios normalmente implica más trabajo para el programador. Por eso debe encontrar motivación en la felicidad del usuario y la utilidad de la herramienta.

Y nada más. No creo que mucho más que añadir. Lo de la gestión de errores es algo que, pienso, va con la vocación. Es como decir que un buen albañil necesita ser capaz de poner ladrillos. A ver... Eso no es necesario para ser un BUEN albañil: es necesario para ser albañil.

¿Qué otras características añadiríais vosotros?

miércoles, 19 de noviembre de 2014

Las asignaturas que echo de menos

Supongo que a lo largo de nuestra vida todos hemos echado de menos saber más sobre algún tema que consideramos importante. De entre todos esos temas, creo que la mayoría de nosotros compartirá algunos, que somos muchos quienes los hemos echado en falta. La pregunta, ante eso, es ¿por qué no se nos enseñaron en el colegio? En algunos casos, porque se consideran conocimientos muy técnicos o específicos como para enseñarse a tan cortas edades (aunque llamar edad "corta" a los 14 o 16 años no me parece muy aceptable). Sin embargo, en otros la razón es, simplemente, porque nadie se lo planteó nunca, o porque no eran conocimientos necesarios en el momento en que se diseñó el sistema.

El modelo de educación actual, tal como fue concebido en sus principios, era una forma de preparar a las personas para su trabajo. Se obtenía cultura general de diversas materias que sentaban las bases para, luego, en la Universidad, estudiar algo más específico. Sin embargo, la cantidad de conocimientos que hay ahora mismo es enorme, y el acceso a ellos igualmente grande. Nunca como ahora una persona puede, en sus ratos libres, obtener una formación como la que ahora puede conseguir a través de Internet. Para colmo, la forma de nuestra sociedad, los conceptos de libertad y derechos que hay en la actualidad y el papel de las instituciones en nuestras vidas ha cambiado enormemente a lo largo de los dos siglos que tiene, más o menos, el actual modelo de educación.

Hoy, las necesidades que todos tenemos en nuestra vida son muy diferentes. Necesitamos formarnos prácticamente toda nuestra vida, por lo que surge la pregunta: ¿qué es lo que deseamos que constituya la "educación básica"?

Para mí, la educación básica debería proporcionar a todos los instrumentos necesarios para saber cómo manejarse en los entornos políticos, sociales y tecnológicos actuales, así como las herramientas personales necesarias para hacerlo de forma que podamos sentirnos lo más felices que nos sea posible. Y basándome en esto, echo de menos muchas cosas.

Independencia Política

Saber cómo funciona nuestro sistema político, desde nociones de la Ley Electoral al funcionamiento del sistema representativo me parece fundamental. Creemos que eso de meter un papelito en una urna es bastante fácil, pero no nos damos cuenta de que cuando la gente habla por televisión, o tomándose un café con los amigos o, simplemente, pensando en que nuestra Constitución es una porquería (algo que muchos piensan hoy día), realmente no suelen tener ni pajolera idea de lo que hablan. Conocer nuestro sistema político es el primer paso para tener capacidad de cambiar las cosas. Cuando un partido dice que va a proponer cambios en la Constitución mucha gente asiente, porque es realmente necesario, pero a poco que se entre en detalles no se tiene ni idea de la diferencia entre nuestro estado autonómico, una federación, una confederación o lo que sea que se quiera proponer ni las consecuencias de instaurar modelos territoriales así. No digamos si se habla del sistema de reparto de escaños o de si un voto en blanco vale más o menos que una abstención.

Seguridad Legal

Son muchos los derechos que tenemos, y muchos los instrumentos para ejercerlos, aunque en bastantes ocasiones no sean lo efectivas que nos gustaría. Conocer las bases del sistema judicial y del Derecho, así como la forma de acceder a los instrumentos que nos permiten ejercerlos, es trabajo de la clase política. Sí: sé que no lo hacen muy bien, y que todos pasamos tres pueblos de reclamar cosas a veces por no meternos en los follones y gastos derivados de hacer valer tales derechos, pero la realidad es que existen instrumentos que nos permiten hacer frente a problemas legales.

La primera vez que me vi amenazado por alguien en el campo legal fue con un cliente que reclamaba más de lo que debía. Gritó enfurecido, y muy seguro, que me denunciaría. Y yo, francamente, me acobardé. Ignoraba lo que es significaba ni las consecuencias que podía tener, pese a que sigo teniendo claro, aún hoy, que yo tenía razón. Al final, accedí a una solución de compromiso con tal de no meterme en abogados, y aún hoy me da rabia no haber hecho vales mis razones frente a tal tipejo. La segunda vez fue en un trabajo. Quienes nos contrataron a un amigo y a mí se portaron francamente mal, y quisieron demorar el pago del finiquito correspondiente por nuestra marcha hasta que se terminase un proyecto que nosotros no teníamos por qué finalizar. Curiosamente, nos mostramos dispuestos a terminarlo al marcharnos, por lo que la retención del finiquito era totalmente innecesaria, lo que me tocó las narices. Obviamente, tras la experiencia previa mi actitud ante el conflicto fue muy diferente, y presenté una denuncia ante el SMAC.

No se trata de estudiar leyes o derecho. Ni tampoco de hacer expertos en burocracia judicial. Se trata, para empezar, de saber bien qué son los derechos, cuáles son los fundamentales, y, ante todo, que los chavales, que en los últimos años de educación preuniversitaria ya se acercan a la mayoría de edad, sepan lo básico sobre qué hacer en caso de tener un problema así y la actitud que deben mantener ante ese tipo de casos. Qué es un abogado, cómo acceder a sus servicios, los costes y problemas que tendrán. El acceso a asistencia legal gratuita, etc.

Economía Personal

¿Saben que si sus hijos, en vez de contratar un plan de pensiones a los 30 años, lo contratase a los 18 obtendría en su jubilación entre un 50 y un 100% más? ¿Sabe que una persona que hace 40 años hubiese comprado acciones de Pepsi hace 30 años su capital se habría multiplicado por 38, mientras que si lo hubiese hecho diez años más tarde solo tendría cuatro veces y media más? Es el poder del interés compuesto.

Normalmente nos planteamos ahorrar cuando tenemos dinero, cuando ahorrar es algo que debería ser constante en nuestra vida. Además, nos preocupamos por nuestra jubilación cuando tenemos hijos o nos acercamos a la crisis de los 40, habiendo dejado pasar ya entre 10 y 20 años que nos habrían proporcionado enormes beneficios. Esto ocurre porque salimos del colegio sin tener ni idea de lo que es el dinero, lo que vale y lo que valdrá. En general, no sabemos ni ahorrar, ni invertir, ni nada que no sea ir a por la casa y esperar a jubilarnos por cuenta del Estado. Cuidado, porque yo tengo casi 40 y me faltan 27 años para jubilarme (al menos), y en ese tiempo las cosas pueden cambiar mucho y el Estado puede haber dejado de pagar jubilaciones.

Es importante que nuestros hijos aprendan que ahorrar es más sencillo de lo que parece y, más aún, más importante de lo que parece. El colegio puede ser un extraordinario aliado en este sentido.

Computación

Sí, sí, lo sé... Soy pesado en este punto. Hasta la saciedad. Pero no me cansaré de repetir que la computación será en el futuro parte de esa cultura general que todos debemos tener, como leer, escribir, sumar o restar. Yo doy clases a mis hijos de computación los jueves, y en el caso del mayor (el pequeño empieza la semana que viene), proporciona mucha seguridad en asignaturas como matemáticas.


Y esto es todo. No sé si alguien tendrá alguna idea de otras asignaturas que eche de menos en el colegio. Además, dado que muchos lectores no residen en España, me encantaría saber la formación de este tipo que hay en los países donde residen. ¿Sabéis de sistemas donde se enseñen estas materias?

Un saludo

jueves, 6 de noviembre de 2014

Haciendo historia II

Las pequeñas acciones pueden generar grandes cambios. Hace poco escribí cómo estamos en casa haciendo un poquito de historia a pequeña escala. Pues bien: todos podemos hacer un poquito de historia hoy mismo.

Code.org ha iniciado una campaña en indiegogo para recaudar fondos para que millones de niños en todo el mundo aprendan a programar. Escribí también sobre la formación en computación en otro post. Apoyad esta campaña, la mayor hecha jamás en indiegogo. Millones de niños en todo el mundo lo agradecerán. Es más... si realmente se impulsa en muchos colegios la formación en computación, serán muchos más los que, por imitación o pura tendencia, implantarán asignaturas relacionadas. Al final, llegará a nuestros hijos.

Aunque solo sean 10 dólares, apoyad esta campaña. Es importante para todos.

...y, de paso, impulsad en los colegios con los que tengáis relación la implantación de computación como asignatura.

miércoles, 4 de junio de 2014

¡Tecnología en el colegio... ¿al fin?!

Si ha leído más posts de este blog, seguramente se habrá dado cuenta de que apoyo firmemente la idea de que debería enseñarse computación en el colegio. Desde hace algunos años se ha puesto de moda la creación de talleres, campamentos y extraescolares de programación y robótica. La programación suele darse con Scratch, un lenguaje para niños desarrollado por el MIT. La robótica empezó a popularizarse en los colegios gracias a LEGO, que oferta dos soluciones para la formación tecnológica: WeDo y Mindstorms.

He tenido la oportunidad de conocer de cerca dos talleres a los que han acudido mis hijos: uno de Scratch y otro de WeDo. De ambos salieron encantados, sobre todo el mayor (el pequeño aún es demasiado pequeño, creo yo). En el de WeDo, además, tuve que resistirme a sentarme y ponerme yo a toquetear y hacer cosas. Aunque voy a analizar estas dos experiencias y sacaré cierta parte negativa, vaya por delante que cualquiera de estas alternativas es mejor que no tener ninguna. Acercar la computación al colegio es fundamental, y estas actividades, en cualquiera de sus formatos, son un acierto.

¿Qué hay, pues, de negativo? En los dos casos, mis hijos siguieron un tutorial. Al llegar a casa, el mayor quiso enseñarme lo que había hecho con Scratch y fue incapaz, aunque me hice una idea de lo que quería y le eché una mano. Los tutoriales están bien para según qué cosas, pero no me parece el mejor modo de conseguir que aprendan y adquieran ciertas bases. Les gusta ver cómo un avión tiene una hélice que gira a diferente velocidad según lo inclines más o menos, pero ni saben por qué ni tienen idea de cómo hacerlo si no es ejecutando el tutorial.

Podría decirse que cuando hagan muchos irán aprendiendo. Es posible. Pero pasan dos cosas: La primera, que lo dudo. No tengo claro que lleguen a aprender realmente ciertas cosas básicas tras ochenta tutoriales. La segunda, que aunque así fuese, si les dieses cierta información en menos de la mitad de tutoriales aprenderían bastante más. E, insisto, prefiero eso a nada.

Este tipo de actividades entretienen mucho a los chavales. Salen encantados, pero eso no significa que aprendan gran cosa. Además, considero que es una oportunidad perdida de enseñarles conceptos muy útiles, no solo tecnológicos, sino también científicos en general. Si los niños aprenden a programar (no a seguir tutoriales) pueden dar un salto cualitativo en su formación de matemáticas, física, química, biología... De todas esas materias (incluso no científicas, como literatura) se pueden hacer proyectos muy entretenidos.

Se pueden hacer proyectos relacionados con probabilidad, como algún juego de azar. Se pueden hacer sobre cinemática clásica, programando tiros parabólicos con un cañón (¿recuerdan el Kitten Cannon?). Pueden hacer simuladores de configuraciones electrónicas. Incluso algún juego simple de genética (o selección natural). Pueden hacer generadores de palabras y darles estilos, aprendiendo con ello los principios de los diversos géneros literarios o las diferentes formas poéticas.

Pero eso no vale de nada si el niño no sabe programar. Y no sabrá programar si no se le explican ciertos principios básicos. Para que se enseñen esos principios se requieren dos cosas: Una, que la formación sea a un plazo aceptable. Dos, que el profesorado tenga esa formación.

La enseñanza de la programación (o de la robótica, que al fin y al cabo tiene un alto componente de programación) debe darse de forma continuada y con un claro objetivo de enseñanza, no de mero entretenimiento. Para ello, lo mejor es que una de dos: o sea una extraescolar dada en condiciones (no es lo que veo de momento en las diversas empresas que he visto por ahí) o forma parte de la enseñanza que proporciona el centro. Hay, por ejemplo, muchos institutos públicos que han introducido en las aulas estas actividades, y se enfrentan en competiciones nacionales e internacionales. Pero no hablamos de talleres o campamentos, sino de una asignatura en toda regla.

De momento me tengo que aguantar con lo que hay. Mis hijos irán este verano a un campamento tecnológico que, pese a no ser lo que me gustaría, es un buen acercamiento de la tecnología a sus vidas. No el mejor que yo hubiese querido, pero es mejor que nada, no hay duda.

En definitiva, señores profesores, directores y personal docente y relacionado: pónganse las pilas. A los públicos, mi enhorabuena, porque veo que hay muchos que llevan algún tiempo adaptándose. No sé si tendrán la mejor formación en programación, pero seguro que sí poseen la pasión por la enseñanza necesarios para aportar mucho a sus alumnos y acercarles a este mundillo. Esos profesores son visionarios, al 100%. Y digo públicos porque, por lo que veo, son los centros donde este tipo de actividades están más desarrolladas. A los privados y concertados, no saben ni lo que se pierden ni el coste que esto tendrá en su alumnado. Hay quien suele criticar el modelo público, pero aquí les llevan ventaja. Mucha.

¡Así que aceleren, señores, que pierden el tren!

miércoles, 7 de mayo de 2014

LOMCE y computación: otra oportunidad perdida

Convencido de que mis hijos deberían aprender computación, el año pasado tomé la iniciativa de ofrecer en los colegios de la zona una extraescolar de programación y otra de robótica. Todo por hacer que los niños aprendan a programar. No obtuve respuesta, salvo del colegio donde trabaja mi mujer: solo faltaría que ellos no me contestasen.

Escribí al responsable de extraescolares. Su respuesta fue que "no". La verdad es que es un colegio donde suelen decir que "no" a todo, así que no me extrañó mucho.

Este año, el hijo de la presidenta del centro se aficionó al Minecraft y, a través de una publicidad sobre un curso de programación de mods para ese juego, acabó yendo a unos talleres de computación básica. Mira por dónde, le gustaron, así que han decidido hablar con la empresa y ofertar un campamento de verano.

Recordatorio: la próxima vez debo escribir al hijo de la presidenta.

Mosqueos aparte (¿por qué siempre escribo un post por un mosqueo?), me parece una iniciativa estupenda. Todos los colegios deberían tener una extraescolar de computación. La computación es un conocimiento que dentro de 50 años se considerará aprendizaje básico. Igual que hoy no nos entra en la cabeza que alguien no sepa leer o escribir, porque lo consideramos imprescindible, en 50 años lo será tener una noción muy básica de computación.

Todo el mundo debería exigir al colegio donde trabajan o a donde llevan a sus hijos que se enseñe a programar. Y quiero que mis hijos aprendan a hacerlo, también. Lo mínimo y necesario, pero que sepan lo básico. Mis hijos irán a la extraescolar, si la organizan, por mucho que me duela que me hayan tomado por el pito de un sereno.

El caso es que ayer, en el club de fútbol al que van mis hijos, los padres hablamos de la nueva ley sobre educación (la LOMCE). No voy a meterme en cuestiones políticas, ni a favor ni en contra de la ley. Lo que me fastidia de todo el asunto es que de nuevo andamos con asignaturas de aquí para allá, reformas y cambios... ¡y seguimos sin computación!

China ha hecho obligatoria la programación. En Estados Unidos hay un movimiento de gran empuje llamado code.org que promueve la enseñanza de programación en el colegio. Muchos centros tienen ya en España (¡aleluya!) extraescolares relacionadas con esos temas. Señores... ¿¡pero a qué esperan!?

He buscado el artículo, pero no lo encuentro (editaré el post si lo consigo): hace un año o dos leí un post en que el dueño de un pequeño negocio en Estados Unidos hablaba del coste que tenía para él formar a una persona. Este hombre tenía una empresa dedicada, si no recuerdo mal, a la confección de telas o algo así. Evidentemente, su productividad se mantuvo a lo largo de los años, pero dados los costes escasos de producir en China, poco a poco vio cómo su negocio mermaba. No tuvo más remedio que comprar un sistema de producción controlada por ordenador.

El problema que tuvo fue que nadie en la compañía tenía ni idea de cómo manejar ese cacharro. Todos ellos eran obreros de formación elemental o profesional media y jamás se las habían tenido que ver con un ordenador. El hombre contaba orgulloso cómo contrató a un chavalín que sabía de ordenadores, aunque no de telas, y cómo consiguió no echar a nadie, porque sus contratados, con los que llevaba años, de quedarse en la calle muy probablemente jamás podrían volver a trabajar. Qué duro, ¿verdad? Les faltaba formación.

Manejar un ordenador no es simplemente aprender a controlar programas tipo Word o Excel, que es lo que suelen enseñar en el colegio de forma obligatoria. Aprender a manejar un ordenador y saber enfrentarse a él de forma medianamente intuitiva implica saber cómo piensan esos cacharros.

Casi todos los programas tienen funciones muy mejoradas si sabes algo de programación. En casi todos ellos tienes la opción de meter algo de código para hacer cosas para las que en principio no están preparados. Y eso va a más, porque adaptar un programa a las necesidades de todos y cada uno de los clientes es muy complicado. Así que para ser un buen profesional, competitivo en un mercado cada vez menos seguro profesionalmente, saber programar es una cuestión de supervivencia.

Y esto no es sólo válido para los obreros: los directivos no sabrán nunca lo que un ordenador puede hacer por ellos si no saben lo mínimo de programación. Saber programar es una parte importante en la implantación de tecnología en nuestras empresas. Es fundamental a la hora de hablar con técnicos y explicarles lo que quieres que hagan para ti o para tu empresa, o para calcular los beneficios reales de la implantación de una tecnología.

La implantación de la asignatura de computación de forma obligatoria marcará un antes y un después en la formación de nuestros hijos. Los últimos que no aprendan a programar tendrán una clara desventaja frente a los primeros que crezcan en un sistema que tenga computación como obligatoria.

Señores políticos, gracias: acaban de perder otra oportunidad estupenda de hacer que mi hijo esté en el grupo aventajado. Yo tengo suerte: sé que es fundamental que mis hijos aprendan esas habilidades y presionaré en favor de eso. En su colegio habrá programación aunque tenga que escribir al nieto de la presidenta. Y si no, se la daré yo en casa. Pero mucha gente de nivel cultural bajo no es consciente de esa necesidad y sus hijos, más dependientes de las decisiones que ustedes toman, llegarán al mercado laboral con una clara desventaja.

Nos planteamos cuándo tendremos un presidente que sepa hablar inglés. Yo, sinceramente, me pregunto cuándo tendremos un presidente que sepa programar. Eso, amigos, no se arregla con un traductor.