Las bounding boxes son una técnica que permite evitarse realizar un trabajo cuando se sabe que el mismo no es necesario, esto muchas veces hace una diferencia importante en la resolución de problemas.
A veces la utilizamos sin darnos cuenta, por ejemplo si queremos consultar sobre reglas gramaticales buscamos en los libros de literatura, pero nos salteamos los libros de matemática y ciencias naturales.
Cuando enfrentamos cotidianamente a la tarea de resolver problemas, con el tiempo y la experiencia desarrollamos alguns técnicas heurísticas que permiten atacar problemas de manera mécanica, y hasta a veces resolverlos completamente. Estos conocimientos a veces se pueden expresar como reglas y hasta es posible trasmitirlos, no se pueden utilizar en el 100% de los casos pero a veces ayudan a simplificar un problema.
Lo que es dificil de trasmitir es aquello que debemos evitar hacer para resolver un problema.
Ultimamente aplico esta frase: si la solucion a un problema es demasiado compleja entonces no encontramos la solucion correcta.
mayo 04, 2008
El arte de [no] resolver problemas.
mayo 02, 2008
Not so smart systems
While it has been a long time wish to have smart machines being able to do our jobs that are boring, dangerous, or repetitive. Still we are very far from that.
Blogger editor try really hard to understand what I'm typing is text or markup code. For most of the uses it guesses correctly, but when I'm quoting a xml fragment it always mess up switching between HTML and the WYSIWYG, and is really hard try to figuring out what will en in the frontpage.
But blogger is not alone there, recently I've to edit an entry in a Wordpress Blog and I've being greeted with the same behaviour. So I ended not trusting whether I edited but what it was being show when the blog is published. But what is worst is that this smart system were replacing or removing some tags.
mayo 01, 2008
Fixing Community Repositories for KDE Live CD for OpenSuse 10.3
When you install OpenSuse 10.3 from KDE Live CD and try to use Community Repositories from YaST to add a repository you are greeted with the following message:
You can fix it by editing /etc/YaST2/control.xml, and changing:Unable to download list or repositories or no repositories defined.
<external_sources_link>http://seven-swords.net/Repos/openSUSE_10.3/testing_list_of_repositories.xml</external_sources_link>
to
<external_sources_link>http://download.opensuse.org/YaST/Repos/openSUSE_103_Servers.xml</external_sources_link>
marzo 16, 2008
Educación Matemática.
Leyendo el blog The n-Category Café de que no es tan díficil tener una buena eduación matemática.
Recuerdo que hace algunos años, mientras daba clases en el ingreso a la facultad para carreras de Ingenieria o Ciencias Exactas, me sorprendia cuando algunos aspirantes se habian olvidado las operaciones basicas como dividir o multiplicar, o incluso no sabian como utilizar una calculadora para hacerlos, a veces no sabian interpretar los resultados (por ejemplo 1.234E-23).
Todavia me sorprendio mas enterarme que a algunos colegios secundarios no dictaban matemática en el último año. Por lo que estos estudiantes ingresaban a la Universidad estando un año sin hacer nada que los prepare en matemática. Un amigo les decia a los alumnos que se olviden lo que le habian enseñado en matemática en el colegio, que era mejor que use los manuales de primaria para repasar que estaban mejor explicados y los temas eran mas cercanos a los que dabamos en el ingreso.
La matemática probablemente sea una de las materias más difíles de aprender correctamente, pero los resultados que se obtienen ciertamente merecen la pena aun cuando uno elija una profesión que en principio no tenga nada de matemática.
febrero 17, 2008
C++ y Python.
Es común que se destaquen ciertas virtudes cuando se comparan lenguajes de alto nivel con los de bajo nivel.
Por ejemplo tener un manejo automático de la memoria (garbage collection en inglés) nos evita tener que preocuparnos por saber cuando tener que liberar memoria de un objeto, y si podemos estar haciendo referencia a un objeto que ha sido liberado.
Pero esto también tiene problemas, un programa con que usa garbage collection requiere más memoria que uno programa que maneja memoria de manera explícita.
Si creamos gran cantidad de objetos de manera dinámica el proceso encargado de manejar memoria (garbage collector en inglés) se va a ejecutar más frecuentemente y vamos a hacer perder rendimiento.
Otro problema más sutil, es que objetos con una interfaz de eventos ya no son usados, pero sus eventos todavia estan registrados lo que evita que estos objetos sean liberados. Una solución a este problema son las referencias débiles (weak references en inglés).
Mi punto aquí es que C++ no es peor lenguaje que Python por no tener garbage collector, simplemente son dos lenguajes que implementan formas distintas para manejar memoria. En algunos casos C++ es un mejor lenguaje para determinada tarea en otros Python es mejor.
Por ejemplo para proyectos medianos prefiero C++, pero para proyectos mas chicos Python es mucho mejor.
enero 14, 2008
Computación vs. Matemática.
Después de tres años de estar trabajando en el área computación tengo un par de reflexiones relacionadas con mi anterior trabajo en matemática:
Contras:
- Menos vacaciones dos semanas en comparación antes tenia vaciones por lo menos un mes y medio en verano y otro en invierno.
- La burocracia en proyectos, ie le pido a A cierta especificacion, A habla con B, después de un par de dias A dice que no esta lista que va a estar en una semana, después de dos semanas A envia un borrador de especificación, etc.
- El cantidad de trabajo es muy fluctuante, hay épocas con varios proyectos con diferente prioridades y fechas límites muy cercanas y que exigen información constante, y otras con un sólo proyecto interno sin una fecha fija.
- Cuando tengo un mail que dice XX no funciona, tiene que estar arreglado lo más pronto posible, creo que en mi empresa la sigla ASAP es la más odiada.
A favor:
- Mucho mejor pago seis veces mi anterior sueldo (si 6 “veces”).
- Recompensa según trabajo realizado, si hago un buen trabajo las recompensas pueden ir desde una felicitación hasta un aumento o bonus.
- Ciertos problemas exigen soluciones creativas, esto me gusta porque los conocimientos son aplicados a problemas reales.
Neutro:
- Más controls sobre los proyectos que manejo, es bueno porque me manejo con mis tiempos, no es tan bueno porque exige cierta responsabilidad cuando calculo tiempos.
- Estar en una oficina con aire acondicionado, sentado varias horas, mirando constantemente una pantalla. Puede sonar bien en un principio pero no es el trabajo demasiado saludable.
En otro post porque se podria pensar que la industria de la informática es un robo.
diciembre 07, 2007
Pendientes.
Libros:
- La muerte lenta de Luciana B. de Guillermo Martinez.
- Episodio 3.14 de Adrian Paenza.
- Parte 2 y 3 de La Saga de los Confines de Liliana Bodoc.
- Hace unos dias encontre una práctica de K-Teoría y me empece a acordar de algo, obviamente no me salió ni siquiera el problema 1, pero creo que estoy extrañando algo la matemática, debo hacer algo al respecto.
- No me sobre el tiempo, pero deberia hacer algo interesante, probablemente sea algo relativo al punto anterior.
octubre 11, 2007
Libros nuevos.
Compre algunos libros:
- Crimenes Imperceptibles de Guillermo Martínez, hasta ahora me gusta esa mezcla de novela policial, con un toque de matemática. Para mi gusto insiste demasiado con la Logica y el teorema de Göedel. A mi no me gustan los libros/películas que se automencionan de manera no demasiado sutil.
- El sol desnudo de Isaac Asimov, pertenece a la serie de Robots, es decir con R. Daniel Olivaw. Supongo que sera acción al estilo Asimov.
- El sonido de la Montaña de Yasunari Kawabata, ya había leido otros dos libros de él: El maestro de Go, y La ceremonia del Té.
El primero es un relato de la última partida entre el antiguo mestro de Go y un nuevo aspirante, es síntesis es un reláto de la lucha entre lo viejo y lo nuevo, entre la tradición y la modernidad, entre el presente y el futuro.
El segundo es distinto, trata de recorrer los sentimientos de varios personajes que tienen una relación un tanto retorcida. Lo que me llama la atención de estos libros son los finales.
No se si es asi, o es porque solo leí algunos libros, pero me llama la atención la diferencia entre la forma de escribir occidental y los escritores orientales (japoneses en este caso), en que los finales suele abiertos, como dejando que el lector finalice el argumento.
julio 04, 2007
Tareas pendientes.
- Terminar de leer «El Castillo» de Kafka, por ahora me pareció que tiene un toque borgeano, aunque Kafka haya nacido antes.
- Buscando referencias sobre «non photorealistic rendering», encontre esta frase atribuida a Stanislaw Ulam: “The study of non-linear physics is like the study of non-elephant biology”.
- Seguir buscando más información sobre los conjuntos de Julia en 4d.
- Me llamo la atención como se define otro producto en los cuaterniones que tiene un mejor aspecto visual.
- No hay conjuntos de Julia en 3D, asi que lo que usualmente se muestra es una proyección en 2D de una rebanada del verdadero conjunto.
- Mas aun, como los conjuntos de Julia no se podrian ver bien en 3D, y entonces se suaviza su superficie (ie hacen que sea diferenciable).
- Los lenguajes de programacion funcionales estan mejor preparados para aprovechar mejor la capacidad de proceso que van a tener las computadoras en un futuro cercano?
mayo 25, 2007
Ejecutando codigo del shell como root.
A veces es necesario ejecutar ciertos programas como root, por ejemplo apt-get, insmod, modprobe, etc. Esto se soluciona agregando adelante sudo, sudo lo que hace es ejecutar sus parámetros como root.
Esto falla si queremos hacer algo asi como 'echo 10 > /proc/sys/root_file'. (Este caso tambien se puede resolver usando el comando tee.)
El problema es que sudo no ejecuta el shell, y por ejemplo todas las cosas interesantes que hace el shell (expansion de wildcards, redirección, etc) no son llevadas a cabo. Para hacer esto lo que hay que hacer es sudo su -c 'shell', por ejemplo sudo su -c 'echo 10 > /proc/sys/root_file'.