Gran post de mis queridos colegas de [Q] acerca del fenómeno de la portafolitis, en el que desarrollan la manía de compañeros de profesión y de agencias de engrosar su portfolio con grandes marcas sin apenas detallar el trabajo realizado. Me he reído bastante, y me suscribo a sus palabras.
Portafolitis - be honest my friend
September 28th, 2008 · No Comments
→ No CommentsTags: Actionscript
Innovación? mucho lirili y poco lerele (2 de 2)
September 23rd, 2008 · No Comments
Genius is 1% inspiration, 99% perspiration
Thomas Alva Edison
Algo así como: Un genio es 1% inspiración y 99% de sudor…
→ No CommentsTags: Actionscript
Innovación? mucho lirili y poco lerele (1 de 2)
September 23rd, 2008 · No Comments
Como gestor de proyectos, nunca tuve problemas para encontrar gente con ideas alocadas, pero tuve problemas para encontrar gente que las ejecutara (…) así que no creo que necesite más innovación.
Linus Torvalds.
Para los profanos, Linus Torvalds es un Ingeniero de Software conocido por crear el primer kernel para GNU/Linux, sistema operativo que actualmente usa el servidor que te da esta página, y el de tu periódico favorito, y el de tu red social, y …. Además, Linus Torvalds es una de las personas más influyentes del mundo por la revista Time en 2004. También fué galardonado como uno de los mejores administradores empresariales por la revista BussinesWeek. Es muy conocido por sus citas ácidas e irónicas, bastante famosas en la escena geek.
→ No CommentsTags: Actionscript
Los megaproyectos
September 18th, 2008 · 1 Comment
Los megaproyectos son iniciativas con gran presupuesto, costes de ejecución y notoriedad en su entorno. Se trata por lo tanto, de un proyecto con una inversión de gran envergadura y esfuerzo en todos los sentidos. Generalmente son apuestas muy ambiciosas, y con frecuencia sufren la sobreestimación del resultado de los mismos, además de un sobrecoste debido a una falta de previsión de los recursos necesarios.
Muchos de los megaproyectos, independientemente del área empresarial sobre la que se gestan, son sinónimo de chapuza. Todos además, se hacen eco en la sociedad que les rodea. Las obras del ave, el soterramiento de la m-30, la presa de las tres gargantas… son ejemplos que a todos nos suenan porque llegan a los periódicos por tratarse de obras civiles de dinero público. Pero hay miles de proyectos acometidos cada año por las empresas, que sufren los mismos síntomas en muy diferentes áreas: automoción, Ingeniería del Software, publicidad… y todos ellos captan la atención de los compañeros de su gremio.
Los megaproyectos se basan en un principio muy sencillo: la tendencia del ser humano de magnificar los beneficios reales, sin pensar en las posibles consecuencias negativas de un sobrecoste, o de las repercusiones ocasionadas por la falta de dimensionamiento. Pero seamos francos, a todo el mundo le seduce el megaproyecto. Llegar a la luna, invadir un país enemigo, hacer un puente entre dos continentes… son proyectos que gustan hasta al más avispado.
Dicen los expertos, que el sobrecoste en megaproyectos ronda el 20% - 50% de media de los recursos iniciales.
Y ahora es cuando puedo hablaros del síndrome “kitchen sink“, que se suele cebar sobre estos megaproyectos.
El síndrome “kitchen sink” (” o “scope creep”) en gestión de proyectos, habla de cambios incontrolables sobre el ámbito de un proyecto, causados generalmente por falta de definición de los objetivos del mismo, y control adecuado sobre él.
Sin poder identificar los objetivos de nuestro megaproyecto, podemos encontrarnos en la cómica situación de pretender lanzar un transbordador al espacio, sin un objetivo claro… aunque se rumoree que el objetivo es tomar muestras de un planeta del sistema solar,
… y necesitamos diseñar el transbordador, los cálculos de trayectorias, y un vehículo explorador que se adapte a las condiciones del planeta destino….
Y bien avanzado el desarrollo es cuando los megaproyectos ofrecen su peor expresión. Las nuevas mejoras o productos que cubren estas incontingencias, provocan incrementos en presupuestos, retrasos, nuevos recursos a contratar, tareas extra a acometer por la plantilla inicial, desviaciones en el rumbo del proyecto completo… un reto de difícil superación incluso para los más experimentados directores de proyecto.
Nadie tiene la fórmula del éxito, y atrincherarse contra la idea de que los megaproyectos son el demonio, habría privado a la humanidad de muchos de sus grandes logros. Una definición clara de los objetivos del proyecto que permita centrarse en la consecución de los mismos es la clave del éxito. Y es entonces cuando descubres que un proyecto pequeño obtiene mejores resultados que el megaproyecto por el simple hecho de saber qué pez queremos pescar y adecuar el cebo para dicho pez.
→ 1 CommentTags: Actionscript · Personal
Redes sociales for dummies
August 25th, 2008 · No Comments
Explicar el concepto de red social a un profano puede llevarte a garabatear un folio con pelotillas de los nombres de tus amigos con un nivel de “ininteligencia” proporcional al conocimiento de internet de tu amigo o familiar. Mucho más claro y conciso el vídeo que me apunto por si me vuelve a pasar.
→ No CommentsTags: Redes Sociales
Nueva página - alexsanchez.info
January 28th, 2008 · 4 Comments
Hace poco compré un dominio, alexsanchez.info, donde últimamente he estado escribiendo, con la idea de ofrecer allí un escaparate de mis trabajos, y vía de contacto para mis negocios, compuesto de una bitácora estrictamente profesional y un portfolio experimental. Pensaba entonces, redirigir todos los post de código y experimentos de este blog al nuevo, y separar un poco, y de paso, la parte profesional de la parte de ocio o personal en mis entradas.
La razón es que últimamente este blog era un popurrí de temas muy personales, entradas “ociosas” y paridas y entradas muy técnicas acerca de mis trabajos como profesional de Internet. Lo había orientado más como un blog al uso, para mis amigos y colegas de profesión y no como un escaparate para mí. Pero cuando captaba algún cliente, o me presentaba en alguna empresa, me daba bastante apuro pasarle el enlace al blog, puesto que había ciertos aspectos del mismo que no me apetecía mostrar a clientes, y sin embargo, había otro tipo de entradas muy interesantes para ellos.
¿vosotros qué opináis? Agradeceré mucho vuestras opiniones, queridos lectores. Por cierto, ya funcionan los comentarios. ^_^
→ 4 CommentsTags: Personal
intenneeeee
October 24th, 2007 · 1 Comment
Me he mudado de casa, y por desgracia he tenido que estar sin internet unos días como el pobre Enjuto. Menos mal que ya vuelvo a tener…
→ 1 CommentTags: Personal
Vendo Monitor CRT 19 pulgadas
September 14th, 2007 · 2 Comments
Pues eso, que tengo publicada una subasta en eBay de mi monitor de 19 pulgadas Hitachi.
Está impecable, tiene 4 años y no me ha dado nunca ningun problema. Me costó en su día 400€. Os pongo el enlace por si estáis interesados en pujar por él. El precio de salida de la subasta es 30€.
Monitor 19 pulgadas, barato, barato
También tengo una tarjeta de memoria Compact Flash de 512Mb, con un precio de salida de 5€
La tarjeta de memoria, que me la quitan de las manos, que me la quitan de las manos…
Que me lo quitan de las manos!
→ 2 CommentsTags: Personal
Luchando contra el fenómeno HOYGAN
September 12th, 2007 · 5 Comments
Hace tiempo, un compañero de trabajo me comentó que le encantaba participar en foros y escribir correos, porque había recuperado el hábito de escritura. Además le servía para aprender a expresarse correctamente y le ayudaba a reflexionar sobre lo que estaba escribiendo…
Los sitios web están plagados de comentarios. A veces son más interesantes incluso que las noticias. En los foros, los comentarios lo son todo, en realidad, un foro se puede entender como un sitio de comentarios organizados. Soy un asiduo visitante de los foros, de muy diferente índole. Motor, tecnología, economía, política… “le meto” a todos.
En ellos puedo encontrar cierta información que tarda tiempo en ser publicada, u opiniones muy específicas sobre muy diversos temas que sólo puedo encontrar en ellos.
En un foro, es fácil encontrar lo que busco, la información está bien categorizada, y existen potentes buscadores que me permiten encontrar hilos con temática similar a la que busco.
Peero…en contrapartida, un foro es abierto, y no todas las opiniones tienen el mismo interés. Generalmente, alguien formula una pregunta, y varias personas ofrecen un amplio abanico de respuestas. Y pasa lo de siempre:
Hay grandes expertos en la materia, personas que hacen buen uso de la palabra, utilizando frases no demasiado extensas, mediante un lenguaje llano y fácil de leer, usando adecuadamente los puntos y aparte, las comas, el punto y coma, evitando en gran medida faltas de ortografía …Vamos, sin pretender ser un pedante del bolígrafo, pero escribiendo de manera que se facilite la lectura.
Y hay otros que en vez de escribir, parece que rebuznan. Párrafos enormes sin un solo punto y aparte, “penalties ortográficos”, la maldita costumbre de escribir con “k” en vez de “q”… realmente leer este tipo de comentarios se me hace complicado. ¡es cansino y dificulta la comunicación y comprensión! Hasta se ha acuñado un término para ellos. Los temidos HOYGAN.
Bueno, pues últimamente me sucede que, navegando por foros, si encuentro un mensaje con síntomas de haber sido escrito por un “HOYGANERO”, directamente paso al siguiente mensaje, porque sé a ciencia cierta que el comentario va a tener nula o poca importancia.
Bueno pues hoy he encontrado alguien que ha implementado un sistema anti-HOYGAN. La gente de nopuedocreer.com, no permite la publicación en su blog, de comentarios que porten palabras potencialmente “hoyganeras”, tales como “hoygan”, “hoigan”, “plis”, “weno”, “grasias”, “fabor”….
La idea es bastante interesante. Lo que no entiendo es como nadie le ha sacado partido a este problema antes: si Akismetha abierto nicho en el tratamiento del spam para los comentarios, está más que cantado que poco nos queda para los servicios de corrección ortográfica de comentarios en sitios web.
Pero es una evolución que debería avanzar con cuidado, ya que puede convertirse en una táctica que quizá coarte la evolución del lenguaje: si estoy imitando a un cateto, escribiré “fabor” encerrado entre comillas, y por ello mi comentario no debería ser rechazado. También si utilizo “jerga” en mi lenguaje, no debería estar obligado a corregirlo. Además, el lenguaje evoluciona y prueba de ello son la gran cantidad de palabras aceptadas por la RAE que provienen del lenguaje de la calle. Por ejemplo, “cocreta” ya está aceptada por el diccionario: muchas de las palabras del Castellano que ahora pueden denominarse “cultismos”, siglos atrás formaban parte de la jerga del populacho.
Pensando en mi propio comportamiento (omitir los mensajes con gran cantidad de faltas de ortografía), y en base a la implementación que han realizado la gente de nopuedocreer.com, se me ha ocurrido, que sería muy útil portar dicha idea para un sistema de relevancia de mensajes automatizado en base al número de faltas de ortografía que porte el mensaje. Actuaría de forma conjunta con el sistema de votación participativo, que ya podemos ver en youtube o menéame, por el cual la gente puede promocionar los comentarios positivos y penalizar los irrelevantes.
Imaginemos que alguien escribe un mensaje, y supongamos que comete no más de 5 faltas de ortografía en 2 ó 3 párrafos. Bien pues esa persona recibirá un peso mayor en las búsquedas de los foros, y su comentario aparecerá en texto más grande. Lo contrario pasaría con el hoyganero. en función de sus faltas de ortografía, se podría dar menos relevancia a su comentario.
La necesidad está creada, y las herramientas comienzan a desarrollarse. ¿Conseguiremos minimizar el problema sin coartar el lenguaje?… próximamente en nuestras bitácoras.
→ 5 CommentsTags: Redes Sociales
Procesado de imágenes en Java II
July 24th, 2007 · 4 Comments
Javier Murillo me manda una mejora para la clase ImageUtils que publiqué en la entrada procesado de imágenes en Java. Es una alegría saber que otros desarrolladores trabajen con el código que publico, y que, como en este caso, se interesan por mejorarlo y reenviarlo. Gracias Javier!
-
package es.gaea.utils;
-
-
import java.awt.RenderingHints;
-
import java.awt.geom.AffineTransform;
-
import java.awt.image.AffineTransformOp;
-
import java.awt.image.BufferedImage;
-
import java.io.File;
-
import java.io.IOException;
-
import javax.imageio.ImageIO;
-
import org.apache.log4j.Logger;
-
-
/** Clase que implementa un procesador para imagenes y juguetear con ellas */
-
public class ProcesadorImagenes {
-
-
/** Logger de la clase */
-
private static Logger logger = Logger.getLogger(ProcesadorImagenes.class);
-
-
/** Opciones de renderizado para las imagenes */
-
-
/** Constructor de la clase */
-
public ProcesadorImagenes() {
-
-
// Cargo las opciones de renderizado que me apetezcan
-
opciones.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
-
opciones.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
-
}
-
-
/** Devuelve la lista de formatos disponibles a leer por ImageIO
-
* @return un array de strings con los mismos.
-
*/
-
-
return ImageIO.getReaderFormatNames();
-
}
-
-
-
/** Calcula el factor de escala minimo y en base a eso
-
* escala la imagen segun dicho factor.
-
* @param nMaxWidth maximo tamaño para el ancho
-
* @param nMaxHeight nmaximo tamaño para el alto
-
* @param imagen Imagen que vamos a escalar
-
* @return Devuelve la imagen escalada para poderla trastocar o null si hay error
-
*/
-
final int maximoAncho, final int maximoAlto) {
-
-
// Comprobacion de parametros
-
if (imagen == null || maximoAlto == 0 || maximoAncho == 0) {
-
return null;
-
}
-
-
// Capturo ancho y alto de la imagen
-
int anchoImagen = imagen.getHeight();
-
int altoImagen = imagen.getWidth();
-
-
// Calculo la relacion entre anchos y altos de la imagen
-
double escalaX = (double)maximoAncho / (double)anchoImagen;
-
double escalaY = (double)maximoAlto / (double)altoImagen;
-
-
// Tomo como referencia el minimo de las escalas
-
-
// Devuelvo el resultado de aplicar esa escala a la imagen
-
return escalar(fEscala, imagen);
-
}
-
-
-
/** Escala una imagen en porcentaje.
-
* @param factorEscala ejemplo: factorEscala=0.6 (escala la imagen al 60%)
-
* @param srcImg una imagen BufferedImage
-
* @return un BufferedImage escalado
-
*/
-
-
// Comprobacion de parametros
-
if (srcImg == null) {
-
return null;
-
}
-
-
// Compruebo escala nula
-
if (factorEscala == 1 ) {
-
-
return srcImg;
-
}
-
-
// La creo con esas opciones
-
AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(factorEscala, factorEscala), opciones);
-
-
// Devuelve el resultado de aplicar el filro sobre la imagen
-
return op.filter(srcImg, null);
-
}
-
-
-
/** Metodo que guarda una imagen en disco
-
* @param imagen Imagen a almacenar en disco
-
* @param rutaFichero Ruta de la imagen donde vamos a salvar la imagen
-
* @param formato Formato de la imagen al almacenarla en disco
-
* @return Booleano indicando si se consiguio salvar con exito la imagen
-
*/
-
-
// Comprobacion de parametros
-
if (imagen != null && rutaFichero != null && formato != null) {
-
-
try {
-
return true;
-
// Fallo al guardar
-
if (logger.isDebugEnabled() == true) {
-
String CODIGO_MENSAJE_ERROR_GUARDADO_FICHERO =
-
"No se pudo guardar correctamente la imagen en " +
-
rutaFichero;
-
logger.debug(CODIGO_MENSAJE_ERROR_GUARDADO_FICHERO);
-
}
-
return false;
-
}
-
} else {
-
// Fallo en los parametros
-
return false;
-
}
-
}
-
-
-
/** Metodo principal de la clase. Usado como prueba
-
* @param args Argumentos del metodo
-
*/
-
-
// Variables locales
-
BufferedImage imagen;
-
-
try {
-
ProcesadorImagenes pi = new ProcesadorImagenes();
-
-
// Escalo algunas imagenes como pruebas
-
-
// Las salvo en disco
-
pi.salvarImagen(imagen800_600,"imagenG.jpg","jpg");
-
pi.salvarImagen(imagenSnap_Shot,"imagenP.jpg","jpg");
-
pi.salvarImagen(imagenSnap_Shot,"imagenE.png","PNG");
-
pi.salvarImagen(imagenMediana,"imagenA.gif","gif");
-
-
// Extraigo la lista de formatos capaces de leer
-
-
// los voy mostrando
-
for (int i=0; i <formatos.length; i++) {
-
}
-
-
// Final del metodo con exito
-
e.printStackTrace();
-
}
-
}
-
}
→ 4 CommentsTags: Java