Cabo de San Vicente

May 9, 2008 – 11:58 pm

El pasado fin de semana fue grande. Mi novia me regaló por mi cumpleaños un viaje al Algarve portugués. Toda una sorpresa (ella siempre hace todo lo posible para que no me entere de nada hasta última hora) así que cogimos el coche y nos pusimos en marcha, pasamos por Tavira, Albufeira, Portimao y el Cabo de San Vicente.

Pablo en el Cabo de San Vicente
Un lugar para el recuerdo: Albufeira. Preciosa ciudad, su ambiente turístico contrasta con un claro pasado humilde y pesquero, ciudad llena de cuestas los edificios dan directamente al mar desde la altura de sus acantilados, entre ellos una pequeña playa que está directamente conectada al centro de la ciudad. Sublime.

Aprovechamos también para probar la gastronomía, salmón y dorada a la plancha, bacalao dorado… riquísimos y el premio para: “sartenada de marisco a la Algarvia”, una especie de guiso de almejas pero también con mejillones, gambas y langostinos… mmmm

Lo mejor de todo mi muca, un encanto, como siempre muchas gracias por ser como eres.
Te quiero mucho ! ^_^

Ahí os dejo esta foto. Desde la fortaleza de Sagres se vé al fondo el cabo de San Vicente, el punto mas occidental de la Europa continental.

Euphoria: amazing engine for natural movement simulation in a 3D World

April 27, 2008 – 4:23 pm

Absolutely impressive results. That company has achieved a very realistic results simulating (on the fly) humans natural movements in any situation. Video games animation designers won’t have to create each character’s animation at design time (at least not all), from now on they will be able to enable the “automatic control” of the character thanks to Euphoria enginee. A very cool merge of artificial intelligence technicals and physics engine.

Take a look:

You need to a flashplayer enabled browser to view this YouTube video

The oficial website of euphoria is: www.naturalmotion.com/euphoria.htm#video

Video games industry is much more that leisure time, it is being one of the most important way for advance in some computer science area. As time goes less things surprise me in the computer science world, but this is one of them.

Sooner or later other industries like robotics will use these technical and theoretical advances from the video games industry. Since that robotics and automatic control is one of my main interests I will follow them nearly.

Take another look to this robotic video.
Have fun.

You need to a flashplayer enabled browser to view this YouTube video

Google Summer of Code 2008: I have been accepted!

April 22, 2008 – 6:21 pm

I am excited.

The goal is provide a linq binding for sqlite in a maintainable/scalable way, a suit of tests and enough documentation for understand the work in the future.

Linq project includes O/R mapper capabilities in a similar way that Hibernate or NHibernate does (though are some substantial differences) so like any O/R mapper there are a internal and generic core for dealing with databases and specific logic for each database engine(usually known as binding, provider or controller): postgreesql, mysql, oracle, ms sqlserver. My GSoC objective is do implement that specific functionality for the Sqlite database engine to the Mono Project’s Linq implementation .

Those of you that don’t know what is linq have to know that is a project for the .NET platform that include O/R mapper capabilities and extends some syntactic features in C# and Visual Basic programming that bring near that languages to the functional and declarative programming (lambda expressions, query expressions, extensions methods, query protections into anonymous struts… and others cool features specially in static typed programming languages)

The start point DBLinq. They that want know what’s that, go to: http://code.google.com/p/dblinq2007/

Also congratulations to Christian López Espinola and Rafael Vargas also accepted in GSoC 2008 in ArgoUML project and Minix respectively. They are good friends and job partners, congratulations again!

Regards.

This year I’ll try to participate in GSoC

April 5, 2008 – 3:01 pm

Two years ago I tried it too, sent 6 submissions to the Mono Project and another one for JMARs project. Unfortunately I was not chosen. Last year didn’t submit because thought that probably would happen the same, however  two work parters and good friends were chosen in two GSoC Projects: Marcos Cobeña at The Mono Project and Christian López at ArgoUML.

In the short GSoC history four University of Seville’s students have participated in GSoC with nice results. Many partners as Rafael Vargas, Christian López and David Ventura will try again this year and hope that everyone of them have enough luck for show their value to the community.

This is my last year of studies so it is my last opportunity. I’ll wish submit on IA, 3D-programming and The Mono Project
My favorite mentors organizations are:

Singularity Institute for Artificial Intelligence:  http://code.google.com/soc/siai/about.html
Crystal Space:  http://www.crystalspace3d.org/main/Main_Page
The Mono Project: http://www.mono-project.com

Of course one of my targets is find a project where follow contributing and helping the community after GSoC.Good luck and have fun!

Hola Wordpress

March 30, 2008 – 5:49 pm

