inicio mail me! sindicaci;ón

Exciting new 3d technology

The most interesting thing to me about this spoof is how well it is shot. Look at the colors! It looks like it was filmed on old film stock from 1973. What did they shoot this on? And did they post process the hell out of it to get that look?

Better resizing tool – Genuine Fractal 6.0

OnOne Software has released Genuine Fractal 6.0 (details), and I was hoping to see it in action at the Photoshop World Conference in Boston. They claim you can take a 12mp image up to 75x115 inches! That's deeply insane and makes me drool about about making posters from shots taken with older digital cameras. The key is in the edge detail - GF's processing preserves edges much better than Photoshop's native resizing algorithms. I just moved into a new office with some new wallspace, so I may be taking GF 6.0 for a spin. For $160, why not?

Other exciting applications are resizing video exported as frames. I wonder how it compares to Red Giant's Instant HD? Since the leap from SD to HD is fairly small, it may not be noticeably better. But for taking frames from video and resizing them for some print work - GF may be a good tool.

Rapid prototyping from the designer’s chair

So many projects don't have the best result because they never get tested or get tested at stages when it has become to difficult to make major changes. MediaLabs just released a plugin for Photoshop that has great possibilities for creating rapid prototypes. It's called Sitegrinder 2 and it can build HTML/CSS websites right from Photoshop comps. I would not just throw this into a designer's work flow and say "figure it out," since the whole process involves using strict naming conventions in order to build the site (go here to see a list of the Sitegrinder "hints").

From what I can glean from the product tour, you could take some comps from a designer and quickly clean them up and add the Sitegrinder "hints" and then throw them in front of some users and do some quick testing. Do they recognize what is clickable? Do they see how they information flows? No big deal if it's a static representation of an animated site - animation rarely helps a user "get it." I would much rather know if people are recognizing buttons for buttons before I spend time animating and adding some pop. And the Agile freaks would love this.

Light painting at night

After finding some shots of Pablo Picasso drawing with a pen light, I could not resist trying this. My drawing was...marginal, but at least the setting was gorgeous. For some great examples of full moon light painting, check out www.lostamerica.com.

Light painting on the veranda of a Culebra beach house

Light painting on the veranda of a Culebra beach house

Inheritence and variables in Actionscript 3.0

I am working on a lot of framework type stuff right now and ran into an interesting...I don't want to say "problem." Let's say "hurdle." I had worked out a base class for scrollbars (screw the AS 3.0 component library) and wanted to keep my base class light and fast. Seriously, stay light and fast with your framework components. If you want to write a framework where the base classes can compete in the Olympics - don't bother. Just use Flex. But if you want light and fast - write it yourself and be smart.

Anyway, the idea was to keep the base classes really light but easy to extend. In the case of scrollBars, the functionality is not changing for any subclass - just the skins and the animation. I love the protected attribute for properties and methods in base classes. Your subclasses will be able to access anything and override what needs to be overridden. I simplified version of the base class is below.

package
{
	public class ScrollBar extends MovieClip
	{
		public function ScrollBar()
		{
			super();
 
			createChildren();
 
			addChild( scrollTrack );
			addChild( scrollArrow1 );
			addChild( scrollArrow2 );
			addChild( scrollThumb );
		}
 
		//--------------------------------------------------------------------------
		//
		//  Properties
		//
		//--------------------------------------------------------------------------
 
		protected var scrollArrow1 : ScrollArrow;
		protected var scrollArrow2 : ScrollArrow;
		protected var scrollThumb : ScrollThumb;
		protected var scrollTrack : ScrollTrack;
 
		//--------------------------------------------------------------------------
		//
		//  Methods
		//
		//--------------------------------------------------------------------------
 
		//--------------------------------------------------------------------------
		//  createChildren
		//--------------------------------------------------------------------------
 
		/**
		 *  @protected
		 *  Creates the default children of the ScrollBar.  Meant to be overridden when
		 *  the scrollBar has been reskinned.
		 */
		protected function createChildren () : void
		{
			// up arrow
			scrollArrow1 = new ScrollArrow();
			// down arrow
			scrollArrow2 = new ScrollArrow( ScrollArrow.DOWN );
			// scroll track
			scrollTrack = new ScrollTrack();
			// scroll thumb
			scrollThumb = new ScrollThumb();
		}
 
	}
}

