Ya está arreglado
El servidor había empezado a funcionar muy, muy lentamente durante el fin de semana. Tardaba una eternidad en mostrar una página. Pero ya está arreglado.
—–
El servidor había empezado a funcionar muy, muy lentamente durante el fin de semana. Tardaba una eternidad en mostrar una página. Pero ya está arreglado.
—–
Un interesante comentario en Hard Werken de (via rebelutionary) sobre el diseño de software:
Probably the most time I spend on a project deals with semantics. While many folks claim that design or architecture should take the highest priority, I’ve found that without valid semantics and a clear mental model of what you’re truly trying to solve, no amount of design can produce a useful product.
Semantics, in my book, does cover abstraction. There is a trick I use while designing. If I cannot come up with a clear, simple name for a class or method, I probably have a bad design. Confusing names are a sign of a confusing design.
Lo que me ha hecho pensar.
Posteriormente, Charles Miller en The Desktop Fishbowl amplia la idea para encajar también las metáforas de sistema, para ayudar a acotar, definir adecuadamente el proyecto y elegir buenos nombres:
Also, the metaphor helped a lot with scoping the project. Once you understand a project in terms of something real and simple to understand (like a courier), you could realise that some features that were on the list would never be used (because nobody would ask their courier to do that), or that some things that weren’t on the list were vital.
Más cosas en las que pensar.
Me he bajado un programa llamado Feedreader, pero no hace más que darme violaciones de acceso. Supongo que son los peligros que corres cuando las cosas son gratis.
nota: ahora que lo pienso, eso último es una estupidez. Lo de ser gratis no tiene nada que ver. He pagado por Windows 98 que falla cuando quiere y encima me insulta acusándome de tener la culpa.
—–
Estoy jugando con eso. Pongo esto para ver si se actualiza correctamente.
—–
Acabo de recibir otro libro de Amazon.com (Cómo me gustaría que hubiese un Amazon.es. Hace unos años corrió el rumor de que así iba a ser, y fui tan tonto como para hacerme ilusiones. Por desgracia, no era cierto. Aparentemente los informadores no comprende que hay una diferencia entre registrar un dominio y querer hacer algo con ese dominio). Se trata de Pattern Hatching. Design Patterns Applied de John Vlissides, uno de los miembros de la famosa Banda de los Cuatro (autores de Design Patterns un libro extraordinario). No he tenido tiempo más que de echarle un vistazo rápido, pero parece muy interesante.
Mientras tanto, yo sigo con Refactoring. Está francamente bien, sobre todo porque va desgranando formas concretas de hacer refactoring, y, sobre todo, cuándo no hacerlo, en una especie de catálogo con instrucciones concretas (tanto en código como en diagramas de clases). Algunas de las soluciones que ofrece son triviales para cualquiera que haya programado un poco con objetos, aunque supongo que son triviales en el sentido de que toda ciencia es trivial, es decir, lo es una vez que alguien lo dice por primera vez (o debería serlo, ésa es la naturaleza del conocimiento científico). Otras de las soluciones me resultan muy interesantes y me han hecho reflexionar sobre la ventaja de programar con objetos.
Es decir, intuitivamente sé por qué me gusta hacerlo así. Simplemente programar con objetos me deja una sensación de claridad intelectual que no tenía cuando programaba en C (o Fortran, o Pascal, o ?Dios, lo que tenía que hacer uno en física- ensamblador). Si está bien hecho ?y supongo que eso es lo difícil- parece más correcto.
Pero hay personas que opinan que la POO es fundamentalmente errónea porque no se deberían mezclar datos con las funciones para manipularlos. Opinan que son dos cosas completamente diferentes. Yo no creo que sea así. Simplemente porque opino que los datos carecen de interés. Me explico. A uno rara vez le interesan los datos en sí mismo. Una secuencia cualesquiera de números, tal como: 4, 9, 16, 25, 36… no dice nada. ¿Qué son esos números? ¿Temperaturas? ¿Euros? Saber qué miden esos números nos ayudaría más. Pero saber que son el resultado de aplicar la fórmula y=x2 es mucho más interesante (supongo que aquí se nota mucho que estudié física, que tengo cierto aprecio por las fórmulas por encima de la realidad). Realmente no nos interesan los datos sino la información que podemos extraer de esos datos. Y la información no es más que procesar datos para obtener algo que realmente nos sea útil.
Racionalmente, yo lo veo así: la programación orientada a objetos nos permite olvidarnos de los datos y de su manipulación, eso ya se habrá definido en su momento, y nos permite concentrarnos en convertirlo todo ese conjunto en información, que realmente es lo que queremos. Si tengo una clase Empleado
no quiero tener que preocuparme de qué tipo de empleado es para calcular su sueldo con sus posibles bonificaciones y demás zarandajas, esa decisión se tomará en función de ciertos datos que realmente no me interesan. Lo que realmente quiero es tener un método getSueldo()
que me dé la información que quiero realizando los cálculos que sean oportunos sin que yo tenga que conocerlos. Ya le daré los datos, lo cual es molesto, pero que luego no me incordie más de lo debido.
Para mí, ése es uno de los grandes beneficios. Llegado a cierto nivel, y si todo se ha construido bien, me permite olvidarme de lo que no interesa y concentrarme en lo que realmente deseo. O al menos, así lo veo yo.
—–
Ediciones B va a publicar algo realmente original. Se trata de la novela Celestial Matters de Richard Garfinkle. Una primera novela con un argumento más que curioso:
Mil años después de la muerte de Alejandro, a los 70 años y en la cumbre de su poder, la Liga de Delos, comandada por Atenas y Esparta, ha conquistado el mundo. Las ciudades griegas se extienden por toda la tierra uniendo a todas las razas. La Academia, expurgada de todo platonismo por Aristóteles, ha conocido un desarrollo científico extraordinario, confirmando todas las ideas del estagirita y Tolomeo, y ayuda activamente en el proceso bélico. La generación espontánea permite la producción de comida en el frente de batalla y el conocimiento exacto de las propiedades de los cuatro elemento y la música de las esferas permite que las naves aéreas no sólo dominen los cielos de la Tierra sino que también se aventuren hasta Selene y más allá. Sólo hay un problema, el Imperio Chino, con su misteriosa ciencia taoísta totalmente incomprensible para los griegos y basada en extraños conceptos y corrientes, se resiste a la conquista y la guerra amenaza ya con hacerse eterna. Pero los jefes de la Liga han concebido un plan genial: una nave aérea viajará hasta la esfera de Helios, el sol, y robará algo de su sustancia para arrojarla sobre la capital del Imperio Chino y acabar así con la guerra. Cosa que los chinos, por supuesto, no están dispuestos a consentir.
La leí hace unos años y me gustó mucho (aunque, claro, al tratarse de una primera novela, es algo desigual). El comentario completo que escribí en su momento está aquí.
Me empezó a interesar SVG hace un tiempo (especialmente porque podría servir para eliminar Flash, pero ésa es otra historia) y por ahí corren algunas interesantes aplicaciones. Pero hete aquí que me encuentro (vía Brett Morgan’s Insanity Weblog) con una exposición sobre el cómic europeo en SVG. Está en francés, pero tampoco hace falta entenderla para apreciarla.
Y hablando de cómic. A los amantes de ese mundo quizá les interese el libro Las asombrosas aventuras de Kavalier y Clay de Michael Chabon, una novela, ganadora del premio Pulitzer, que relata la historia de dos creadores de cómics, supongo que lejanamente inspirados en los creadores de Superman, en la época dorada del medio.
—–
Hoy tocó excursión acúática por el Miño. Fue a las cinco de la tarde, pero tuvimos que hacer un buen trayecto por carretera para llegar. Tengo fotos, así que veré de colgarlas en cuanto pueda.
Pasé la mañana añadiendo algunas cosas a esta página. Por desgracia, muchas de ellas no me convencen, así que probablemente las cambie pronto.
—–
Hace poco he terminado un bonito proyecto en Java. Como yo creo en eso de la educación continua y demás tonterías, pues me he matriculado en la universidad con la esperanza de complementar mi título de física. Hasta ahora, sólo programaba en C++ y en PHP a la hora de hacer páginas web (hace tiempo que todas las páginas que hago usan una base de datos y código para construir lo necesario sobre la marcha, nada de HTML estático para mí). Pues bien, con esto de volver me he tenido que meter con Java y qué descubrimiento. Estoy enamorado. He abandonado definitivamente C++ y PHP.
Ahora sólo Java.
Mientras dure.
A lo que iba. Para la clase de Java (en realidad se llamaba Tecnologías Orientadas a Objetos, pero podemos considerarlo Java nada más) mi proyecto consistía en un buscador en Google de términos médicos, haciendo uso del api que publicaron hace unos meses. El api en cuestión permite realizar búsquedas y algunas cosillas interesantes, pero con algunas limitaciones muy limitantes. Aún así, el mundo está lleno de gente muy lista e ingeniosa y corren algunos ejemplos muy buenos de lo que se puede hacer con esa herramienta.
Sigo. Mi proyecto no se limita a buscar en Google. Lo que hace es buscar primero en un diccionario médico (en inglés), obteniendo una lista de sinónimos, y luego realiza tantas búsquedas como sean necesarias por cada uno de los sinónimos más el término original. El resultado en un árbol en el que cada sinónimo tiene la lista de páginas que Google devuelve como resultado. Por ejemplo, «stroke» ofrece sinónimos como: «cerebral seizure», «Cerebrovascular accident», «aploplexy» o «Apoplectic attack». Opcionalmente, permite exportar el resultado como un archivo XML. La idea es que uno puede no estar buscando por el término más adecuado y que la página que realmente le interesa usa otra palabra para hablar de lo mismo.
Para montarlo todo tuve que usar, aparte de los apis, threads, procesamiento XML y Swing para el interfaz gráfico. Incluyendo mi favorito: patrones.
Además, era preciso presentar diagramas UML del proyecto. De UML no tenía más que muy vagas nociones, pero con ayuda de UML Distilled me fui haciendo una idea y descubrí también los diagramas de secuencia que me parecen simplemente perfectos para entender lo que se supone que está pasando.
Como evidentemente no sabía nada de Java, pero partiendo de C++, aparte de los libros habituales compré también Effective Java de Joshua Bloch. Otro descubrimiento. No es un libro para aprender Java, sino un libro para, no sé cómo decirlo… perfeccionarlo una vez que uno lo ha aprendido. El carácter es casi filosófico, en el sentido de que describe más bien una aproximación vital al lenguaje, la forma de usarlo para sacarle el mejor partido. Está dividido en pequeños capítulos, muy jugosos, que pueden leerse en cualquier orden y que están bien cargados de chicha. El libro perfecto para convertirse en un gurú.
Pues eso, que me lo he pasado pipa este último cuatrimestre. Y que me he convertido en un javero más. Ahora, a por el próximo proyecto.