¿Qué es un troll?

Seguro que más de una vez se ha topado en esta red de redes con un mensaje altamente provocador. Y seguro que también más de una vez no ha podido resistirse y ha contestado más o menos airadamente. Pues bien, muy probablemente usted se había topado con un troll… ¿con un qué?

Aparte de un atractivo ser mitológico, un troll es un mensaje ofensivo que un usuario publica en una discusión en Internet (foros, chats, wikis…), con objeto de molestar al resto de participantes. También se le llama troll, y en ocasiones troller, al individuo que los escribe.

¿Por qué hablo de ellos hoy? Los trolls son un fenómeno relativamente reciente, aunque muy problemático, ya que desencadenan un círculo vicioso muy difícil de romper. Suelen consistir en mensajes provocadores o simplemente absurdos, lo que desencadena una serie de respuestas indignadas. A su vez, el autor del troll responde con nuevas provocaciones, y así sucesivamente, en ocasiones hasta que el servidor al que se envían los mensajes se satura…

¿Por qué las personas envían trolls? Es una pregunta difícil, pero personalmente opino que se debe a:

  • Deseo de llamar la atención o necesidad de integración
  • Superar un sentimiento de inferioridad experimentando el control de un entorno
  • Condicionar de algún modo la discusión futura
  • Reducir o eliminar la participación de otros usuarios
  • Hacer perder el tiempo a los demás a cambio de una pequeña fracción del suyo

La única terapia contra un troll es identificarlo lo antes posible como tal, y después ignorarlo: cada mensaje en su contra incrementa lo que llamamos el placer del troll. Normalmente, en los foros o en Usenet se dice “no déis de comer al troll”, refiriéndose a que la mejor manera de acabar con ellos es, sencillamente, no hacerles caso. Aunque hay que reconocer que en ocasiones es tarea difícil… Así que nos vamos a despedir con una norma: prohibido dar de comer al troll. Téngalo presente: están entre nosotros :-P

UUUUHHHGGG-rrr!

RRRRRR! RRRRRR! Uhhrrrrh aaahrrr GGG-hhh! uuuuuh! (LLRRRR, gggggrrr hrnnnn) HHHHggggRR UUüHHHGGG-rrrr! UüüHHHGGG-rrrrRRR! GGLL LLRRRR-rrrRRR! GGLL -rrrRRR! RRRRR aar GGllrrrrnnn uhnnnn:

chewy.jpg

GGLL LLRRRR-rrrRRR! uuuuuuuggggh LLRRRR-rrrRRR! aar GGllrrrrnnn uhnnnn! Uaaaaa urrrrrrrrrrrrghhh rhhhhh GGLL uhhhhh rrrrrrrrrn! hhrrrrrrrr aaaarrrrghhhh GGGrrr! RRRRR iuuur:

UUUUHHHGGG-rrr!

RRR! aar GGllrrrrnnrrrrrr… ;-)

En lo mas alto (o casi)

Queridos lectores:

Tengo la inmensa satisfacción de comunicarles que Segmentation Fault ha alcanzado, en su primer mes de existencia, el valor 2 en PageRank de Google (El “Google PageRank” es el sistema que usa este buscador para medir la importancia de una web)

Además, estos últimos días hemos registrado registros de visitas nunca soñados: éste es el gráfico correspondiente a estos últimos dos días (y la cosa aumenta…):

grafico4.jpg

Es una victoria modesta, pero toda se la debo a ustedes… En especial, merecen mi humilde gratitud quienes han enlazado a este blog (según mis informes…)

(En la próxima actualización de la plantilla enlazaré a quienes aún no estén en la lista de vínculos…)

Tampoco me puedo olvidar de Misslucifer que siempre esta ahí en los momentos difíciles (que son muchos). Y como no, mi agradecimiento por sus comentarios a Mikel de Tellagorri, Shora, Enrique, Spiffy, SrDGato, emili, Ricardo, JuaNMa, Illaq, SquaLl, Tronfi y manulit (seguro que me dejo a alguien por mencionar o enlazar, si me informan de ello les añadiré inmediatamente)

Y a todos quien han visitado alguna vez esto…

¡GRACIAS!

El límite computacional y los huevos fritos

Un comunicante anónimo nos dejaba en este post el siguiente comentario:

¿Puede alguien dar más detalles sobre el límite computacional este? Jo, esto ha sido como hace años cuando un profe nos dejó tirados con el teorema de Godel y los límites del conocimiento humano pero no nos quiso dar detalles para no complicarnos la vida … :)

