« In English | Main | MicroEntradas »

viernes, marzo 19, 2010

Frases célebres de la informática (selección personal)

Selección personal a partir de varios post de http://www.variablenotfound.com/2008/04/otras-101-citas-clebres-del-mundo-de-la.html ...

"Controlar la complejidad es la esencia de la programación"
-- Brian Kernigan

"La complejidad es destructiva. Chupa la sangre de los desarrolladores,
hace que los productos sean difíciles de planificar, construir y probar,
introduce problemas de seguridad y provoca la frustración de usuarios
finales y administradores"
-- Ray Ozzie

"Iterar es humano, 'recursivar' es divino"
-- L. Peter Deutsch

"Hay sólo dos clases de lenguajes de programación: aquellos de los que
la gente está siempre quejándose y aquellos que nadie usa"
-- Bjarne Stroustrup

"C++ : Donde los amigos tienen acceso a tus miembros privados"
-- Gavin Russell Baker

"Decir que Java es estupendo porque funciona con todos los sistemas
operativos es como decir que el sexo anal es estupendo porque funciona
con todos los géneros"
-- Alanna

"Es raro que mantener el código de otro desarrollador sea como
entrar en un edificio de gran diseño que admiras mientras paseas por él
y planeas cómo añadirle un ala o algún elemento decorativo. Lo más
frecuente es que sea como tirarse de cabeza a un gran montón de basura
maloliente"
     -- Bill Venners

"Por norma, los sistemas software no funcionan bien hasta que han
sido utilizados y han fallado repetidamente en entornos reales"
     -- Dave Parnas

"El testing de componentes puede ser muy efectivo para mostrar la
presencia de errores, pero absolutamente inadecuado para demostrar su
ausencia"
     -- Edsger Dijkstra

“Cualquier problema en ciencias de la computación puede ser
solucionado con otra capa de indirección… pero usualmente creará otro
problema”
    -- David Wheeler

“Estas máquinas no tienen sentido común; todavía no han aprendido a
pensar, sólo hacen exactamente lo que se les ordena, ni más ni menos.
Este hecho es el concepto más difícil de entender la primera vez que se
utiliza un ordenador”
    -- Donald Knuth

“A veces vale más la pena quedarse en la cama el lunes que pasar el
resto de la semana depurando el código que creaste el lunes”
    -- Dan Salomon

“Una solución elegante a un problema incorrecto no resuelve nada”
    -- M. Bryce

“Un experto es una persona que ha cometido todos los errores
posibles en un determinado terreno”
    -- Niels Bohr


“Ese código es demasiado inteligente como para tener esperanzas de
que funcione correctamente”
    -- Tim Peters

55. “La programación orientada a objetos ofrece una vía sostenible de
escribir código spaghetti”
    -- Paul Graham

“No puedes simplemente preguntar a los clientes lo que quieren e
intentar dárselo. Algo después, cuando lo hayas construido, ellos
querrán otra cosa”
    -- Steve Jobs

“APL es un lenguaje de sólo escritura. Puedo escribir programas en
APL, pero luego no puedo leer ninguno de ellos”
    -- Roy Keir

“La simplicidad es un prerequisito para la fiabilidad”
    -- E. W. Dijkstra

Nature by Numbers

Beautiful short movie showing the deep relationship between maths and nature.

Bilingual explanation (english and spanish): http://www.etereaestudios.com/docs_html/nbyn_htm/about_index.htm

Posted by at 4:47 PM
Edited on: viernes, marzo 19, 2010 4:48 PM
Categories: In English, Informática, MicroEntradas, Otros
Comments - Deja un comentario

lunes, noviembre 16, 2009

Curso de Aprendizaje Automático (machine learning)

De la Universidad de Stanford:

http://academicearth.org/courses/machine-learning

Tiene buena pinta.

Posted by at 6:43 PM
Edited on: lunes, noviembre 16, 2009 6:43 PM
Categories: Informática, MicroEntradas
Comments - Deja un comentario

