• Shortcuts : 'n' next unread feed - 'p' previous unread feed • Styles : 1 2

» Publishers, Monetize your RSS feeds with FeedShow:  More infos  (Show/Hide Ads)


Date: Thursday, 26 Nov 2009 19:14

Por aquí os dejo el material de la charla sobre Realidad Aumentada que ofrecí en los talleres Subflash 2009. Os dejo el código fuente que usamos como ejemplo de implementación con el que podréis crear vuestra propia aplicación de Realidad Aumentada así como la presentación de la charla, y las clases que nos sirvieron como introducción a Papervision3D.

Papervision3D y Realidad Aumentada (rar)

Author: "Alex Sánchez" Tags: "Actionscript 3.0, Eventos, charlas, Expe..."
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 07 Oct 2009 16:53

En este post hablaré sobre algo muy básico aunque imprescindible sobre teoría de clases y composición aplicados a as3. Con él podemos entender la manera en que es tratada la composición de clases (una clase contiene otra clase como atributo) y los conceptos de paso de variables a métodos por valor y por referencia.

El paso de parámetros por valor, se utiliza en programación para realizar una copia del valor del objeto cuando es pasado a través de la invocación de un método. Es decir, al llamar a un método de una clase que requiere un objeto, realizo una copia de dicho objeto. Si dentro de la clase, modifico ese objeto, los cambios no son propagados fuera de la clase.

El paso de parámetros por referencia, pasa “un puntero del objeto”, es decir, de alguna manera estamos pasando el objeto, y si dicho objeto es modificado dentro de la propia clase, sus cambios serán propagados fuera de la misma.

Hay lenguajes que permiten definir el método de paso de variables (referencia o valor), como es el caso de C++. En Actionscript, de momento no podemos pasar por valor de manera nativa, aunque nuestro método siempre puede hacer una copia internamente del argumento recibido para no modificar el original. En Actionscript 3, el paso de parámetros, siempre se realiza de la misma manera:

  • Las instancias de clases son pasadas por referencia
  • Los tipos primitivos se pasan por valor

Si estás aprendiendo Actionscript 3 y has llegado hasta aquí, te recomiendo que analices a fondo este código, puesto que puede resultarte muy esclarecedor para entender este concepto tan básico como fundamental sobre la orientación a objetos.

Primero, definimos dos Clases, ClaseA y ClaseB. ClaseB está compuesta por un atributo, atributoB que es de tipo Number.

package
{
	public class ClaseB
	{
		public var atributoB:Number;	
		public function ClaseB()
		{
		}
	}
}

ClaseA tiene otro atributo de tipo ClaseB. Estamos hablando por tanto, de una relación de composición entre las dos clases.

package
{
	public class ClaseA
	{
		public var atributoA:ClaseB;
		public function ClaseA(atributo:ClaseB){
			atributoA = atributo;
		}
	}
}

Ahora nuestra clase principal. Nótese cómo atributoB devuelve el mismo valor independientemente del lugar desde donde es modificado (es el mismo objeto) y cómo esto no sucede con tipos primitivos. En este caso paso un parámetro al constructor de la clase ClaseA (nuestro objeto de tipo ClaseB), para posteriormente modificarlo desde diferentes ámbitos y trazar los resultados.