Y como lo prometido es deuda, vamos a profundizar un poco en el tema, ya que en el anterior post sobre el límite computacional sólo hablamos, en realidad, sobre la Máquina de Turing.

Imaginemos una lista donde pudiéramos incluir todos los problemas del Universo (sí, se que no parece fácil). Ahora recordemos que los computadores son máquinas que resuelven problemas. Esto último puede resultar extraño, pero los ordenadores no se inventaron para jugar al buscaminas, sino como grandes máquinas calculadoras… ¡qué cosas!

Sabiendo todo ésto, podemos preguntarnos: ¿qué problemas de nuestra lista podremos resolver con un ordenador? De hecho, es una pregunta muy buena: si puedo saber a priori que no puedo resolver computacionalmente un problema, me evitaré el esfuerzo de intentarlo (salvo si me gusta trabajar en vano). A los programas que pueden resolverse computacionalmente los vamos a llamar, en adelante, problemas computables.

Bien, si separara en otra lista los programas computables de los que no lo son, lo primero que veríamos es que el conjunto de los computables es mucho menor que el otro. Si lo representáramos como un huevo frito sería una cosa así:

lc01.jpg

El límite entre la yema y la clara es precisamente el famoso límite computacional… (estoy impresionado por lo geeky de mi propia exposición…) Ahora bien, en la informática, ¿dónde se encuentra exactamente ese límite? Esto quizá sea más complicado, así que vamos a dar algunas ideas.

Un algoritmo es una secuencia de instrucciones que un ordenador comprende. O sea, del estilo de “abre el menú de inicio”, “conéctame con Internet”… cosas del estilo, nunca le decimos al ordenador “¿qué piensas sobre mi peinado esta mañana?”, sólo le mandamos que haga cosas (¡qué vida más dura!). Para poner un ejemplo, éste el algoritmo para freír un huevo:

  1. Calienta aceite en una sartén.
  2. Rompe el huevo.
  3. Vierte el huevo en la sartén.
  4. Espera hasta que esté hecho.
  5. Retira la sartén del fuego.
  6. Extrae el huevo de la sartén.

Los ordenadores son muy buenos para hacer este tipo de acciones, pero desgraciadamente son las únicas que pueden hacer: los problemas que un ordenador puede resolver (los computables, o la yema del huevo) son los que tienen un algoritmo. Con “problemas que tienen un algoritmo” quiero hacer referencia a los problemas resolubles mediante la aplicación de un número finito de pasos sencillos.

Y si lo piensa se dará cuenta: nunca le dirá a su ordenador “haz eso, ya sabes, lo del otro día” o “¿qué opinas sobre Kant?”. Y si se lo dice, jamás podrá obedecerle: son dos ejemplos del inmenso mundo de problemas que no tienen algoritmo; esto es, que no pueden resolverse en un número finito de pasos concretos. No obstante, sumar dos números puede hacerse en un número muy pequeño de pasos, de la misma forma que buscar una palabra en un texto… Para ilustrar esto último, he revisado la imagen del huevo:

lc02.jpg

Ni más ni menos. Y (casualidades de la vida), todos los programas argorítmicos tienen una máquina de Turing que los resuelve. Y viceversa: todas las Máquinas de Turing expresan soluciones algorítmicas. Como apunte extra, diré que ésto se conoce como la Tesis de Church-Turing

Espero haber esclarecido el tema del límite computacional que tanto intriga a nuestros lectores… la verdad es que uno no se cansa nunca de revisar estas cosas, y siempre está bien recordar que, en contra de lo que nos venden, los ordenadores no valen para todo… Ah, y si se lo están preguntando, sí: un ordenador podría freír un huevo :-)

Sobre la memoria (humana)

Este no es mi campo, pero mis colegas de CPI y de Tempus Fugit me van a permitir la intrusión… Hace unos días hablábamos sobre la inteligencia artificial, y de paso hacíamos algunas reflexiones sobre la mente. Lo cierto es que es un tema fascinante, que nos recuerda lo lejos que estamos en la IA de la inteligencia humana…

El pasado martes 21 (bueno, en realidad el miércoles 22) se emitía un nuevo programa de Redes en La 2. El tema: la memoria. Impresionante.

Eduard Punset entrevistaba, en la primera parte del programa, a Douwe Draaisma, profesor de historia y psicología en la Universidad de Groningen, y una parte de la entrevista llamó poderosamente mi atención (por cierto, estará disponible dentro de una semana en la web del programa)

