Blog

Couldn’t believe my eyes today when i found this little nugget, as a mac only company, this is a huge help! now that rusty unmanned PC will have to work twice as hard for its place in the office!!

check it our: www.charlesproxy.com/

We are giving a hand running Flex Camp London 08, check it out:

Flex Camp London 08 is a FREE, community-run event for everyone interested in Adobe Flex! Whether you’re just getting started with Flex or you’re an expert, Flex Camp aims to provide something for you.

We’ve lined up some of the most experienced Flex developers in the UK who will share their knowledge on everything from creating your first application, connecting to data, creating components and development best practices through to selecting an application framework for larger projects.

Flex Camp will also include a panel discussion, provide an opportunity for you to show off what you’re building in the Show & Tell open session and let you meet up with other developers to talk about Flex. We’ve also got some great prizes to give-away throughout the day, including a ticket to Adobe MAX in Milan, Adobe software and Flex training courses from Academy Class.

Flex Camp is on August 28th, 2-8pm at Conway Hall, London WC1 - register today at http://ria.meetup.com…

This is a FREE event, but you must be registered to attend and names will be taken at the door.

See you there!

Recently here at emak mafu we’ve been building an internal framework to help quickly get some of sites up and running, and have been taking our queues from the Flex framework, asWing and the CS3 components. The best part about this is you get to dive into many peoples code to see their best practices and how they approach the problem (and sometimes shamelessly imitate it). Sometimes you will see a little to-do here, or a quirky comment from a developer as they implement a little hack, but sometimes you begin to get a whiff of a coding smell. This is not to say these frameworks are far in advance of our own, but I’d like to share one whiff that is too pungent to ignore.
The culprit is one mx.controls.listClasses.ListBase, in particular the method collectionChangeHandler(). The first thing to mention is that this class is nearly 10,000 lines long, which is an issue in itself although with the asDoc comments it is easy to forgive this. The method collectionChangeHandler is a method which is 395 lines long, which anyone who has read Refactoring will tell you is suffering from a bad case of long method, which is recommends a method be no longer then 10 - 20 lines.
Now to totally geek out, I started to count the number of if, try.. catch, and for.. loops so I could make a better point of why the method needs refactoring, but after 36th if.. else, 3rd try.. catch and 5th for.. loop I gave up. It is impossible to decipher the functionality without chatting to the author, and in such an important base class as well, where any of this behavior may need to be overriden. Anybody else out there found any blunders?

Wordpress have just launched an iPhone app that I’m testing right here, right now! I think I could get used to this. Go to the App Store and do a search for Wordpress to find it.

Hey,

Having just completed a project using vector vision, i cant wait to use it again! We have had a lot of positive feedback for the way it looks. I would recommend to anyone wanting to use fonts in 3D that this is the way forward.

I still cant get over the way mathieu-badimon over at five3d creates fonts to be rendered by the engine. You have to download a flash panel from his site which you pass in the font you want a 3d version of, and it creates a class with all the typographical meta data about each glyph needed to allow flash to draw with the standard ‘lineTo’ function each letter with the correct letter spacing: check out this class: HouschkaLight.as tis pretty amazing stuff!

Check out the photography agency site that we just did that I used this in trayler.co.uk

crisp fonts in papervision

June 26th, 2008

I’m doing a project at the moment which has a big word cloud as the landing page for which i used papervision. But as some of you might know - papervision doesn’t do vectors very well. I pretty sure i made the best of what papervsion offers - using smoothing on everything possible guided by the demo at zupko.info, but it still didn’t seem to pull off desired effect…. enter vectorvision - check out the demo below - i think it really captures the power of what it can achieve.

I haven’t looked into it much yet, but i’m pretty sure its exactly what i’m looking for as i breezed over the code.

check out the examples + code from the repository - you’ll need the greatWhite branch of papervision for it to get it to work

SafariFox

June 22nd, 2008

So just like Operating Systems before them, now browsers are starting to all look and feel the same. Personally I’m a Safari die-hard. I found Firefox 2 a bit slow and bloated on my MacBook Pro, and Safari has always been uncluttered and quick. The new Firefox 3 has stolen borrowed a lot of that from the “new” kid on the block. So much so that I find it hard to tell the difference while I have the 2 running. I went ahead and changed the Firefox logo for them to reflect the changes:

