Archive for the ‘Mac OS X’ Category.

flash in the pan

So, Flash player 10.1 is available in beta and includes mobile device oriented new features such as multi-touch gestures. Smart! Makes sense with Adobe strategy of delivering to emerging mobile devices. However there are a few million of us already using desktops and laptops with track pads, mouse wheels and mouse trac-balls who are feeling a bit ‘inhibited’. Flash is being used more and more to deliver applications either via browser or the AIR runtime. Such applications immediately feel somewhat inferior when a user cannot scroll or pan a view as they normally would native applications. Arguably ‘Rubbish’ rather than ‘Rich’ RIA in such cases.

For a long time the MOUSE_WHEEL event has been part of the Flash API but only officially supported on the Windows platform (in browser). Original reasoning for not implementing support for the Mac platform can no-longer be argued as all Macs for a number of years have been shipped with the Mighty Mouse (2005) and now Magic Mouse or Trackpads. All of which facilitate mousewheel style interactions. All of which go further and support horizontal as well as vertical scrolling interactions or ‘panning‘. There are JavaScript workarounds for in-browser Flash on a Mac such as this solution on hasseg.org or this SWFObject based pixelbreaker solution. Fortunately Flash applications delivered via the AIR runtime can respond to MOUSE_WHEEL events without any such workarounds. However MOUSE_WHEEL currently only facilitates vertical scrolling in any case.

We need to facilitate horizontal as well as vertical scrolling (panning) of content in response to events from ubiquitous input devices.

A few prominent applications I use often, which suffer:

  • TweetDeck : AIR based. High discoverability of lack of horizontal scrolling support
  • Adobe online store UK : In browser Flex application – Flash being used in an attempt to emulate HTML – no vertical scroll wheel support for Mac users
  • Adobe Flash builder : Design view (Java application with Flash based view)
  • Adobe Catalyst : Art-board view (Java application with Flash based view)

Adobe actively invite comment and suggestions on their products. More widely/easily through the Feature request/bug report form. They have opened up the bug tracking system for a number of products. Flash player being one of them. There is an active bug report with regard to this issue and I would encourage anyone with an opinion to contribute to the discussion and/or add weight by voting. Just sign up and access FP-1262. There is an active drive from within Adobe to help from the community to improve the quality of Flash Player and AIR.

As for the solution I think I’d like to see something along the lines of… Extending the flash.display.InteractiveObject with a ‘panEnabled‘ boolean property defaulted to false which, when true, allows the object’s Panning behaviour/event broadcasting (akin to doubleClickEnabled mechanism). So, when panEnabled is true, if the mouse pointer is over the InteractiveObject, and the user makes a ‘pan’ gesture, the frontmost panEnabled InteractiveObject broadcasts flash.events.MouseEvent.MOUSE_PAN events containing with the additional properties : offsetX and offsetY. Text based InteractiveObjects should default to panEnabled = true. Further, I’d quite like to see mechanisms to facilitate behaviours of nested pan-able objects. E.g. on a Mac, the front-most display object gets scrolled until it can scroll no further, then if the user continues the scroll input, the containing display object then scrolls.

In rounding up, the best place to contribute your opinions on this subject and have them heard by Adobe is here : FP-1262.

Editor bug in Mac OS X 10.6.1

UPDATE 10-Dec-2009: I’m pretty convinced now that this is an editor bug, not a Mac OS X bug. Essentially the editors are using default OS behaviour which I think is tailored for natural language editing rather than programme-code editing. Original post follows…

I’m currently finding in some applications that “word1.word2.word3″ is being treated as a single word as far as the Option-Left Arrow and Option-Right Arrow is concerned on my Mac. This keyboard shortcut should hop word by word. But currently hops from one end to the other. Not an issue for most users, but pretty serious for a programmer working with dot-notation syntax.

I first experienced this working with ActionScript in Adobe’s Flash Builder Beta 2 and logged a bug report, but further investigation reveals that some unrelated applications show the same behaviour. I have now logged a bug with Apple, but in the meantime I would be interested to know if others are experiencing the same? Or if you are running 10.6.1 and not seeing this issue? Please add a comment – I’m still trying to work out if it is something installed on my system. I don’t think it is basic user preferences as I am seeing the same in another user-account on this system.

Editors incorrectly treating “word1.word2.word3″ as a single word re opt-left and opt-right:

FlexBuilder 3 MXML and AS editors
FlashBuilder 4 Beta2 MXML and AS editors
Apple Mail
Apple OS textfields including:
Spotlight
Finder window findfield
Safari: form-textfields + google search field
editors with *correct* opt-left opt-right behaviour
TextWrangler
Adobe Flash CS4 IDE ActionScript Editor
Adobe DreamWeaver CS4 editor
Apple XCode editor
Apple Finder – filename clicked and editable when renaming
Firefox form-textfields and goodle search field
  • FlexBuilder 3 MXML and AS editors
  • FlashBuilder 4 Beta2 MXML and AS editors
  • Apple Mail
  • Apple OS TextFields including:
  • Spotlight
  • Finder window find-file
  • Safari: form-textfields & google search field

Editors showing correct opt-left opt-right behaviour:

  • TextWrangler
  • Adobe Flash CS4 IDE ActionScript Editor
  • Adobe DreamWeaver CS4 editor
  • Apple XCode editor
  • Apple Finder – filename clicked and editable when renaming
  • Firefox form-textfields and goodle search field

No CMD-SPACE in Flash Builder since Snow Leopard

Ok so CMD-SPACE is the default short cut to launch Spotlight. But I wanted that combo for ‘content assist’ with Flex/Flash Builder. Until installing Snow Leopard, that is what I had for a few years, and Spotlight relegated to CTRL-SPACE. However since SnowLeopard, the CMD-SPACE combo is not transmitted to Flash Builder. I assume this is down to Snow Leopard somehow reserving the combination. So begrudgingly I have returned to defaults…

Spotlight : CMD-SPACE
Flash Builder content assist : CTRL-SPACE

flash.display.BitmapData gotcha – well gotme for a while

The documentation is correct, so i have no excuse, but I didn’t initially read much beyond the signature of the constructor…

public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

I needed a transparent bitmap. Reading the default “transparent:Boolean = true”, I assumed by simply supplying width and height, a transparent bitmap is what I would get. Not so! I got a white rectangle. The reason being, that the default fill colour is 100% white. (The first pair of FFs representing the alpha in ARGB).

At first it would seem slightly unintuitive for the second default to conflict with the first, until one realises that the ‘transparent’ flag is there to indicate whether the object will support transparency or not. Not to state that it should be initially created transparent. Supporting transparency increases data size from 24 bits per pixel to 32 bits per pixel.

So what i should have done :

bmd = new BitmapData( width, height, true, 0 );

updated svn+ssh with DreamWeaver article

After various Mac system and security updates found that ssh+svn would result in errors…

svnserve: Command not found.
svn: Connection closed unexpectedly

Updated my previous article on using svn+ssh with DreamWeaver with a solution.

apple security update 2009-001 breaking PowerPC apps ?

Since installing this update I observe on my intel based mac that two PowerPC based apps now crash immediately on launch. Logging “Exited abnormally: Illegal instruction” to the console. The two applications affected so far on my system are CanoScan Toolkit X and more importantly Retrospect. Unfortunately the installers for both applications also fail with the same error. I worked around the canon issue by installing the LiDE 35 driver (for my LiDE 50) – then using “Import image…” in Preview. However not found a workaround for Retrospect yet. Looks to me like Rosetta is not working properly, although I have one PowerPC process running “RetroRun”.

Annoying and scary for my backups to be crippled in this way. Investigating. Not sure it was the security update as yet, only ‘evidence’ being the timing of the failures.

Update: Solved…

The following typed into terminal, followed by a re-start fixed the problem…

sudo update_prebinding -root / -force

As per instructions by Charles Minow in this thread on the Apple support discussions.

migrate from file to svn+ssh for Dreamweaver CS4 on Mac

I’ve been using subversion for a few years now. Initially used through subclipse within Eclipse/Flex Builder then later also used with Dreamweaver sites using tools such as svnX and scplugin along with the “Cloak SCM directories” command. In most cases to date, I have used the “file:///” protocol as this provides direct and efficient access to repositories which are available within the local system or local area network. I had been looking forward to subversion integration in Dreamweaver and when the CS4 public beta was released I had a bit of a moan about the absence of the file protocol. Despite my efforts in the beta’s forum and the Dreamweaver wish-list, it remains absent. So now to look to using a different protocol.