Draaisma explicaba por qué a veces percibimos que el tiempo se dilata. Yo he tenido un accidente de circulación sin importancia, y recuerdo esa sensación de que todo sucede más despacio. Por lo visto, la velocidad a la que transcurre el tiempo es algo subjetivo, relacionado con nuestra actividad mental… se supone que en los instantes previos a la colisión, mi cerebro buscaba soluciones a toda velocidad, y esa aceleración de mis procesos mentales provoca que el tiempo pase más despacio.

Una consecuencia de este hecho parece ser que nuestra vida pase ante nuestros ojos cuando nos acercamos a la muerte de forma traumática… el profesor comentaba que es un hecho del que hay suficientes datos a lo largo de la historia como para suponer que es cierto.

dejavu0.gif

También aportaba una explicación (una de las más razonables desde mi óptica) al fenómeno del Déjà vu. Según Draaisma, este fenómeno se explica por una falta temporal de concentración: es decir, estamos en una situación, y por un instante, desconectamos y pensamos en otra cosa… cuando volvemos, tenemos la impresión de que ha pasado mucho tiempo, porque nuestro cerebro almacenó la situación como un recuerdo reciente…En el transcurso de la entrevista se hicieron más reflexiones… ¿por qué el tiempo pasa más lentamente en la juventud y se acelera segun pasan los años? todo fue tan interesante que no me siento capaz de explicarlo ni de resumirlo. Pero no se pierdan la entrevista cuando la publiquen, y si pueden (la hora es prohibitiva) vean el programa…

… es fascinante :-)

Consultorio SF (III). De proxies y enigmas

Nuestra atenta lectora Misslucifer (¡gracias!) nos enviaba por correo electrónico la siguiente consulta:

¿Cúal es la diferencia entre un servidor proxy y un cortafuegos? Es que aunque en principio lo tenía bastante claro, ahora siempre me lío un poco.

Y como la cosa va de proxies, cortafuegos y demás fauna, vamos a ver primero de qué hablamos y luego entenderemos mejor en qué son diferentes…

Sobre proxies

Es curiosa la enorme confusión que existe sobre el término proxy… Como en general, nadie parece ponerse de acuerdo en su definición exacta vamos a inventarnos una: un proxy es un dispositivo físico o un programa que sirve como intermediario entre ordenadores. Lo más normal es que medie entre una red local y el gran Internet. Quizás a muchos les extrañe eso de que un programa pueda hacernos de proxy, pero en redes las fronteras entre lo físico y lo lógico son bastante difusas: un ordenador con el programa adecuado puede usarse para lo que se quiera. Hasta de proxy :-)

proxy_grande.jpg

O sea, un proxy es un ordenador que se interpone entre dos, simplificando al máximo. Lo normal es que el proxy se interponga entre redes de varios ordenadores, si refinamos un poco más. Ahora bien ¿para qué queremos un proxy? por ejemplo, para compartir una conexión a Internet con varios usuarios: conectamos el proxy a la línea y configuramos a los clientes para que pasen por éste equipo cuando uno se quiera conectar a Internet. Hecho.Ahora imaginemos que diez ordenadores comparten un proxy para salir a la red. Un usuario carga una página web (se le envía desde donde esté almacenada). Y otro carga la misma página un minuto más tarde, así que vuelve a ser enviada… se nos puede ocurrir que el proxy almacene una copia de las páginas recientemente visitadas, y envíe esa copia a los clientes cuando una web concreta sea solicitada. Hay muchos proxies que cumplen esta función, y se conocen como “Proxies-caché”.

Respecto a esto último, muchos usuarios consideran que supone perder intimidad porque se puede saber qué páginas han solicitado. Pero para eso no hace falta un proxy ni siquiera, así que sus temores, aunque tengan fundamento, no deberían tener a los proxies como blanco.

Con los proxies se pueden hacer muchas cosas más: podemos configurarlos como filtros, para que, por ejemplo, sólo puedan verse páginas web y no usar el Emule (o similares :-P) Esto es lo que ha hecho que se les confunda con los cortafuegos.

Sobre cortafuegos

Los cortafuegos son dispositivos físicos o lógicos (programas) que pueden utilizarse para proteger uno o varios ordenadores de amenazas externas. Normalmente, se protege la red local de lo que pueda llegar por Internet.

illustr.jpg

Así, el administrador de la red marca unas pautas al cortafuegos para que éste sepa qué trafico bloquear, y cual permitir. De este modo, las peticiones potencialmente malignas son ignoradas y las necesarias son permitidas. Por ejemplo, un firewall permitirá que se establezca una conexión entre nuestro ordenador para ver una página web, pero bloqueará una conexión si ésta es solicitada por un programa sospechoso. Los mecanismos que utilizan los cortafuegos para distinguir el tráfico “bueno” del “malo” son algo más complicados, y no vamos a entrar en ellos.