Llevaba un año sin escribir nada y tengo que hacer algo para motivarme, por eso necesito un wordpress en mi propia casa, en mi servidor, que pueda controlar y personalizar. A partir de ahora este es mi blog. http://geus.wordpress.com queda descatalogado, aunque no descarto periodicas exportaciones de los datos de este servidor.

Wordpress en casa te permite personalizar con gran cantidad de plugins tu blog. Mucho mas que podrias hacerlo en www.wordpress.com, eso sí, luego existen otros inconvenientes.

El primer trasteo ha terminado con la destrucción de mi primer mensaje (parecido a este) y que el pobre penyaskito había comentado. :-)

Saludos.

Lo que rodea a LINQ

April 16, 2007 – 1:00 am

Ya tenemos LINQ hasta en la sopa. Un par de tips:

Al parecer se está trabajando en una implementación para LINQ orientada al procesamiento paralelo: PLINQ.

Evidentemente no todo es paralelizable, pero quizá en la mayoría de ocasiones los bucles lo son y por tanto las querys de LINQ también lo son, en esos casos sería interesante poderlo declarar de forma explícita.

Por lo que he visto sería algo muy sencillo, parecido a esto:

(from p in People
 join c in Customers
 on p.Name equals c.Name
 select new {p.Name, p.Age}).AsPararell();

Imaginad que People es una fuente que viene de un fichero XML y Customers viene de una base de datos, operaciones I/O que de forma intrínseca traen esperas de los hilos de ejecución, paralelizar ambas mejorará el rendimiento en la mayoría de ocasiones.

Otra que lleva mas tiempo es BLINQ: generación de vistas y controlador dado un modelo de datos. (Ojo! lo interesante es la Vista(páginas asp.net)) algo similar al Scaffold de Ruby on Rails.

Es increíble el camino que está tomando el equipo de c#, están siendo muy atrevidos y la verdad es que según mi opinión lo están haciendo muy bien, c# su aspecto hoy es más dinámico y declarativo.

De sobra es sabido que los lenguajes fuertemente tipados tienen muchísimas ventajas, dado su rigor son insuperables cuando nos encontramos con proyectos de gama media y alta en complejidad y tamaño.

Sin embargo los lenguajes dinámicos siempre han destacado por su altísima productividad (RAD) para tareas concretas en módulos pequeños y que no requieran mucha complejidad, mas hoy con lenguajes
tan potentes como Python, Ruby, Groovy(que es una gran promesa, pronto oiremos hablar de el hasta en la sopa, también sobre GRails)

Lo que es sorprendente es que hoy día se compare su agilidad y potencia sintáctica, su mayor virtud con LINQ, hoy día podemos encontrar en Internet comparativas de Ruby, Python, Groovy y LINQ!!!

Puede que c# sea un antes y un después en los lenguajes de programación.

America’s Cup: Simulador de seguimiento

December 31, 2006 – 7:17 pm

El pasado Noviembre Microsoft tuvo negociaciones con Alcatel(Patrocinador externo de la America’s Cup)  con intención de promocionar su tercera generación de productos y tecnologías de desarrollo junto con Windows Vista.

Microsoft llevaba muchas suculentas ofertas, pero como llegaban tarde (empieza en junio) no podían ir con las manos vacías por lo que nos encargó que le hiciéramos una pequeña demostración para un simulador 3d para el seguimiento de las carreras en tiempo real, recogiendo datos por gps.

Nos pusimos manos a la obra y en una intensa semana y media conseguimos resultados bastante interesantes.
You need to a flashplayer enabled browser to view this YouTube video

Lo que cabe destacar mas es la mezcla de técnicas y tecnologías que hicimos. Se trata de una aplicación Windows.Forms, con un control de Windows Presentation Foundation empotrado (barra lateral) y otro control Windows.Froms cuyo pintado funciona con DirectX9.0. Es interesante ver que algunas de ellas se consideran oficialmente incompatibles (WPF y DirectX)

Por supuesto los gráficos son mejorables, pero solo es cuestión de tiempo si el proyecto completo sale a delante. Utilizamos Jad Engine como base para realizar la aplicación, la experiencia fue reconfortante.

Otros aspectos que intentamos esforzarnos fueron:

Camaras en primera persona, movimientos suaves. Intefaces elegantes y con efectos llamativos, vídeos con streaming en tiempo real que le diera gran flexibilidad(carrera real, publicidad, comentaristas, documentales de la tripulación…).

En aplicaciónes 3D lo que primero suele llamar la atención son los gráficos estáticos (modelos, fondos etc..) pero la dinámica aunque pase mas desapercibida es imprescindible y normalmente de mayor dificultad que los gráficos estáticos.