package {
	import flash.display.Sprite;
 
	public class ReferenciaValorTest extends Sprite
	{
		/**
		 * @autor Alejandro Sánchez
		 * http://www.electroduendes.com/blog/
		 * */
		public function ReferenciaValorTest()
		{
			var b:ClaseB = new ClaseB();
			b.atributoB = 10;
			trace(b.atributoB) // OUTPUT: 10
 
			var a:ClaseA = new ClaseA(b);
			trace(a.atributoA.atributoB) // OUTPUT: 10
 
			a.atributoA.atributoB = 5;
			trace(a.atributoA.atributoB) // OUTPUT: 5
			trace(b.atributoB) // OUTPUT: 5
 
			b.atributoB = 10;
			trace(a.atributoA.atributoB) // OUTPUT: 10
			trace(b.atributoB) // OUTPUT: 10
 
			var c:Number = 20;
			a.atributoA.atributoB = c			
			trace(a.atributoA.atributoB); // OUTPUT: 20
			trace(b.atributoB); // OUTPUT: 20
			trace(c); // OUTPUT 20
 
			c = 30;
			trace(a.atributoA.atributoB); // OUTPUT: 20
			trace(b.atributoB); // OUTPUT: 20
			trace(c); // OUTPUT 30
 
		}
	}
}
Author: "Alex Sánchez" Tags: "Actionscript 3.0, Flash, Metodología, a..."
Comments Send by mail Print  Save  Delicious 
Date: Monday, 05 Oct 2009 17:48

El triángulo de Penrose, es un objeto imposible que fue creado en 1934 por el artista sueco Oscar Reutersvärd. Posteriormente fue redescubierto de forma independiente por el físico Roger Penrose, en la década de 1950, quien lo hizo popular, describiéndolo como “imposibilidad en su más pura forma”.

Fuente: Wikipedia

penrose

Triángulo de Penrose

El juguetillo está escrito en Actionscript 3 y Papervision3D. El autor del modelo SketchUp es Martin Triebel. Espero ofreceros pronto el código. Con el artefacto, intento abrir una puerta racional al triángulo de imposibilidad, a través de un juego de interacción, en la idea de que no existe una realidad absoluta, sino meras interpretaciones, ahí queda eso.
Resulta generacional la atención que la gente tiene sobre esta figura, y su
repercusión en camisestas, fieltros, esculturas de rotondas y portadas de libros. Desde icono pop hasta figura del op art este símbolo será perpetuo y todo esto en menos de cien años, querido Roger, la liaste bien parda.

Author: "Alex Sánchez" Tags: "Actionscript 3.0, Experimental, Flash, a..."
Comments Send by mail Print  Save  Delicious 
Date: Monday, 05 Oct 2009 17:11

Antes de nada. Avisaros que no voy a anunciar un cambio de trabajo. El cambio de aires será esta vez para el blog.

Los que estéis suscritos a mi feed, os habréis dado cuenta que he estado actualizando algunos posts antiguos. El motivo es que estos días he estado ocupado en dar a este blog un nuevo aire. Así que me he calzado algunas entradas de poco interés, he actualizado las entradas técnicas para que no quedaran obsoletas, y migrando los post sobre opinión/artículos a mi otro blog.

Lo cierto es que el blog se estaba convirtiendo en un compendio de artículos de opinión y sobre publicidad y marketing, mezclados con posts sobre código, entradas off-topic, enlaces sobre diseño… El blog era como un traje de retales, cada uno de su padre y de su madre: demasiado heterogéno y puede que a pocos llegara a abrigar del todo. Dicen que el que mucho abarca poco aprieta.

Así que mi propósito de este año lectivo hacia este blog es redirigir la temática que encontraréis a partir de ahora, que será principalmente técnica. En este blog se hablará de arquitectura, metodología y programación web, centradas en el lenguaje Actionscript, aunque probablemente toque otros lenguajes, así como cuestiones sobre diseño weby prototipado . El tono de las entradas intentará ser más directo, orientado a cubrir a fondo los detalles técnicos, intentando cuidar la didáctica y la claridad. Dejaré a un lado opiniones y artículos que no versen sobre esta materia.

No estoy diciendo que dejaré de opinar, criticar o de aplaudir. Tampoco digo que dejaré de hablar de Marketing o de Publicidad On-line. Lo que quiero decir es que lo dejaré de hacer en este blog.

Y con la esperanza de que ésta sea mi última entrada no técnica en este blog y de que todos mis propósitos se vean cumplidos junto a vosotros, os doy la bienvenida a esta nueva etapa.