There is a helpful 3 part article on the Adobe site describing how to get started with dreamweaver CS4 and svn. In part 3, the author chooses to present how jump through the hoops to get Apache to serve and access a local repository over http. There are a number of reasons why this approach is not right for me:

  1. svn served using mod_dav_svn through Apache over http is less efficient than svnserve through ssh.
  2. I have multiple repositories, one per project and all stored on a separate project disc. To use the http method, I would need to edit httpd.conf to add a directory mapping and manage access rights for each repository.

By using svn+ssh, svnserve launches on demand (no need for a running daemon) and we have access to all the paths available to the ssh user logged in.

So, to get this going on Mac OS X 10.5…

Turn on ‘Remote Login’ in the ‘Sharing’ system preferences. Rather than using the default of allowing access for all users, I restricted access to only my user.

At this point you should be able to use sv+ssh urls from within terminal. e.g.

% svn info svn+ssh://user@computer.local/Volumes/full/path/to/repository

However if you try to use the same connection in a tool such as svnX you are likely to get error : ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory

To get around this we really need to establish public key authentication, which also serves to avoid you having to use your user account’s name and password for the connection.  Based upon this article on OpenSSH, I did the following:

% cd
% cd .ssh
% ssh-keygen -q -f id_rsa -t rsa

If the .ssh directory doesn’t exist, then use mkdir to create it. ssh-keygen creates both public and private keys.

Update 16-Feb-2009: Since writing this and applying an number of mac system and security updates i today found that any attempt to ssh+svn would result in…

svnserve: Command not found.
svn: Connection closed unexpectedly
[exit=1]

To solve the issue (based on notes here and here) I prefixed line 1 of id_rsa.pub with:

command="/usr/bin/svnserve -t"

As this is my one and only public key, I simply uses the following line to copy the public key to a file called ‘authorized_keys’. However if you are dealing with more than one key, you should use the guaidance in the OpenSSH article to append the key to that file.
%  cp id_rsa.pub authorized_keys
Once this has been done, attempting to use your svn+ssh  url within svnX should now work. Note: you may get the error re-displayed, but it will dismiss to be replaced by a current view of the repository. Also the first time, you will be prompted for the password. Here you need to enter the passphrase you used when you created the rsa key. I chose for this to be remembered in my keychain to avoid having to retype it in future.

With this done, you are now ready to contemplate setting up Dreamweaver. You need to be aware that an subversion working copy knows the url to the repository from which it was checked out. If your existing DW local copies of sites are subversion working copies checked out like mine via the ‘file:///’ protocol, you need to migrate them to ’svn+ssh://’ so:

  1. Firstly ensure that everything you need to retain from your working copy has been committed to the repository
  2. Drag your working copy to the trash
  3. Create a new folder to contain your local site
  4. In Dreamweaver create a new site and manage the settings accordingly, pointing the local site to the folder you just created.
  5. In the version control category of the site definition, choose ‘Access Subversion’
  6. Protocol SVN+SSH
  7. Server address is your local computer. i.e. ‘computername.local’
  8. Repository path is a full path to the repository then further on down to the folder containing the site. In my case, each repository is split into trunk, branches and tags folders, and my site folder named ‘webroot’ is a sub-directory of trunk. So my path will read:  /Volumes/full/path/to/repository/trunk/webroot
  9. Server port remains default
  10. Provide your user name
  11. Leave password blank. The connection will be authenticated using the RSA public key
  12. Click the test button and you should get the message “Server and project are accessible!”
  13. CLick ‘Ok’, to leave the site definition
  14. In the file view, right-click the site folder and choose Version control > Get latest versions
  15. The latest versions of the files in the repository will be checked out of the repository into your local folder which will now become a working copy.

Job done.

sensible(ish) code print from flex builder (on MacOS X)

Continuing the theme of occasional Flex Builder hints and tips…

Occasionally I need to see code printed on paper. Unfortunately the printing capabilities of Flex Builder, or more specifically in this case, Eclipse, are a bit messy…

  • the font is huge, and only 49 lines fit on an A4 page
  • if you have a background colour set to your code window, it gets printed – decimating your ink-tanks
  • printing is a two dialogue process – you have to go through Page Setup each and every time.

Of course in the actual Print dialogue, you have the standard Mac ability to change the page layout, paper handling etc, and save that detail in a pre-set. However…

