Un sitio de Noticias, Discusiones, Software y miscelánea. ;-) enjoy.-

viernes, agosto 04, 2006

¡¡Cambio de Hospedaje!!

Asuntos Varrojeros se muda!!

A partir de este momento los nuevos Posts serán publicados bajo el ala de Linux Uruguay, en http://varrojo.linuxuruguay.org.

Gracias todos quienes se toman el tiempo de pasar cada tanto a revisar que hay de nuevo y esperamos segurlos viendo en nuesto nuevo local.

Saludos,

Varrojo.-

martes, agosto 01, 2006

Budismo y el Software Libre

Poetry and Buddha: Diez Analogías entre el Budismo y el Software Libre

Increible, diez análogías que muestran el paralelo entre el Software Libre y el Budismo. Muy rápido de leer y profundo, 100% recomendable.

sábado, julio 22, 2006

Ingeniería del Mal

En una escalofriante noticia para todos los usuarios de Software Antivirus, diversos estudios indican que el 80% del Malware, es decir Software malicioso como virus, troyanos, Spyware, etc, vencen a los productos más populares.



La noticia la leí en zdnet, mientras que la nota original puede encontrarse aquí.

Para poner las cosas en perspectiva, que un sistema antivirus sea vencido por el 80% del Malware implicaría, por ejemplo, que de cada 10 virus únicamente se puede evitar que 2 hagan daño, los otros 8 violan la "seguridad".

Esta devastadora cifra se debe principalmente a que cada vez los diseñadores de Malware son más capaces, al punto de que la calidad del código promedio es comparable con la esperada de un Ingeniero de Software, más que con un sencillo programador casero. A esto se suma el hecho de que muchos de estos Ingenieros del Mal (ware), previo a liberar sus insectos, acostumbran descargan versiones trial de los Antivirus más populares y para probar sus bichos, haciendo las mejoras necesarias para lograr un mejor engaño.

Como era de esperarse, liderando en el ranking, encontramos al Norton Antivirus de Symantec. Luego le siguen los productos de McAffe y Trend.

No tan sorprendentemente, el Antivirus Ruso Kaspersky, tras ser sometido a las mismas pruebas que los anteriores, logró bloquear el 90% del Software malicioso, lo que implicaría que de cada 10 virus es inmune a 9.


viernes, julio 21, 2006

Abstrayendo Yaks :: Yaks Server

Este Post se relaciona mucho con el anterior, si bien no es necesario leerlo para comprender los conceptos relacionados con el presente.

Resulta que para una materia del semestre anterior (7mo) se nos pidió trabajar sobre un simulador de robots llamado Yaks. A modo rápido, lo bueno de Yaks es que permite desarrollar y ejecutar agentes para el robot Khepera, en forma completamente gratuita, pero presenta dos limitaciones bastante importantes: 1) únicamente puede ser programado en C/C++ y 2) el código del simulador es mucho menos que prolijo.

Los principales problemas de estas limitaciones son:

El imponer el lenguaje fuerza a que los alumnos deban tener algún primer contacto con él, lo cual es bueno, pero en general esto no es bueno, especialmente tratándose de C/C++. Por desgracia me llevo el concepto de que mucha gente sintió que el lenguaje causaba más problemas de los que solucionaba.

Los problemas relacionados con tener que lidiar con código escrito por otra persona del otro lado del mundo, el cual es especialmente embrollado y prácticamente no tiene documentación alguna.

Fue a raíz de estos motivos que varias veces comentamos lo bueno que estaría desarrollar un tipo de interfaz que permitiera ocultar los detalles del simulador a los desarrolladores.

El resultado de esto es en lo que he estado trabajando en los últimos días: Yaks Server, básicamente una API desarrollada en C++ que permite abstraer los detalles del simulador a través de una interfaz de BSD Sockets. Yaks Server crea una capa de que “cubre” el simulador, simplificando la tarea de desarrollo.

La interfaz presenta 3 primitivas:

  • Conectar: permite conectar un número cualquiera de clientes, cada uno controlará un robot distinto.
  • Enviar Sensores: envía a cada cliente las percepciones actuales correspondientes a su robot.
  • Recibir Velocidades: recibe de cada cliente la velocidad a asignar a la rueda izquierda y derecha.