Author: "Alex Sánchez" Tags: "Personal"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 28 Aug 2009 14:11

Tengo una duda y me gustaría compartirla con vosotros. Es sobre mis blogs.

Los dos van enfocados a mi vida laboral. El primero, electroduendes, es más espontáneo, tiene más años y posts sobre código.
En el segundo, pretendo escribir hacia una audiencia más generalista, sin salir del medio por el que me muevo.

Continuamente me asaltan dudas: ¿y si los perfiles técnicos se interesan por la vida mas allá del código? ¿y si los perfiles generalistas están interesados en los experimentos sobre código que escribo?

Es por eso que llevo un tiempo dándole vueltas a la idea de matar el blog de electroduendes y migrar los posts al nuevo blog.

Pero por otro lado, pienso que un blog exclusivamente técnico espanta a cualquier lector que no hable tu idioma, y de entre los posts de código, la mayor parte no tienen interés para la gente no-técnica

Dejaré la decisión a mi sabia y querida audiencia…que nuestro Emperador Social hable ¿vida o muerte?, Voten:

Author: "Alex Sánchez" Tags: "Personal"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 01 Jul 2009 12:40

Como muchos de vosotros, estoy continuamente utilizando los métodos addChild y removeChild de DisplayObjectContainer.

Gracias a Dios con la llegada de as3 llevo un tiempo sin sufrir los tediososos attachMovie y createEmptyMovieClip, que resultaban a veces confusos.

El nuevo árbol de herencia de los objetos de visualización es ahora realmente orientado a objetos y muy completo, y es algo que agradecí al migar de as2 a as3.

Con el método addChild, no tengo pegas, pues me parece necesario identificar sobre qué padre vamos a incluir el DisplayObject que estamos creando.

Pero para el método removeChild, cuando estoy eliminando un Sprite, pues realmente no interesa saber cual es el padre, lo que realmente interesa, es eliminarlo y punto.

De hecho, yo tiendo a hacer lo siguiente:

miMc.parent.removeChild(miMc)

Se me ocurrió hace poco que una clase para eliminar Sprites sería útil, algo como un Terminator de DisplayObjects

DisplayObjectTerminator.remove(miMc)

Esta clase, encapsularía este comportamiento y además evitaría problemas tales como que el objeto a elminar exista, que no sea nulo… etc etc.

Y antes de ponerme a escribir, googleé un poco y encontré una clase bastante útil para estos menesteres que comparto con vosotros:

http://www.actionscript.org/forums/showthread.php3?t=178317

/**
 * written by evride //
 * Actionscript.org forums user //
 * found a problem? tell me there //
 */
package com.evride{
	public class RemoveObject {
		public static  function remove(obj:Object) {
			if (obj) {
				if (obj is DisplayObject) {
					if (obj.parent) {
						try {
							obj.parent.removeChild(obj);
						} catch (e:Error) {
							trace("Couldn't remove the object. It wasn't a child of a DisplayObject.");
						}
					} else {
						trace("Couldn't remove object. Parent property is null.");
					}
				} else {
					trace("Couldn't remove object. It is not a DisplayObject.");
				}
			} else {
				trace("Couldn't remove the object. It was null or doesn't exist.");
			}
		}
	}
 
}
Author: "Alex Sánchez" Tags: "Actionscript, actionscript3, addChild, a..."
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 18 Jun 2009 13:45

Ya están aquí un año más los talleres de verano de Subflash, donde un grupo de 50 personas de nuestro gremio y más concretamente todo lo que rodea a Flash, se reunen para compartir experiencias, impartir charlas y por qué no, tomar unas cañas y pasar un buen rato juntos.

Después de haber asistido a cuatro ediciones, te puedo afirmar que si perteneces a este gremio como diseñador o desarrollador, y además tienes la suerte de compartir trabajo y afición o sentir pasión por este mundo, no dejes de asistir este año.

