With time
Love shapes a soul
Like water carves a stone

I started solving the problems in Project Euler to exercise my mind, augment my knowledge in general algorithms and maths in general, and to gain practice with specific programming languages, their standard libraries, and the many specialised libraries available out there.
Most of the problems so far have been solved using Python and Cython even if there are analytical (paper and pencil) solutions to them.
Unlike many of the programs found on the posts readable after you provide the solution on the project’s web site, mine are written so that they would work if the specific conditions, like ranges, sums versus products versus single items, change. I also have tried to keep it simple and readable, which means very functional, some procedural, and no OO (there was a time when I thought I would never say something like that).
Unlike many of the mentioned programs, with every new problem I’ve gone back to similar or related problems and refactored the relevant code into libraries that are reused accross problems, and I’ve optimized the library code as harder problems have required it. The individual solutions are written in a way in which the code can be reused (which is what I did before deciding that refactoring to libraries was better).
Modesty set aside, I think that the result of my effort is a library that can be used for tasks from homework to my own professional work.
So far I’ve approached the problems this way:
Since I’ve already broken shared code while solving new problems, I decided to incorporate either assertions or unit tests (some form of automation) to verify that all problems are solved correctly before publishing changes.
Finally, it makes little sense to look at my code unless you’ve already solved the problems, you’re only interested in the reusable parts, or you have interest in reviewing what I have written.
https://bitbucket.org/apalala/project_euler/
Es verdad. La probabilidad de que nuestro disco duro muera repentinamente es mucho mayor que la de que Gmail pierda nuestro correo electrónico. Pero tener un respaldo no sólo contribuye a nuestra tranquilidad, sino que también nos permite acceder a los mensajes cuando no disponemos de acceso a la Internet.
Una manera segura de tener una copia de nuestros mensajes en Gmail copiados y accesibles en nuestro disco duro es usar un programa de correo electrónico conectado a nuestra cuenta Gmail a través del protocolo IMAP. Éstos son los pasos sencillos para lograrlos usando del programa Mozilla Thunderbird, el cual es software libre, y está disponible para los principales sistemas operativos:


¡Eso es todo! Podemos tener acceso a nuestros mensajes en Gmail desde tantos computadores queramos, aún cuando no haya conexión a Internet.
Hay otras maneras de respaldar nuestros mensajes en Gmail, pero ésta es, en mi opinión, la más sencilla y la más conveniente.
(No dejen de comentar sus experiencias con este consejo)
Los discos duros de un terabyte (1000 gigabytes) están aquí. Su mayor capacidad, mayor velocidad, y su relación precio/densidad de información hacen tentador el usarlos para resolver el perenne problema de falta de espacio en este universo digital cada vez más multimedios.
Pero… los discos duros son los componentes menos duraderos en un computador. El desgaste en sus partes mecánicas y la fatiga que la constante realineación magnética produce en sus sustratos metálicos hacen que, a diferencia de los componentes cien por ciento electrónicos, la vida de los discos duros esté contada en días o en número de lecturas y escrituras.
El riesgo de falla única al que nos exponemos con un disco duro es proporcional a la densidad de información que alberga, ya que a mayor densidad la pérdida de información ante una falla pequeña es potencialmente mayor.
Los discos duros de altísimas densidades son muy útiles en aplicaciones que requieren altos volúmenes de información y que pueden asumir que los discos son descartables a corto plazo, como es el caso de las granjas de servidores requeridas para alojar servicios como YouTube.
Para un usuario convencional, es mejor resolver el problema de fatla de espacio con una estrategia más convencional: más discos duros. Cada disco duro que ponemos en uso aumenta la vida total de los demás discos al liberarlos de trabajo, y sirve de resguardo contra fallas si mantenemos copias de la misma información en más de un disco. Hoy en día es posible conseguir a muy buen precio discos internos y externos (para las laptos) de capacidades entre 320 y 500 GB.
Es hora de adquirir un nuevo disco duro cuando uno se encuentra moviendo carpetas entre discos lógicos (particiones) porque ninguno de ellos tiene suficiente espacio para lo que uno desea hacer en el momento. También es bueno comenzar a pensar en un nuevo disco si el actual está por cumplir los dos años de uso.
La estrategia que sugiero para incorporar un nuevo disco duro es una que ha funcionado muy bien por casi dos décadas. De partida se asume que el nuevo disco duro tiene mayor capacidad que el disco actual.
Con esos pasos iniciales se debe sentir que se tiene una versión mejorada de la configuración que se tenía antes. Una vez que todo esté en su lugar y el disco nuevo haya tenido tiempo de demostrar su confiabilidad (no menos que unas cuantas semanas), se puede comenzar a optimizar la distribución de archivos en los discos.
Eso debería dejar más que suficiente espacio de trabajo en el nuevo disco duro.
A partir de este momento, a manera de hábito compulsivo, deben copiarse los nuevos proyectos de trabajo y personales desde el disco nuevo a un lugar razonable en el disco viejo (un buen momento para hacerlo es cada vez que se termina una sesión ante el computador).
Hay que siempre usar el disco nuevo como espacio de trabajo, experimentación, y juego. Si comienza a necesitarse más espacio en el disco nuevo, pueden borrarse algunas cosas de /Archivo, pero si eso se comienza a hacer recurrente lo mejor es comenzar a pensar en adquirir todavía otro disco duro (posiblemente pasando el disco más viejo de todos a otro uso no-crítico, como experimentación).
Estos pasos permiten obtener espacio de trabajo y conveniencia, y reducen la probabilidad de perder información o tiempo valioso escarbando en los respaldos, pero son sólo una parte de lo que se requiere en una estrategia de contingencia basada en mitigación de riesgos. En otra oportunidad escribiré sobre qué es exactamente un buen sistema de respaldos.
¿Problemas con tu computadora, laptop, red, Internet, …?
El servicio a domicilio es por ahora limitado a ciertas zonas, horarios, y tipos de servicio. Contáctame para confirmar.

Según mi hijo, la población estudiantil de su colegio se divide en:
Los monstruos son de distintos tipos, pero en general sólo están pendientes de echar vaina, sabotear, y destruir. En el grupo de sifrin@s (mayoritariamente femenino) solo están pendientes de la moda y la farándula. Los desadaptados incluyen a los autistas, esquizofrénicos, hermitaños, y antisociales. Los normales son todos los demás.
Para las elecciones del centro de estudiantes los distintos tipos de monstruos se unieron para inscribir una plancha unitaria. Como a las sifrinas le gustan los monstruos, los monstruos tenían una victoria casi asegurada.
Dado el inminente desenlace, la dirección del colegio decidió aplicar el reglamento y eliminar la susodicha plancha ya que sus integrantes no cumplían con los requerimientos de asistencia y nivel académico.
No… Los desadaptados no inscribieron una plancha, ni fueron a votar.
In the union between the body and the mind, the body vowed to pay more attention, and the mind vowed to sleep more.
El amor no es un credo,
ni un compromiso,
ni un acuerdo,
ni una acción.
El amor es una emoción,
un sentimiento,
y la palabra “desamor”
un oxímoron.
Watch your thoughts, for they become words.
Watch your words, for they become actions.
Watch your actions, for they become habits.
Watch your habits, for they become character.
Watch your character, for it becomes your destiny.