Current location: Oslo, Norway

PlanetFlash.org

Posted on Monday, April 14, 2008 @ 15:35 CET

Last week at the Flash User Group Norway meetup, Knut showed us one of his latest projects: PlanetFlash.org. So what's Planet Flash - its like MXNA, but its up™ :)

I don't visit MXNA that much simply because lately its often down or simply very slow. Anyhow, the only advantage it has over PlanetFlash is the rating (which shows the click rate), but I can live without that. Normally I live within Bloglines (the Dev:Flash and Dev:Flex folders contain the Flash bloggers I read), but sometimes its nice with something completely different.

That said, there are a few features I'd like:

  • The "Blogs" list is cool to show what is being aggregated. However, it would be nice to have a link to the blog and another to the feed. If I see a name I don't recognize I'd like to visit their site instead of stare at some XML :)
  • The link to the feed should be correct - for example my feed is at http://paulofierro.com/rss.xml. Right now it just sends you on to FeedBurner because I like their service but if that changes in the future, I'd lose the people subscribed to the FeedBurner feed. Checking the <link rel="alternate" type="application/rss+xml" /> tag in the <head> (which I believe most blogs provide) would get the right URL
  • It would be nice to able to export the list as OPML

    Anyways, just nice-to-haves :) Be sure to check it out and let Knut know if what you think of it.

    - paulo

  • Using FontForge to convert Adobe Type fonts on OS X

    Posted on Monday, April 14, 2008 @ 14:34 CET

    I've mentioned FontForge before, but never really explained how to use it - its really powerful and I use about 2% of its functionality, a little like how I use Photoshop probably. In any case, this is a quick recipe to converting Adobe Type fonts that have .PFM and .PFB extensions.

    First we need to install it, so:

    1. Check if you have X11 - its under Applications/Utilities. If not, install it - located on your OS X install DVD under Xcode Developer Tools
    2. Download and install the FontForge package for your flavour of OS X from here. FontForge_intelmacX.4_... for Tiger, FontForge_intelmacX.5_... for Leopard.

    Once you have it installed, run X11. Then from the menu select Applications > FontForge. The app starts up, you forgive the interface and find the font you want to open by locating the .PFB file or files (you can select multiple files). Once the font is opened:

    1. Select File > Generate Fonts
    2. Select the type of font you want to output. OpenType (CFF) does the job for me, but if you're use them with an app that doesn't support OTF, then TrueType is another way to go
    3. I turn off "Validate before saving", because there will be warnings, but this is optional
    4. Hit Save and FontForge will create the font files for you. My usual settings are shown in the image below.
    5. In the Finder, select all the new fonts and open them at the same time. FontBook is smart enough to recognize the fonts within the same family and install those at the same time which is a nice touch. This means you don't have to handle 20 different windows when installing the font

    That's it! Is there a better, more efficient way to do this? Yeah, according to a Linux friend of mine you can run it from the Terminal which means you could script it if you need to convert tons of fonts. But for smaller operations this will work out quite nicely.

    Will there be issues with the fonts that are converted? Maybe - I'm no fontographer, but so far this has worked fine for me :)

    - paulo

    Certified Flex head

    Posted on Thursday, April 10, 2008 @ 17:02 CET

    On a whim, I took the Adobe Flex 2 certification exam this morning and passed, weee! :)

    I've been living in Flex for the past year or so and I'd been thinking about it so I checked out the practice test at the end of the official exam guide last night, and that was the final push. Signed up with PearsonVUE, dropped the $150 (which is not that much now that the dollar is under NOK 5, WTF?) and that was that.

    The Java related questions took longer to answer since I only have experience integrating Flex apps with AMF and XML-based services so far, but it was ok all in all. Once you're familiar with a few of the APIs you kinda know the structure of things. So playing with Flex and reading its Bible seemed to be enough, which was the same strategy I followed for the Flash exam two years ago.

    One thing I found curious, since English isn't the official language in Norway you get an extra 30 minutes to complete the exam. Tanks!

    - paulo

    Loading SWFs exported from Illustrator CS3 as MovieClips

    Posted on Wednesday, April 09, 2008 @ 14:07 CET

    Earlier Chris showed me an issue with Illustrator CS3 I hadn't come across. Basically exporting artwork to SWF for Flash Player 9 works fine, but (unexpectedly, at least for me) the resulting SWF is seen as a AVM1Movie when it gets loaded in to another SWF.

    If this is an issue, then this AVM2Loader class should be able to help out. You use it just like the standard Loader class, and it hacks AVM1 movies to AVM2, though apparently there's an issue with audio). Sample code follows:

    import net.fladdict.display.AVM2Loader;
    
    var loader:AVM2Loader = new AVM2Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
    loader.load(new URLRequest("art.swf"));
    addChild(loader);
    
    function onLoaded(event:Event):void {
        var info:LoaderInfo = event.target as LoaderInfo;
        trace(info.content);
    }

    There is one little gotcha when exporting as a SWF in Illustrator. You have to use the "File > Save for Web & Devices" dialog. There you have to pick SWF as the format, Flash Player 9 as the output type and then either "AI File to SWF File" or "Layers to SWF Frames". Both work fine and trace out [object MovieClip] once loaded in.

    What doesn't work for some reason is using "File > Export" and choosing SWF as the format and Flash Player 9 as the output type. Loading a SWF exported in this manner always traces out [object AVM1Movie]. Weird.

    - paulo

    Removing .SVN folders in OS X with Automator

    Posted on Monday, April 07, 2008 @ 13:54 CET

    Occasionally I come across some excellent ActionScript libraries that I download to play with (for example Papervision and Degrafa) from their respective Subversion directories. If they seem useful (like the mentioned examples which are both super sweet in their own right) I add them to our Subversion repository, but before I do that I need to remove all the .svn folders which are present in each and every folder.

    Not a fan of doing this by hand I looked for a way of automating it. Now if you're comfortable in the Terminal, all you need to do is navigate to the top directory and run the following command which will remove all .svn folders recursively:

    find . -type d -name ".svn" -exec rm -rf \{\} \;
    

    Now if the Terminal is not your thing, or you want a way to integrate this with the Finder then the Automator is your friend. Simply fire up Automator and choose a Custom workflow. Then make a workflow that looks like so:

    Then save it as a plugin for the Finder (File > Save as Plugin) and give it a name. Now all you have to do is right-click on the folder containing the nested .svn folers and select More > Automator > Remove .SVN Folders.

    If you don't want to make it yourself, you can download the workflow here. Unzip it and within your home directory, move it to Library > Workflows > Applications > Finder. You might have to logout and login (or relaunch the Finder) for it to appear.

    - paulo

    My list of OS X tools and utilities I couldn't live without

    Posted on Thursday, April 03, 2008 @ 12:25 CET

    It seems like everyone around me is switching to Macs (5 friends in the past two weeks) and the questions naturally arise about what apps one needs, and what is the OS X replacement for insert-Windows-app-here. Here's my list of third-party apps and utilities I couldn't live without:

    • Transmit - hands-down the best FTP app out there
    • Quicksilver - app launcher and sooo much more (if you spend 5 mins and read the docs)
    • SMCFan - control default fan speeds (for older models, if you want to disable egg-frying mode)
    • Xtorrent - its like iTunes for torrents (legal ones of course)
    • Adium - IM client that supports all networks (MSN, GTalk, AIM, Yahoo! etc)
    • Textmate - hands-down the best text editor out there
    • NeoOffice - OpenOffice built for Mac
    • Camino - FireFox clone for Mac (without all the crashes, but sadly also the extensions :)
    • UnrarX - RAR utility
    • Fugu - SSH/SCP client
    • SCPlugin - SubVersion client that integrates with the Finder (configuration help here)
    • Connect 360 - Xbox360 media center
    • MediaLink - PS3 media center
    • VLC - universal media player. Plays nearly anything you throw at it
    • Perian - codecs for divx/xvid, ac3, flv, etc
    • Flip4Mac - lets you play back Windows Media files
    • MenuCalendarClock - clock replacement with calendar + week numbers
    • AppZapper - application uninstaller
    • MousePosé - presentation helper
    • ScreenFlow - hands-down the best screen capturing app
    • OmniOutliner - fantastic outliner
    • OmniFocus - fantastic task manager
    • Skype - um, its Skype (integrates with the Address Book too)
    • Deeper - configuration utility
    • FBCal - FaceBook birthdays + events calendar for iCal
    • FlickrExport - Flickr Exporter for iPhoto
    • Twitterriffic - Twitter client

    There's probably one or two that I missed but I think that covers most bases.

    Now here's a few gems that ship with OS X:

    • Dictionary - dictionary, thesaurus and wikipedia in a single app. Hover over a word anywhere and hit Control+Command+D to look it up
    • Preview - preview any file (nearly) instantly. Finally open up those PDFs without waiting an hour :) In Leopard, hit Space to preview it using QuickLook
    • FontBook - a font manager that works (unlike its Windows'control panel counterpart)
    • DigitalColor Meter - utility to get the colour of any pixel on the screen (Shift+Command+H to hold a colour)
    • Keychain Access - global password manager for all apps (that bother to integrate with it. Looking at you FireFox)

    When (not if) apps freeze, you need to force quit them. To do the Ctrl+Alt+Delete tango you can either:

    • right-click on the app's icon in the dock and hold down the Option (Alt) key, then select Force Quit, or
    • press Command+Option+Esc and selec the app from the list

    Keyboard combos for taking screenshots (they appear as PNGs on the destkop):

    • Whole Screen - Command+Shift+3
    • Certain Area - Command+Shift+4 (drag a box)
    • Specific window - Command+Shift+4, then hit Space and pick your window

    Perhaps not as intuitive as the "Print Screen" key, but far more better. And finally a comprehensive list for all keyboard fanatics.

    - paulo

    South Park is free

    Posted on Wednesday, March 26, 2008 @ 12:24 CET

    I love South Park, everything about it and its creators Matt Stone and Trey Parker. Its always hilarious, always brilliant.

    Once again they show off their genius and, showing that at least Comedy Central gets it, you can now watch ANY South Park episode whenever you want to at South Park Studios, simply goto the "Full Episodes" section. That's 12 seasons of episodes available at pretty good quality with only a few ads tossed in. Sweet!

    Like Michael Arrington from TechCrunch writes:

    Instead of fighting BitTorrent and sites like Allsp, South Park creators Matt Stone and Trey Parker are simply going to try to make them irrelevant by offering something better.

    Hopefully someone out there in Hollywood-land is watching and learning from this. Over on the NRKbeta blog they coined the NRKbeta doctrine:

    The only way to control your content is to be the best provider of it.

    Well put.

    - paulo

    Cairngorm and AMF:PHP - bending Services to work with NetConnection

    Posted on Thursday, March 06, 2008 @ 16:22 CET

    At work I've been getting into Cairngorm for a little while now and its quite a beast to tackle. It took me three attempts to actually grok what was going on, and although the article on DevNet is great and the examples I found are good (the image helps) until you actually play with it you might be as lost as I was.

    The biggest problem was setting up the business services. The Cairngorm Store example uses <mx:RemoteObject /> tags that tie in to the ServiceLocator. However, those have to be defined in services-config.xml and the endpoints are hard-coded and baked in (unless you do some Ant magic). That's something I didn't want to do, and also I'm using NetConnection to talk to AMFPHP.

    So what I ended up doing was rolling out a business Services class as a Singleton class (instead of an MXML) with a single NetConnection object, instead of one per service. I don't think this matters since every business Delegate has to know the remote method name anyway and I find its better to keep all that stuff within the Delegate. That way the Services class knows about the endpoint and encoding type, and the Delegates know what they're calling.

    The second change is within the Delegates. Instead of defining service as an Object, I define it as a NetConnection object. Also, the Delegate constructor receives an IResponder object to use as a responder. The problem is this is a mx.rpc.IResponder object, and NetConnection only plays with flash.net.Responders. However, they are pretty much identical so instead of doing like so:

    public function getProducts() : void {
         var call : Object = service.getProducts();
         call.addResponder( responder );
    }
    

    I do like so, simply creating references to the IResponder object's methods:

    public function getProducts():void {
         var r:Responder = new Responder(responder.result, responder.fault);
         // service is a reference to the connection within the Services class
         service.call("getProducts", r);
    }
    

    So the main concepts and ideas behind Cairngorm remain intact (I believe). I'm still a n00b when it comes to the microarchitecture so there might be something I missed, but this is working great for me for now :)

    - paulo

    Cutting the tight rope - getting rid of Acrobat as the default PDF viewer on OS X

    Posted on Wednesday, March 05, 2008 @ 14:20 CET

    After installing CS3 the second most annoying piece of Adobe software (the first being the all-might Updater, which seems to have become sentient), Acrobat decided to take over. If I needed to author, comment, annotate or do anything with PDF files other than just view them I might think otherwise, but I don't so I don't. Compared to Preview.app, Acrobat is a slow mofo that somehow decided to become my default PDF viewer.

    Fixing this in the Finder is easy enough, right-click file > Get Info > Open with > select Preview > Change All and you're done. But what about Safari? Clicking on a link to a PDF takes me to a blank page where I'm then asked for a program to use to view the PDF. Selecting Acrobat saves that preference but there's still a 20 second wait every time you attempt to view a PDF, not the speedy response you become used to when using Preview.

    Luckily getting rid of Acrobat as the default viewer in Safari is as easy as 1-2-3:

    1. Close Safari
    2. In the Finder, go to /Library/Internet Plug-Ins/
    3. Delete AdobePDFViewer.plugin

    Now empty the Trash to make sure that sucka doesn't come back :)

    - paulo

    FUGN Talk - Introducing AIR 1.0

    Posted on Monday, March 03, 2008 @ 01:12 CET

    Yesterday I presented an introduction to Adobe AIR 1.0 at the monthly Flash User Group Norway meeting (FUGN). I created a small demo app that shows off a few of the available APIs and went through how it was built.

    You can download the slides here as a PDF.

    The AIR app can be installed from here if you have the AIR runtime installed.

    The FlexBuilder project can be downloaded from here. Simply unzip the archive, launch FlexBuilder and select File > Import > Flex Project, select "project folder" and browse to the folder where you unzipped the project.

    If you have any questions simply drop me a comment :)

    Update (10.03.2008): Øystein put up a video of parts of the talk on YouTube and Vimeo (for slightly better quality).

    - paulo