The key things I want to achieve is to print 2up full duplex black and white, which gives me four pages of code per sheet of A4, and with a slightly smaller font size I get a more respectable 68 lines of code per ‘page’.

However I’ve found the following approach, once set-up, a little more convenient, and becomes a one-click print…

The Mac has a GNU enscript installed which converts text files to PostScript to send directly to CUPS. In my case I had to update the old Gimp-Print drivers to the current Guten-Print drivers in order to achieve duplex printing.

More information on Guten-Print and access to the drivers on SourceForge. The DMG contains good documentation and a simple package installer.

Once the new drivers are installed, and I’d recommend a new, additional, print queue be set up with appropriate defaults for your code printing, you need to set Eclipse to run an external script to print the currently active code window. From the menu: Run > External Tools > External Tools…

  • Name: enscript
  • Location: /usr/bin/enscript
  • Arguments: -2rT4v -DDuplex:true -diP5000 ${container_loc}/${resource_name}

Obviously you’ll need to tweak the arguments according to your personal print configuration.

External Tools Dialogue

flex, mac, external browser

Ted Patrick has been quite prolific of late at publishing little productivity hints and tips. I think this one from a couple of weeks ago is worth echoing and noting the workaround for the problem it raises on a Mac.

We are setting up Builder to launch the help pages into an external browser. The key advantage of which being that the code samples can then be copy/pasted. On a Mac there is a recognised bug in eclipse that if you choose Firefox as the external browser, and it is NOT your normal system default browser. Basically Eclipse attempts to launch a second instance of Firefox which will generate the “Only one copy of Firefox can be open at a time” dialogue…

Firefox close dialogue

So to get around this, you have two options.

Option 1, if you have Firefox as your default browser for the entire system, simply choose “Default system Web browser” in the Eclipse preferences panel.

Option 2, if you want to keep something else set as your system default browser e.g. Safari, but would use Firefox for displaying Flex Builder help, you need to either edit or create a new external browser entry using a command structure as per comment 5 on the eclipse bug sheet. Essentially the following settings work…

  • Location: /usr/bin/open
  • Parameters: -a firefox %URL%

Flex Builder > General > Web Browser >Edit external browser

initial gripes with new Flash CS3 ui

I know – I’m turning into Victor Meldrew. I can’t seem to help it. Should Adobe sort out the current licensing and pricing nightmare I’m going through, I’m sure I will become more chilled.

While others have been hung up on the new icons, personally I have no issue with them. They remind me of Rowntrees Tooty Frooties – which is not a bad thing! My issues (admittedly minor) are with some of the work on the new user interface.

I can appreciate the general investment in improving the UI. However I find some of the additions odd, and on my system some seem poorly implemented?

1. Introduction of Windows style controls on the Mac.

Most of the palettes introduce a collapse control (-) and close control (x) in the top right-hand corner. Mac convention is for the close control to be top left control and in both cases I think aqua controls and positioning would have been better – more consistent with other (non Adobe) applications.

I also find it strange that most palettes introduce this new arrangement, but other ‘windows’ retain the standard Mac behaviour (e.g. document windows and the control window). Mixing it up in this way just feels odd.

DebugController

2. Palette drag

When dragging a palette, it will go semi-transparent. Potentially useful – being able to see what will be covered up before dropping the palette into position. This is also part of the softening of the UI and should enrich the user experience. But on my system, when the mouse is released, the palette disappears briefly before being re-drawn opaque. This ‘flicker’ when a palette is released is plain ugly and detracts hugely from the user-experience. Until it is fixed I would have rather not bother with semi-transparent efforts.

I guess this might be an issue with my system being quite old? (Mac G4 Dual 1GHz Mirror).

3. Welcome panel links to the Adobe site are not working as intended

I think this is just an issue of the Adobe site not having been updated to service the links. You’ll find that from the Flash Welcome window, clicking on either “Getting started ››” or “New features ››” simply dumps the user at the flash product page. The problem seems to be server-side. The pages which flash attempts to take you to, simply re-direct back to the product page.

We fare slightly better with “Resources ››”. However most of the content on that page is written for FlashMX 2004 or Flash 8. I think by now there should be some CS3 articles on there.

Hopefully that’s the end of today’s grumpiness. Although I just read the SaveAs Gotcha written up by Aral. :(