The new Firefox 3 logo

Hey,

I thought I’d share a Ulrika moment with you all regarding FDT 3 and Debugging…

For the past few days, every spare hour I’ve had I’ve been trying to get debugging working in Eclipse using FDT 3.0 enterprise - for some reason it just wouldn’t stop at the break points, and then…. urika! so i thought I’d tell you the thing they forget to tell you……

Since the demise of Xray browser in AS3, which allowed you to drill down into objects to find their children and variables, working out the state of the application at any given time has become a nuisance, time consuming, and down right frustrating. This even forced Alex - another of our developers out of Eclipse and into Flex Builder to author flash projects - just to get the debugger feature. This was even to the sacrifice of some the amazing features of FDT such as quick assist and even eclipses templates feature.

For all others that cant seem to get the debugger to stop at the breakpoints, it seems that eclipse dosn’t like the spaces that are in the path name to the default linked library ‘playerglobal.swc’ - so a simple sym link or just by moving this swc to a place with a clean source path and wolla - DEBUGGING IS BACK! oh - dont forget to update the linked library for the current project, or you’ll be back at square one.

hope this helps a lost debugger somewhere

Russ

First of all, just installed the wp-syntax plugin, so now we can have proper example code on the blog. I can’t believe it took us so long to get it on here, seen as its pretty much ubiquitous among the developer community, I find it really useful when browsing example sites so I thought we better get it on here sharpish.
Will that in mind I thought I’d share a particular hack/workaround that I was working with last week regarding for..in loops (not to be confused with for each loops).

1
2
3
4
for (var i : * in object)
{
 
}

This works fine for native objects and arrays, but back in the day of as2 you could loop over public variables and getters in custom classes as well. Not so in as3, it simply skips the loop. As you may have guessed by the title of this post the solution is to override the default valueOf() function with an object that represents your class, for example.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package {
 
	/**
	 * @author alexanderfell
	 */
	public class GeomPoint {
 
		private var _dimensionMap:Array;
 
		public function GeomPoint(newDimensions:Array) 
		{
			_dimensionMap = newDimensions;
		}
 
		public function get x():Number
		{
			return _dimensionMap["x"];
		}
		public function get y():Number
		{
			return _dimensionMap["y"];
		}
		override public function valueOf():Object
		{
			return {x:x, y:y};	
		}
	}
}

This way, we simply loop over the valueOf() instead of the the class. As a side note the code above is for a co-ordinate generation system which may require the dimensions to be labelled differently depending on which frameworks we are using (for example APE uses “px” and “py”) which is the reason for all the dimensionMap funny business, not me being unnecessarily difficult.
The eagle-eyed design pattern enthusiast may be able to see the decoration of an array here (this is just an example, the real code has an abstract class that sets the dimensions, then everything extends that abstract…. what you think I’d put all the code up here!?).

edit: damn syntax styles….

Digital Ink

May 3rd, 2008

You wake up on Sunday morning, reach for the newspaper beside your bed, press the update button, and the latest news streams in. It looks like a newspaper, feels like a newspaper, but hidden within the paper is digital ink and a wi-fi connection.

Digital ink has always fascinated me, and I think we are 5 to 10 years away from seeing it go mainstream. The obvious companies to push it to market will be Amazon, a publisher, or a newspaper. The business model could be that you subscribe to the service and get the hardware for free.

An outfit called plastic logic has some cool working prototypes that you can see here. Classic case of great technology presented really badly. Back to the future.

As the power requirements for such a device would be relatively low it could be powered by movement. The amount of paper saved by these devices would be huge, as well as the energy saved in hauling printed material around the world.

The first phase would be a monochrome image, but eventually these devices will be full colour with video and audio. The latter could be a disturbance on the tube so you can listen to stories on your wi-fi headphones.

And the reason for such a device? As our lives become more and more intertwined with technology we will inevitably yearn for the lo-fi days. The only problem is that the world will be moving too fast for that. A newspaper will be out of date before it gets tot the news stand. So we will start to disguise technology. Flashy, chrome gadgets will be replaced by devices that blend into our surroundings.