Desde el punto de vista de los clientes, la situación es muy similar, únicamente que el flujo de información es al revés, enviando velocidades y recibiendo percepciones.

Las grandes ventajas que el agregar esta capa de abstracción nos proveen se basan en que los desarrolladores no deberán previamente estudiar el código del simulador para poder trabajar con él y, además, la API del lado del cliente puede ser desarrollada en cualquier lenguaje (que sea capaz de hacer uso de las funciones de red), por lo cual los clientes pueden ser desarrollados en una gran variedad de lenguajes.

Si bien se podría alegar que esto es perjudicial, yo creo que a la larga termina siendo beneficioso. Pienso que los malos hábitos que uno genera cuando aprende a las apuradas son, en general, los más difíciles de corregir. En la línea del Post anterior: C/C++ no es un lenguaje que pueda aprenderse bien a las apuradas.

jueves, julio 20, 2006

Aprendiendo C++ Por Cuenta Propia


Hola, ¿cómo han estado? En esta oportunidad aprovecho para escribir acerca de los lenguajes C y C++.

C y C++... todos en el ámbito informático han de haber oído hablar de ellos alguna que otra vez. Estos dos lenguajes fueron y son muy importantes dentro del marco de la programación de sistemas.

Muchísimo Software está escrito en y para estos lenguajes, sin embargo creo que en el ámbito académico cada vez se le esta atribuyendo menos importancia. Esto es realmente un problema, ya que implica que cada año se recibe más y más gente poco o nada capacitada en uno de los lenguajes más importantes para la ingeniería de sistemas.

La gente alega que hoy en día cada vez se tiende a ir a más alto nivel y que conocer un lenguaje que brinda el poder de hacer las cosas uno mismo a bajo nivel es realmente una pérdida de tiempo. Sin embargo creo que esta gente es consolidada principalmente por quienes piensan que la ingeniería en informática es acerca de escribir aplicaciones tipo para empresas, como sistemas de gestión de clientes, atención al público, etc.

La última vez que me fijé, la idea de la carrera era entrenar científicos, no programadores. Un ingeniero debe poder dominar la herramienta que sea necesaria para resolver un problema. Muchos lenguajes de hoy en día están orientados a hacer las cosas más fáciles, y esta bien usarlos cuando es apropiado. No obstante, hay casos en que esto no es así. No existe un lenguaje que sea bueno para cualquier tipo de problema, ni siquiera C++.

Yo pienso que la forma apropiada de aprender C++ no es a partir de tutoriales en Internet. Así mismo, pienso que no es un lenguaje que pueda ser aprendido de apuro. He visto mucho código desarrollado en el marco de estos dos puntos, tomando como punto de partida lo que a alguien se le ocurrió escribir por ahí, y lleva a resultados un tanto espantosos. C++ es educación. Se trata de un lenguaje muy maduro (recordemos que esta entre nosotros desde 1983) y debe empezarse por un libro. No importa que libro sea, mientras te sientas cómodo leyéndolo. Muchos libros empiezan por partes complicadas, otros por partes más sencillas. Algunos son más teóricos, explicando el "funcionamiento interno" del lenguaje, mientras que otros son más prácticos.

Lo importante es abrir la mente, tomar un libro y sentarse a aprender. Sí, quizás sea más difícil que otras cosas que existen hoy y quizás no veas utilidad inmediata de aprenderlo, pero puedes considerarlo como una instancia más en el aprendizaje de como las computadoras funcionan. No tiene sentido esconderse tras un único lenguaje pensando que es lo único que vamos a precisar, porque no es cierto.

"Si tu única herramienta es un martillo, todos tus problemas los vas a ver como clavos."

sábado, julio 15, 2006

Zindane el Cabezón

Navegando por el Teatro Mágico me encontré con un nuevo jueguito!!
Les paso la dirección, requiere el plugin del Macromedia Player.

Enjoy.-

http://widelec.org/zidane.html

 
I am nerdier than 88% of all people. Are you nerdier? Click here to find out! The Stupid Quiz said I am "Pretty Smart!" How stupid are you? Click here to find out! My computer geek score is greater than 83% of all people in the world! How do you compare? Click here to find out!