Basta con que nos quedemos con que el cortafuegos se interpone entre nosotros y el mundo hostil, dejando pasar o prohibiendo las conexiones que se quieran establecer entre los dos.

Encuentre las 8 diferencias

Y ahora que sabemos qué es cada cosa, toca aclarar las diferencias… normalmente el firewall es un programa, mientras que el proxy es un ordenador. Pero sólo normalmente. En general, el proxy se encarga de tramitar las peticiones de varios usuarios y hacerles llegar las respuestas. Por su lado, el cortafuegos simplemente protege uno o varios ordenadores prohibiendo conexiones en base a su contenido, su procedencia, su tipo, etc.

De todos modos hay que decir que la mejor protección y fiabilidad nos la da la combinación del firewall con el proxy. ¡Así me lo aprendí yo!

La programación orientada a objetos

Si yo tuviera que vender mi gato (al menos a un informático) no diría que es amable y autosuficiente y que se alimenta de ratones: más bien argüiría que está orientado-a-objetos?

Roger King

La programación orientada a objetos (POO) es la tecnología emergente más importante en cuanto a desarrollo de aplicaciones. Supone una auténtica revolución en la forma de plantear la construcción de aplicaciones desde un punto de vista ingenieril y aporta infinidad de ventajas sobre los esquemas estructurados tradicionales.

Es algo muy complicado de explicar a quien tenga la fortuna de no haber tenido que desarrollar un programa… sólo me resultaba simpática la cita, por la obsesión que tenemos los aspirantes a ingeniero con la orientación a objetos.

Si a alguien le intriga mucho el tema, puedo tratar de explicarlo, pero no prometo milagros. El inicio de semana está siendo verdaderamente duro, sean tan indulgentes como hasta ahora… :-P

Curiosidades en torno a Java

Seguro que navegando por estos mundos, se ha cruzado más de una vez con un viejo amigo llamado Java. O al menos le sonará su nombre. Y sino, yo se lo aseguro: se han encontrado en más de una ocasión…

java_logo.gifJava es el nombre de una de las tecnologías más destacadas de la última década: se trata de un lenguaje de programación ¿Un qué? Un lenguaje de programación es una “lengua” que es comprensible para los ordenadores… para entendernos, es como el inglés o el francés, sólo que muy formalizada y sin ambigüedad (ya sabemos que las máquinas son muy poco hábiles… )

Hay muchos motivos que han propiciado que Java sea hoy tan importante y tan reconocido: el más importante, a mi parecer es la portabilidad: un programa hecho en Java puede ejecutarse en Windows, Linux y MacOS sin hacer modificaciones, y eso siempre está bien… Tambien es muy seguro, bastante robusto, multitarea y un montón de cosas… pero sobre todo, es dinámico (no se sabe qué demonios es eso, pero todos los productos tienen que ser dinámicos para vender :P)

Lo más sorprendente es que Java fue diseñado como un lenguaje para programar electrodomésticos: Allá por 1990, Sun pretendía fabricar electrónica de consumo dotada de ciertas capacidades extra… (viendo los anuncios, no se debieron de equivocar tanto…). Fruto de los esfuerzos para llevar a cabo aquella nueva raza de lavadoras y frigoríficos superdotados nació el Java. De hecho si se fijan bien, las características que lo han hecho famoso (portabilidad, interpretado…) encajan con la idea de ejecutarlo sobre electrodomésticos…

El caso es que la idea de Sun fracasó. Y es que estos aparatos resultaban excesivamente caros… no sé qué funcionalidad exacta ofrecerían, pero está claro que no compensaba su elevado precio. Así que la idea se desechó. Pero el esfuerzo de desarrollo del lenguaje Java perduró, y se decidió intentar rentabilizarlo portándolo a ordenadores convencionales… ¡y la jugada les salió perfecta! En 1995 el navegador Netscape 2 incluyó un intérprete para Java, lo cual contribuyó definitivamente a popularizarlo en Internet… ¡la nueva era había llegado!

Por cierto, que su singular logotipo y el nombre se deben a que cerca de la sede donde trabajaba el equipo de desarrollo había una cafetería llamada “Java”, donde pasaron muchas tardes (muy a la española, vaya…) los creadores de este lenguaje. De ahí que todo en Java está relacionado con el café… El mundo es friki ;-)