Librería gráfica en Flash

Librería gráfica en Flash estupenda y baratísima: http://www.maani.us/xml_charts/

Es una de las mejores que he visto, sobre todo teniendo en cuenta el coste de su licencia y lo variada que es.

Ya la estamos probando en algunos proyectos en el trabajo y tengo pendiente pensar algún uso para www.monitordemercados.com .

domingo, octubre 18, 2009

Métricas de similitud para cadenas

Tal y como ando metido en el contínuo desarrollo de Monitor de Mercados he visto una librería que me puede resultar interesantísima: Métricas de similitud para cadenas

http://www.dcs.shef.ac.uk/~sam/simmetrics.html

Este también parece interesante:

http://sujitpal.blogspot.com/2008/09/ir-math-with-java-similarity-measures.html

martes, diciembre 23, 2008

Daily Flickr

He desarrollado una pequeña aplicación llamada Daily Flickr http://www.moisesdaniel.net/dailyflickr/

Básicamente es una selección automática de 30 imágenes de calidad de la comunidad fotográfica Flickr. Cada 24 horas la aplicación recorre un conjunto de grupos y analiza alrededor de 400 imágenes para, en base a unos parámetros, hacer la selección que se muestra en la página a modo de pase de diapositivas (también se pueden dejar comentarios).
El objetivo de la página es muy sencillo: poder conectarse a un lugar en el que pasar 5 minutos viendo un conjunto de imágenes interesantes y/o bonitas, y descubrir también a alguna gente que está haciendo muy buenos trabajos fotográficos.
In English:
A daily and automatic selection of 30 great photographs from the Flickr community: http://www.moisesdaniel.net/dailyflickr/
Posted by at 4:42 PM
Edited on: martes, diciembre 23, 2008 4:46 PM
Categories: Images, In English, Informática, Otros
Comments - Deja un comentario

jueves, octubre 09, 2008

Prohibido inventar aquí!!

Pocas veces he escuchado que alguna organización haya expresado esto, parece incluso políticamente incorrecto, pero ¿lo es? Depende de lo grande que sea el invento. Mantener un sistema, una arquitectura, una plataforma software no es gratuito. Debe ser un esfuerzo consciente y explícito por parte de la dirección de una organización, con la implicación de ciertos recursos (con esto no quiero decir que tenga que tener un equipo dedicado a mantenerlo y protegerlo, no!). Si no se puede dedicar el esfuerzo necesario, el resultado suele ser deprimente con el tiempo. La calidad brilla por su ausencia. En estos casos es mejor tenerlo claro: prohibido inventar aquí!!!

martes, septiembre 02, 2008

Google is going to kill Firefox!

This is incredible, Google is going to kill Firefox. Yes, I really think that Google Chrome is going to grow at the cost of Firefox, that is doing an amazing paper competing with Microsoft.

http://news.wired.com/dynamic/stories/G/GOOGLE_BROWSER?SITE=WIRE&SECTION=HOME&TEMPLATE=DEFAULT&CTIME=2008-09-01-20-16-48

I understand that Google is working for the long term, but perhaps some fussion with Firefox would be better for both.

In my humble opinion, Microsoft has a so strong position that to erode it is going to take a lot of time, and sincerely, IE is a good product.

Posted by at 5:22 PM
Edited on: martes, septiembre 02, 2008 6:00 PM
Categories: In English, Informática
Comments - Deja un comentario

miércoles, abril 02, 2008

La gestión de proyectos importantes

¿Qué es un proyecto importante? Un proyecto en el que la empresa que lo desarrolla se juega mucho dinero, mucho prestigio o cualquier proyecto cuyo mal funcionamiento pueda tener grandes costes humanos, económicos, o lesivos para la organización que lo usa.

Un proyecto que sea fundamental para el funcionamiento de una organización, de cara al servicio que quiere prestar, no puede ser desarrollado de igual forma que otro cuyo mal funcionamiento no tenga un impacto fuerte.