The hurdle came up when I tried to override a protected variable in a subclass. it would be great to just say:

package
{
	public class CoolerScrollBar extends ScrollBar
	{
		public function CoolerScrollBar ()
		{
			super();
		}
 
		//--------------------------------------------------------------------------
		//
		//  Properties
		//
		//--------------------------------------------------------------------------
 
		override protected var scrollArrow1 : CoolerScrollArrow;
		override protected var scrollArrow2 : CoolerScrollArrow;
		override protected var scrollThumb : CoolerScrollThumb;
		override protected var scrollTrack : CoolerScrollTrack;
	}
}
 

This is NOT allowed. In Actiosncript 2, we could override whatever we wanted - just redeclare the variable and it would take over whatever you were overriding. AS 3 gives us an "incompatible override" compiler error. Initially I found this frustrating - I did not want to take the time to cast all these variables and I didn't want to clog up a base class and sub classes with extra methods. The solution to this is easier than all of that pain and makes sense when you think about. The code:

 
package
{
	public class CoolerScrollBar extends ScrollBar
	{
		public function ScrollBar()
		{
			super();
 
			createChildren();
 
			addChild( scrollTrack );
			addChild( scrollArrow1 );
			addChild( scrollArrow2 );
			addChild( scrollThumb );
		}
 
		//--------------------------------------------------------------------------
		//
		//  Methods
		//
		//--------------------------------------------------------------------------
 
		//--------------------------------------------------------------------------
		//  createChildren
		//--------------------------------------------------------------------------
 
		/**
		 *  overridden
		 */
		override protected function createChildren () : void
		{
			// up arrow
			scrollArrow1 = new CoolerScrollArrow();
			// down arrow
			scrollArrow2 = new CoolerScrollArrow( ScrollArrow.DOWN );
			// scroll track
			scrollTrack = new CoolerScrollTrack();
			// scroll thumb
			scrollThumb = new CoolerScrollThumb();
		}
 
	}
}
 

This code works as long as the CoolerScrollArrow is a subclass of ScrollArrow. It is just that simple (and you can see why having methods like createChildren are great for base classes - so handy when extending later on).

Why do I find this better than the days of Actionscript 2? Well, the compiler can still police us a bit. If you try to assign say, BlueButton to one of those variables, and BlueButton only extends Sprite and not ScrollArrow - you get an error right in FTD and can't even compile ("You cannot assign 'BlueButton' to an 'ScrollArrow'..."). If we could override anything we want, we would probably break our base class quickly by changing something to a data type where key properties and methods don't exist.

Aptana plug-in for eclipse on Windows Vista

Hopefully this will save someone a few hours. Apparently, if you're running Aptana on Windows Vista and have the Aero Theme activated, the File Panel will not work. You get the following error: java.lang.NoSuchMethodError: java.net.URL.toURI. At first I was convinced that I had the wrong verison of Java installed (Aptana freaks out if you have less than version 1.4), so I did the fun upgrade to Java SE 6 update 2 and the same message popped up. I went into Aptana trouble shooting and clicked "Clean Configuration" and watched eclipse restart and the error was still there. I closed and opened the File Panel, Vista warned me that it needed to change the Theme from "Aero" to "Vista Basic" and then I was fully functional! Not sure if I needed to run the latest Java update or no (since I didn't check the version, just updated on principle), so the theme change alone may have done it.

And, no, to all you haters out there, I was not running the crazy Aero theme with all of the glass and shiny bubbles. I had stripped it down to nothing (not even drop shadows) so it really didn't look much different than the Vista Basic Theme. Performance matters a lot more to me than jelly buttons.

Windows Vista and the Case of the Missing Rubber Duck

So, setting up the first Vista laptop at Lavjaveler (codename: Javmobeler2; Notebook computers do have sequels) and there is no rubber duck picture in any of the user profile options. I have always been the duck! I know, some people think the duck is stupid, but it was a favorite dog toy at the Kelsey house. We had one duck we thought was near indestructible until it was revealed later that that particular dog just had teeth that were ground down to nubs from her previous home. Well, for those of you NOT making fun of me and were missing the duck, never fear! The development server still runs XP and I poached that duck (because I can). Download it below.

Rubber Duck Picture