Os copio-pego los detalles que hay en la web (http://www.subflash.com/talleres/2009/php/index.php), donde también podrás inscribirte y obtener más info:

lugar
los talleres de 2009 este año tendrán lugar de nuevo en Alicante, en la Villa Universitaria en San Vicente del Raspeig. la Villa Universitaria es un moderno complejo que cuenta con magníficas instalaciones y todos los medios necesarios para poder desarrollar todas las actividades.
Villa Universitaria
Avda. Vicente Savall, 16
03690, San Vicente del Raspeig
Alicante

fechas

viernes 28, sábado 29 y domingo 30 de Agosto de 2009.

precio

100 € por persona en modalidad de asistencia completa*, que incluye el alojamiento del viernes y sábado, además de la cena del viernes, pensión completa del sábado y desayuno y comida del domingo.
la modalidad oyente es totalmente GRATUITA, aunque los asistentes que se deseen quedar a comer o cenar, tendrán que abonar el precio de sus consumiciones individuales, al precio que marque el lugar.

Plazas disponibles
Aproximadamente 50 plazas disponibles en modalidad de asistencia completa*.

Instalaciones
habitaciones individuales
baño individual
internet en habitaciones por conexión RJ-45 (llevar cable)
cada dos habitaciones antesala con nevera, cocinita y microondas
tv y zonas comunes
sala de 18 ordenadores con conexión a Internet
piscina, padel y pista de fútbol sala
sala de conferecias totalmente equipada
aparcamiento gratuito

Author: "Alex Sánchez" Tags: "Actionscript, comunidad, desarrollo, Fla..."
Comments Send by mail Print  Save  Delicious 
Date: Monday, 18 May 2009 23:05

Me pasa el meme Luis, un enamorado de programas de gestión de ideas y de sobre todo llevarlas a cabo.

Claramente, esta pregunta se responde sola, como las ideas buenas. A menos que suponga barreras psicológicas o sociales llevadas por grupos de presión o propio autocontrol.  Y mira, ahora podría orientar el hilo hacia todas estas barreras, o la ética de la venta de ideas, ya sean malas o buenas, pero creo que tiene más regomello para un post la concepción misma de una idea. Además creo que si analizamos el proceso de una idea, del modo de cocinarla, entenderemos mejor mi afirmación:

La fórmula de las ideas me recuerda a un post de Marcos, (al cual enviaré este meme) sobre la fórmula del éxito profesional, la cual comparte bastantes ingredientes a mi modo de ver.

Una pizca de procastinación, un vaso de ambición, un par de kilos de interés, dos trozos de oportunidad, una cucharada de orgullo y un rato de necesidad. La fórmula de las ideas, o mejor dicho, la fórmula de las buenas ideas surge al cocer con cariño todos los ingredientes en el horno del trabajo.

Aunque a veces buenas ideas son todo vagancia. Así nació el hipervínculo. La propia web nació de un vago que no quería recordar direcciones. Todo parte de una necesidad que hay que cubrir para lidiar el problema .

Y paradójicamente, se convierten en trabajo  e innovación. Y después, son comunicación. Y para muestra un botón. El mismo Internet.

Pero qué pedazo de idea.

La que se ha liado con Internet en unos años… nadie lo diría, la www acaba de cumplir la mayoría de edad pese a tener porno de hace rato. Otra paradoja. La primera página de la www, sirvió para informar sobre lo que era por sí misma:

(…) El primer servidor Web se encontraba en el CERN y fue puesto en línea el 6 de agosto de 1991. Esto proporcionó una explicación sobre lo que era el World Wide Web, como uno podría tener un navegador y como establecer un servidor Web (…)

Fuente: Wikipedia

Quizá la clave fué que el producto del trabajo del bueno de Tim era algo grande, porque parece que comunicar se le daba bastante mal. O no… En este caso, la idea se vendió sola. Seguro que la primera página era porno.

Siempre creí que las ideas basadas en la necesidad son las más brillantes. El campo del desarrollo de software busca ideas teniendo siempre en mente un beneficio al proyectar una idea. Es una búsqueda del ingenio constante, pese a lo que quiera decir Bolonia. Si todo gira en torno a la relación coste-beneficio… ¿entonces? ¿la mejor idea es la más fácil? Al menos la óptima con mínimo trabajo y máximos beneficios.

Ejemplos hay miles. Uno que ví hace poco, es la aplicación “linterna” para móviles. No más de 20 líneas de código, para pingues beneficios.  Pero hay otras en la que el tiempo estimado de desarrollo es incierto incluso para los programadores con muchas horas de vuelo.

… y al hilo de esto un gran ejemplo: Ayer mismo vi por primera vez una baraja SCRUM, que portaba mi colega Germán, que sirve para las reuniones de los grupos de programadores que adoptan esta metodología:

La baraja Scrum tiene cartas con varios números, que indican el tiempo en que se puede hacer una tarea. Sirve para hacerse una idea aproximada de lo que el grupo piensa en que se puede  hacer determinada tarea. Las tareas en las que no se puede estimar un tiempo, son descartadas, o etiquetadas como toxic (máximo riesgo). Resulta extremo para un mantenimiento, pero es realmente vital en ciclos de productividad alta identificar las tareas tóxicas. Si hemos llegado hasta aquí, vemos claro que identifico idea y tarea como sinónimos.

Por tanto, es difícil imaginar beneficios si desconoces los costes, y  de esto ya hemos hablado. Al preguntar a cada uno de los miembros encargados de materializar la idea debes fotografiar la mueca de su cara.  Si te pueden dar un tiempo fiable… estupendo. ¿la idea sigue adelante? A venderla.

¿Pero no habías dicho que no hay que venderla? Bueno, si no la comunicas. Porque aunque parezca mentira, hay ideas que no salen porque no se comunican. Luego si tu idea es mala la puedes vender.

Y después viene medir las ideas, saber si ha sido buena ¿cómo?. Bueno, de eso ya se encargan otros. Pero por si acaso procura que el que te mide y saca la gráfica del resultado de tu idea no sea aquel que te la contó.

Le paso el meme a mi colega Marcos, un cocinero de ideas para internet con un recetario bastante amplio.

Author: "Alex Sánchez" Tags: "Actionscript"
Comments Send by mail Print  Save  Delicious 
Date: Sunday, 10 May 2009 02:58

Los desarrolladores Flash llevamos desde el 2002, la asidua tarea de trabajar con estos formatos. Por eso, en la parte cliente, se hace necesario el uso de un conjunto de clases que manejen esta labor, y que nos permita tener vídeo para rato sin morir en el intento cada vez que hay que aplicarlo a un proyecto.

Gracias a todos, ( y espero participar en ello pronto) cada día tenemos más proyectos hacia este área en la comunidad de desarrollo libre o de pago, y ya existen soluciones para la creación de players. Incluso existen players de licencia libre que cubren varias funcionalidades, de hecho hay un sano mercado en torno a los players, copado actualmente por JW FLV Media Player, un player bastante completo.

Pero si estamos empeñados en añadir las clases a nuestro repositorio reutilizables para todos los proyectos de tu empresa,  la tarea de crear un player crece en dos sentidos: el primero crear los componentes de interacción, que si bien algunos ya puedes tenerlos creados o reusarlos, y segundo, conocer las diferentes particularidades de la api de gestión de vídeo en flash para aplicar la funcionalidad a los controles visuales, que dependerá del tipo de vídeo y el total de los que vamos a meter.

En realidad, se trata de un trabajo de semanas partiendo desde cero. Son por sí mismo un subproyecto, o al menos un buen sprint en un desarrollo. A nivel de interacción, los players se deben tratar con cariño, puesto que demandan funcionalidades avanzadas de los usuarios acostumbrados a players de gran consumo, como youtube. Se debe trabajar bien con el seeker para dotarle del mayor número de funcionalidades posible, puesto que cuanto más bueno o largo es el vídeo, más vamos a utilizar este componente.

Para empezar, no está mal echar un vistazo a otros players famosos en Internet.  Debemos poner interés en añadir funcionalidades tales como añadir alias de teclado como la pausa para el espacio. También es interesante el retroceso del vídeo por click de la barra,  o avance en caso de que dispongamos de servidor rtmp o tecnología que lo permita. La visualización del vídeo mientras se arrastra la barra será motivo de otro post, y no deberíamos olvidar.

Este desarrollo es buena práctica para aprender la creación y despachado de eventos personalizados porque realmente te puedes hinchar a usar y crear eventos. Recomiendo separar para ello el código en una clase Player que se encargue de manipular el stream de red y enviar los eventos de usuario necesarios, y un conjunto de clases para el manejo de la interfaz, tales como sliders, buttons, loaders y seekers. Un patrón MVC también es interesante para montar toda la interacción entre clases y por si piden cambiar el skin para adaptar a otros proyectos e incluso en el mismo proyecto.

La parte más aburrida de esta tarea, la podemos simplificar con el uso de la clase Pyro Player que ha creado Turbulent.

var pyroInstance:Pyro = new Pyro(320, 240);
addChild(pyroInstance);
pyroInstance.play("http://myvideosite.com/videos/gratton.flv");

Tras un uso en varios proyectos, puedo afirmar que simplifica bastante la tarea, aunque el diálogo entre esta clase y los controles no te lo quita nadie en ningún proyecto a menos que obligues a tus diseñadores  a que usen los mismos controles en todos los players, o inviertas más tiempo todavía en parametrizar esta opción en tu triada.

Tengo que dar gracias a mi colega Diego por descubrirme esta clase. Como agradecimiento hacia este intercambio de conocimiento tan saludable, os recomiendo a todos también MySimpleMp3, una clase similar para reproducir mp3´s.

audio.url = "http://mydomain.com/music.mp3";
audio.play();
audio.pause();
audio.stop();
audio.volume = 0..1;
audio.panning = -1..1;

Los que habéis llegado hasta aquí y os interese este post desde la perspectiva de la publicidad, os remito a esta entrada en mi otro blog.

Author: "Alex Sánchez" Tags: "Actionscript, as3, flv, librería, playe..."
Comments Send by mail Print  Save  Delicious 
Date: Sunday, 28 Sep 2008 15:32

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.

Al césar lo que es del César

Author: "Alex Sánchez" Tags: "Actionscript, diseñadores, honestidad, ..."
Comments Send by mail Print  Save  Delicious 
Date: Monday, 22 Sep 2008 22:47

Genius is 1% inspiration, 99% perspiration

Thomas Alva Edison

Algo así como: Un genio es 1% inspiración y 99% de sudor…

Author: "Alex Sánchez" Tags: "Actionscript, creatividad, inspiración"
Comments Send by mail Print  Save  Delicious 
Date: Monday, 22 Sep 2008 22:44

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.

Author: "Alex Sánchez" Tags: "Actionscript, creatividad, innovación, ..."
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 18 Sep 2008 02:58

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.

Author: "Alex Sánchez" Tags: "Actionscript, Personal"
Comments Send by mail Print  Save  Delicious 
Date: Monday, 25 Aug 2008 19:19

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.

Author: "Alex Sánchez" Tags: "Redes Sociales, social networks, torpe"
Comments Send by mail Print  Save  Delicious 
Date: Monday, 28 Jan 2008 15:35

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. ^_^

Author: "Alex Sánchez" Tags: "Personal"
Comments Send by mail Print  Save  Delicious 
Date: Tuesday, 23 Oct 2007 21:41

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…

Author: "Alex Sánchez" Tags: "Personal"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 14 Sep 2007 14:57

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!

Author: "Alex Sánchez" Tags: "Personal"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 12 Sep 2007 17:51

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.

Author: "Alex Sánchez" Tags: "Redes Sociales"
Comments Send by mail Print  Save  Delicious 
Date: Tuesday, 24 Jul 2007 10:28

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 */ 
	private RenderingHints opciones = new RenderingHints(null);
 
	/** Constructor de la clase */
	public ProcesadorImagenes() {
 
		// Cargo las opciones de renderizado que me apetezcan	
		opciones.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		opciones.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
		opciones.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
		opciones.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
		opciones.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
		opciones.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
		opciones.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
		opciones.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
	}
 
	/** Devuelve la lista de formatos disponibles a leer por ImageIO	
	 * @return un array de strings con los mismos.	
	 */
	public String[] dameFormatosUsables(){
 
		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
	*/
	public BufferedImage escalarATamanyo(final BufferedImage imagen,
			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
		double fEscala = Math.min(escalaX, escalaY);
 
		// 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
	*/
	public BufferedImage escalar(final double factorEscala, final BufferedImage srcImg) {
 
		// 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
	 */
	public boolean salvarImagen(final BufferedImage imagen, 
			final String rutaFichero, final String formato) {
 
		// Comprobacion de parametros
		if (imagen != null && rutaFichero != null && formato != null) {
 
			try {
				ImageIO.write( imagen, formato, new File( rutaFichero ));
				return true;
			} catch (Exception e){
				// 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
	 */
	public static void main(String args[]) {
 
		// Variables locales
		BufferedImage imagen;
 
		try {
			imagen = ImageIO.read( new File( "prueba.jpg" ) );
			ProcesadorImagenes pi = new ProcesadorImagenes();
 
			// Escalo algunas imagenes como pruebas
			BufferedImage imagen800_600 = pi.escalarATamanyo(imagen,800, 600);
			BufferedImage imagenSnap_Shot = pi.escalarATamanyo(imagen,96, 96);
			BufferedImage imagenMediana = pi.escalarATamanyo(imagen,500, 500);
 
			//	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
			String[] formatos = pi.dameFormatosUsables();
 
			// los voy mostrando
			for (int i=0; i < formatos.length; i++) {
				System.out.println(formatos[i].toString());
			}
 
			// Final del metodo con exito
			System.exit(0);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
Author: "Alex Sánchez" Tags: "Java"
Comments Send by mail Print  Save  Delicious 
Date: Tuesday, 17 Jul 2007 01:22

Un año más la gente de Subflash organiza unos Talleres abiertos de verano el 25 y 26 de Agosto, donde flasheros de todos los lugares de España y Latinoamérica se juntan para asistir a las ponencias, compartir experiencias, conocimientos y disfrutar del comer y beber del lugar. Tras Teruel, Madrid, Barcelona y Oviedo, este año toca Málaga.
Este evento sin ánimo de lucro está dirigido a todos los desarrolladores web. La convocatoria es abierta, con lo que cualquier persona podrá inscribirse en el sitio web para asistir a las ponencias, bien como oyente si se encuentra en Málaga, o bien mediante opción completa, con alojamiento y pensión completa.
Personalmente solo puedo escribir alabanzas hacia este evento, que… no sólo me ha servido en el plano profesional, sino también en el plano personal, forjando grandes amistades con muchos de los asistentes durante los cuatro años que llevo asistiendo al evento.
Este año no va a poder ser por temas académicos y no podré asistir. Solo les deseo que lo pasen tan bien como yo lo hice en los años anteriores, y animo a todo aquel que habite en el mundillo del desarrollo web y Flash a que se inscriba para este año. La experiencia es única!

Más información:
http://www.subflash.com/talleres/2007/

Author: "Alex Sánchez" Tags: "Actionscript"
Comments Send by mail Print  Save  Delicious 
Next page
» You can also retrieve older items : Read
» © All content and copyrights belong to their respective authors.«
» © FeedShow - Online RSS Feeds Reader