Cuanta mayor sea la importancia de un proyecto deberemos aplicar:

  • Mayor planificación (y seguimiento).
  • Más formalidad en la metodología de desarrollo que estemos usando.
  • Mayor control de calidad.
  • Mayor implicación de la alta gestión.
  • Más conservadores en cuanto a las decisiones tecnológicas.

En este tipo de proyectos, un fracaso cuesta muy caro.

miércoles, marzo 05, 2008

SigWeb 2.0: AJAX + OpenToro

Artículo que escribimos el equipo de desarrollo Portales-SIGs de Dap para un congreso sobre SIG y herramientas abiertas:

RESUMEN

En esta comunicación se describe el desarrollo de un nuevo visor SIG para la web, integrándole AJAX y el componente libre de publicación web OpenToro.

Palabras clave: SIG, visores web, AJAX , OpenToro, publicación web.

Aquí está la comunicación: SigWeb 2.0: AJAX + OpenToro

sábado, febrero 23, 2008

Reflections Opentoro: Objects, Databases, and the OpenToro's Philosophy'.

(Previously published in http://opentoro.sourceforge.net/reflections.html )

In these days, there has been a notable discussion about ORM, RDBMS and ODBMS, with interesting contributions like Ted Neward’s ‘The Vietnam of Computer Science and ‘Avoiding the Quagmire’, Gabin’s reply  ‘In defense of the RDBMS’, and the interesting discussions in the TheServerSide.net (and this) and InfoQ forums.

The next OpenToro version (the 5.0) has an interesting new feature: java objects, like previously database tables, can be easily published in the web. So we have wanted to make a reflection about these questions too.

 

Introduction.

OpenToro is a Web Database Publisher, a tool that allows us developing database-driven web applications (with advanced AJAX technology) in an agile and automatic way. Using OpenToro simply means to forget coding countless SQLs and JSPs every time we want to implement a web application with database access.

When we say ‘publishing’ a database in the web, we want to say generating a web interface that let people listing database tables, visualizing records, and generating forms for inserting, modifying and deleting records.

 

An OpenToro application is just a way to perform manipulations on the data in a relational database in a direct way (through the web).

 

You can see OpenToro too like a framework for rapid development of web applications.

 

OpenToro is not a panacea, and is not suitable for all application scenarios.

Usually you are going to use OpenToro in the Views of an application, using its easy tag lib and its XML files.

OpenToro and java Objects.

Like we have said, OpenToro next release (5.0 version, planned for November 2007) has an interesting new feature: java objects, like previously database tables, can be easily published in the web.

Until now OpenToro have not supported a very object oriented programming style for web applications, supporting more a declarative programming style (OpenToro is a complex metadata-reflective architecture piece of software). The reason is very simple: if you want to publish in the web some database tables, and made some CRUD operations (Create, Read, Update and Delete), why do you need to build a complex application?

It has nonsense using an ORM, a lot of classes for the data model, and a big architecture for doing so simple things. An excerpt from Martin Fowler:  

Costs of a domain model: The primary cost is the awkwardness of mapping to a database, which typically results in a whole layer of O/R mapping. This is worthwhile if you use the powerful OO techniques to organize complex logic.

 

But there are a lot of problems that are naturally developed using a full object oriented data model. LikeMartin Fowler says:

 

At its worst business logic can be very complex. Rules and logic describe many different cases and slants of behaviour, and it's this complexity that objects were designed to work with. A Domain Model creates a web of interconnected objects, where each object represents some meaningful individual.

 

OpenToro wants to do the next step, supporting other data container, like java objects, for web publication.

 

Our Philosophy.

In these days, there has been a notable discussion about ORM, RDBMS, and ODBMS.

Our philosophy is the next: keep the things simple.

 

We have identified al least 3 development scenarios:

  • You don’t have complex logic; rather, you almost don’t have any business logic. Solution: Don’t use any ORM, don’t build a domain model, perform manipulations on the data (in a relational database, of course) in a direct way. This is very simple using XML files for declarative specification of database tables. OpenToro will do the rest for you. Application example: a web site that contains news, events, and some documentation.
  • You have some business logic. The recommendation is simple, you must to develop a small domain model, only with the entities that have logic, the rest can be in the database. OpenToro 5.0 implements mechanisms that let your classes to reference database records (as if they were objects too). Still you don’t need an ORM, OpenToro has a set of utilities that let you ‘move’ data between classes and records.
  • You have complex logic. Ok, let’s open way to the heavy artillery. Anyhow we recommend using OpenToro 5.0 for publishing objects’ data in the web.

martes, diciembre 18, 2007

Plataformas Software

En estas últimas semanas he estado reflexionando e investigando un poco sobre las plataformas software.

Aquí va un apunte interesante: una definición y sus ventajas.

Definición de Plataforma:

Una plataforma software es un conjunto de artefactos (componentes o subsistemas) que forman una estructura común a partir de la cual podemos derivar (desarrollar, construir) sistemas de una forma eficiente.

Los sistemas derivados de una plataforma no sólo comparten código, sino requisitos y arquitectura. Se da por tanto un proceso de reutilización natural de los artefactos de la plataforma en los diferentes sistemas.

Ventajas de una plataforma software:

  • Reducción del coste de operación. Uno de los parámetros fundamentales en la ingeniería y en la estrategia empresarial es la justificación económica. Una plataforma software nos permitirá reducir el coste de operar en el campo del desarrollo del software, ya que nos permitirá reducir costes tanto a nivel de desarrollo, como de mantenimiento. El elemento esencial aquí es el de reutilización de los artefactos que componen la plataforma.
  • Mejora de la calidad. Al ser usados los artefactos de la plataforma en muchos sistemas, éstos son revisados y testeados de forma intensiva, por lo que es más fácil hacer que dichos artefactos tengan un número muy reducido de errores, buen rendimiento, etc.
  • Reducción del tiempo de desarrollo. Tener la capacidad de poder desarrollar proyectos en menos tiempo no tiene sólo un impacto económico directo en el coste individual de los proyectos, sino que tiene varios indirectos: al hacernos más competitivos podemos optar a realizar más proyectos y a ser por tanto más productivos. Para esto es fundamental una plataforma estable y adaptada a la problemática a la que se quiere aplicar.
  • Gestión centralizada de la evolución. La introducción de un nuevo artefacto en la plataforma da la posibilidad de que todos los sistemas derivados de la plataforma usen ese nuevo artefacto. Esta gestión centralizada permite a los sistemas evolucionar de forma ordenada.
  • Reducción de la complejidad global. El hecho de usar una plataforma bien definida con una serie de artefactos reconocibles y conocidos reduce la complejidad significativamente tanto a nivel de desarrollo, como de gestión del desarrollo, mantenimiento, etc.
  • Mejoras en las estimaciones de costes. Calcular costes para sistemas derivados de la plataforma es más sencillo y tiene menos riesgo porque se tienen ya resultados de otros sistemas derivados de la plataforma y que por tanto pueden ser comparables.
  • Interfaz común. Todos los sistemas derivados de la plataforma tendrán en común bastantes elementos en cuanto a su funcionamiento e interfaz, lo que hace que los usuarios aprendan rápido y se sientan cómodos ante nuevos sistemas derivados de la misma plataforma.
  • Estandarización del conocimiento técnico. El conocimiento de los técnicos de la organización se estandariza al estar todos los sistemas (o casi todos) basados en la plataforma y sus artefactos. Esto hace fácil que los técnicos puedan comprender y por lo tanto desarrollar y mantener el conjunto de sistemas generados por la organización, facilitando a su vez la movilidad del personal entre los diferentes proyectos atendiendo a las necesidades corporativas.

También tienen una clara desventaja (entre otras): Inversión en el desarrollo y mantenimiento de la plataforma. Se supone que una vez construida una plataforma la inversión realizada se recupera al utilizarla en 3-5 proyectos.