No es trivial conseguir un movimiento realista dado una lista de coordenadas, no pueden seguir los puntos en linea recta, deben ser curvas, los barcos deben tener un movimiento de pandeo en las curvas mas cerradas, y deben ir mas rápido entre dos puntos mas separados ya que los tiempos dados se presuponen periódicos.

Para solucionarlo realizamos una implementación de las curvas de bezier, que era construida con la lista de coordenada, dicha curva nos suministraba en cada instante, la posición, la dirección y el pandeo que debía tener cada barco en cada instante de tiempo. Para calcular las rutas implementé un pequeño editor que posteriormente nos generaba un xml con la ruta lista para insertar en el simulador.

PathDesigner

Saludos y Feliz Año.

Comando nmap

December 9, 2006 – 3:56 pm

Pues, bastante tiempo llevo topándome con el deseo buscar los host que hay en una red desde bash, como son pequeños problemillas al final nunca lo miro. Esta vez lo apunto.

Comando nmap : ver todos los hosts de una red, por ejemplo mi red local de mascara de red de 24 bits.

geus@GeuS-Server:~$ nmap -sP 192.168.1.0/24  at 2006-12-09 08:15 CET

Host 192.168.1.1 appears to be up.
Host 192.168.1.34 appears to be up.
Host 192.168.1.35 appears to be up.

Comando nmap para ver información de los puertos abiertos y el sistema operativo de un host

geus@GeuS-Server:~$ sudo nmap -sS -O 192.168.1.0/24 Starting Nmap 4.10 at 2006-12-09 08:16 CET
WARNING: RST from port 21 — is this port really open?
WARNING: RST from port 21 — is this port really open?
WARNING: RST from port 21 — is this port really open?
WARNING: RST from port 21 — is this port really open?
WARNING: RST from port 21 — is this port really open?
WARNING: RST from port 21 — is this port really open?

Insufficient responses for TCP sequencing (0), OS detection may be less accurate
Interesting ports on 192.168.1.1:
Not shown: 1676 closed ports
PORT STATE SERVICE
21/tcp open ftp
23/tcp open telnet
80/tcp open http

MAC Address: 00:13:49:19:C0:9D (ZyXEL Communications)
Device type: broadband router
Running: ZyXel ZyNOS, Intel embedded
OS details: ZyXel Prestige 791R, ZyXel ZyNOS based Broadband router (ZyNOS) or Intel Express ISDN router

Obtener el angulo dado un vector

December 7, 2006 – 10:03 pm

Pues claro, la respuesta típica es la arcotangente! Pero bueno… los resultados no se obtienen entre 0 y 2Pi, sino entre -Pi /2 y Pi/2, por lo tanto necesita algunos ajustes. Me he topado varias veces con el problema y siempre se me olvida, al final, algo que debería resolver de inmediato acaba consumiendome un cuarto de hora de tiempo.

Gimbal Lock

Programá ta tirao!

December 6, 2006 – 1:13 am

Todo el mundo puede ser informático, por supuesto, no se trata de una ingeniería, es algo más que evidente ¿no? Hasta mi abuela utiliza ya el ordenador, además todo el mundo saben que ya no hacen falta informáticos porque los ordenadores ya lo hacen todo.

Explicaré porqué todos llevamos un informático dentro y mostraré que los informáticos deben ser relegados ha hacer páginas web, cambiar tonels de impresoras, eliminación de virus y en un caso extremo la vacunación de las computadoras, pero siempre en presencia de un teleco o veterinario ya que el uso de la jeringuilla puede ser peligroso. Cuatro Capítulos:

  1. Programar es fácil.
  2. Dirigir un proyecto software es fácil.
  3. El Hardware que se da en informática es tan sencillo como el parbulario.
  4. Los informáticos no entienden la complejidad de lo que aprenden los Teleco.

 

Demostraré que en Europa y el Mundo están equivocados y que son unos ignorantes. La informática no debe ser reconocida como una disciplina própia, sino que la poca materia que se imparte, debe ser separada entre ingenierías de Mayor calado como Teleco o Industriales. Por supuesto debemos apoyar a nuestro querido gobierno para llevar a cabo las reformas planeadas.

Programar es fácil:

Un amigo informático me pregunto algo de que si sabía algoritmia?.
complejidad de algoritmos?

Yo que soy teleco, muy orgulloso le respondí que yo sabía C y que si era capaz de resolver una integral triple evidentemente hacer una función en C no podría ser tan difícil, y el tipo encima me responde con mala educación diciendo que no era cociente de que un simple programita mal hecho con complejidá nose que puede tardar millones de años con una tablita de 20 o 30 huequitos, por muy potente que fuera el procesador…

El tio ya se picó y empezó a decirme que si sabía algo de estructuras de datos? ¡Yo con listas lo hago todo y eso es un struct con un puntero a otro struct, mu fácil!

Y seguia…¿Eres capaz de almacenar información compleja y tratarla de manera eficiente? Que ocurre cuando una estructura de datos tiene millones de elementos, que ocurre cuando se accede de manera concurrente? ¿sabes algo de Computabilidad? Eres capaz de hacer todo esto de una forma, flexible, potente a la vez de escalable y comprensible? Sabes algo sobre patrones de diseño?….

En fín por eso nunca contrataré a un informático en mi empresa, hacen de lo fácil un mundo, solo saben traer problemas. Mejor contrato a un Teleco que se está mas callado y hace mejor código, eso sí por poco tiempo ya que un ingeniero de tal categoría no merece el puesto de un picacódigo.

Lo que mas me rio es de la base matemática de los informáticos, bua! cosas realmente inútiles: teoría de grafos, matemáticas discretas, estadísticas. Encima me dicen que son muy necesarios que si para seguridad que si criptografía…¿pero quien va a ponerse a descifrar una contraseña?¿además quien va a querer atacarme? Yo no tengo ni ningún enemigo.

Me preguntaron si tenía alguna experiencia con otros lenguajes: c++, java, prolog, sql, lisp, html, clips, php, asp, xml, c#, visualbasic… Yo sé C que es el lenguaje mas potente y mejor, el resto seguro que no hacen tanto y además serán muy fáciles.

Estar en un mercado que tus conocimientos tecnológicos se quedan obsoletos en tres meses de descanso no es tan complicado como dicen, el problema es que los informaticuchos se dedican a aprener de memoria como papagayos y no comprenden nada, a mi no me hace falta saber ninguna tecnología, ni experiencia con tecnologías pasadas, comprender cosas dificiles de verdad es lo que yo hago con mis integrales triples de cálculo y tratamiento de señales.

Bueno ya me he cansado de este monologo, porque me estoy alterando a mi mismo con este tonto virtual, así que seguiré hablando como informático:

La experiencia con lenguajes es otro factor importante, aumentar la productividad, escalabilidad, simplicidad, mas aún cuando los mezclas, es importante conocer las cualidades que hacen un lenguaje fuerte y explotarlas. ¿Tienes alguna idea de como hacer un compilador? ¿Como crear nuevos lenguajes que mejoren la productividad manteniendo la potencia?

Sabes que ocurre cuando mas de una persona intenta utilizar el mismo programa simultáneamente, y la mas mínima idea de las consecuencias que conlleva esto?
Programación Concurrente y Distribuida?

Inteligencia Artificial? Algoritmia básica? Redes neuronales? Algoritmos evolutivos? Árboles de decisión? Agentes software? Programación declarativa?

Bases de Datos? Transacciones, concurrencia, sabes que es minería de datos, sabes que es inferir nuevo conocimiento de una base de datos? Creo que mucha gente ni si quiera se ha planteado que ventajas trae tener bases de datos. Por supuesto dudo que mucha gente mas que fp o informáticos sean capaz de conectar un programa con una de ellas.

Hay que saber Tecnologías y herramientas, es importante, permiten mejorar la productividad infinitamente, además es bueno tener experiencias con tecnologías pasadas, control de sistemas operativos a nivel de aplicación (cuanto menos), conceptos de protocolos de comunicaciones a nivel de aplicación…


En fín podría llevarme mucho tiempo escribiendo sobre cualidades necesarias solo en el téma de la programación pero ya me he cansado.

Dudo que la mayoría de telecos sepan hacer de forma real, no teórica , las cosas mas simples que utiliza a diario en su PC, desde un notepad a una simple página web. Y esque después de todo puede que sea fácil, pero si alguien puede decirlo, somos nosotros, que sabemos hacerlo y que comprendemos los problemas de una manera mas profunda.
Ellos… ellos no saben ni por donde empezar

Por supuesto los informáticos no somos la panacea y todo el mundo que estudie estas ramas puede aprender, pero ya basta de tanta hipocresía, no son tareas fáciles ni triviales y es bastante molesto escuchar a personas con estudios, ingenieros o gente que se supone que sabe razonar decir todo tipo de barbaridades y desprecios hacia la informática.

Odio tener que evaluar carreras, me parece estúpido. El que debe evaluar es el mismo mercado, pero puestos a poner atribuciones que sean defendidas de manera institucional, que no sean con argumentos estúpidos e ignorantes, si vamos a poner las cosas en su sitio. Aquí los que sabemos de esto somos nosotros, y vosotros a hacer chips, con transistores, resistencias y bobinas, ala! a montar una antena FM.