Blog

Problem

Trying to save images using Save For Web onto an NFS share using Photoshop CS4 11.0.1 in Mac OS 10.5.8 only works for one overwrite.

Steps to reproduce

  1. Save a file using Save For Web to an NFS share
  2. Save the same file again, choosing to overwrite
  3. Save the file a third time, choosing to overwrite

Expected results

File saves successfully! No other software has a problem with this. Not even Photoshop itself, which can save PSDs over and over again without event. Only Save For Web is broken.

Actual results

On third write:

Could not write the file. A file-system error has occurred.

On all subsequent writes:

Could not write the file. The file was not found.

YuMeWrapper is an ActionScript 3 wrapper around YuMe Network’s library SWF for publishers. It provides a consistent abstraction of their ActionScript 3 SDK, as well as much more thorough documentation of the YuMe SDK than what YuMe themselves provide.

This wrapper supports all of the standard YuMe library functionality, including pre-roll, mid-roll, overlay, and post-roll advertisements, with two exceptions: midroll playlist prefetching is not supported, and extra fullscreen options are not supported. It also provides loads of additional fixes and functionality that does not exist in the YuMe library core.

Get more information and download YuMeWrapper

If you are trying to use asdoc and all it does is spit out a completely useless “Error: null”, check to make sure that there are no Mac OS resource fork files (file starting with ._) hanging around in the source directories that you are trying to document. asdoc barfs on them and will throw this error if they exist. (No data is stored in the resource fork of ActionScript files anyway, so delete away!)

I had a need for abcdump, which is a bytecode decompiler for ActionScript 3. Unfortunately, most of the instructions on the Web right now regarding how to compile this particular piece of software seem to refer to older versions of the Tamarin codebase and so no longer work. It took about an hour to piece together information to get the compilation process working again. So, here are some up-to-date instructions on how to compile abcdump from source. (No doubt that these instructions will become wrong too at some point in the future!)

  1. Follow the official Tamarin Build Documentation to get a working version of avmshell (formerly known as avmplus). You may need to modify the Makefile that configure.py generates, changing -fstrict-aliasing to -fno-strict-aliasing, in order to get it to compile successfully. (This is required only if you get the error “dereferencing type-punned pointer will break strict-aliasing rules”.)
  2. Get a copy of asc.jar, either by building it, or by downloading the latest version of the Flex 3 SDK. Copy it into the tamarin-central/utils directory.
  3. Re-compile the builtin library: cd tamarin-central/core; java -ea -DAS3 -Xmx200m -DAVMPLUS -classpath ../utils/asc.jar macromedia.asc.embedding.ScriptCompiler -d -builtin -out builtin builtin.as Math.as Error.as RegExp.as Date.as XML.as. Failing to do this will result in “The definition of base class Object was not found.” on the next step.
  4. Compile the ByteArray library: cd tamarin-central; java -jar utils/asc.jar -import core/builtin.abc shell/ByteArray.as
  5. Compile abcdump: cd tamarin-central; java -jar utils/asc.jar -exe objdir-release/shell/avmshell -import core/builtin.abc -import shell/ByteArray.abc utils/abcdump.as

Following these instructions, you should now have a stand-alone, executable abcdump.exe in the utils directory. One caveat to note is that you will need to pass “--” as the first argument when you try to run the stand-alone executable, since otherwise the virtual machine interprets the arguments as its own instead of passing them to the application. Happy hacking!

Recently, I had the opportunity to trial Microsoft Office Live. I assume this product was launched to be a competitor to Google’s increasingly competent line of online collaborative editing tools, but if that’s the case, it has missed the target so completely that I’m shocked they didn’t scrap it and start over.

First, Microsoft use user-agent sniffing to reject people that are not using their blessed shortlist of “approved” platforms. That means that, despite going through this once before with ActiveX in the beginning of the decade, Microsoft still have not learnt that the whole point of a Web application is to be platform- and device-independent. By faking the user-agent on my Linux machine I am able to log in, only to be greeted with a read-only version of a spreadsheet that another user had already uploaded.

At the time, I assumed that my inability to make any changes to the spreadsheet was caused by my use of a “non-approved” platform, so I left and didn’t return. But today, one of my friends running IE8 on Windows told me that actually, no, this is the way it works on all platforms. The only way to edit documents in Microsoft Office Live is by owning a copy of Office; clicking “Edit” downloads the original document and opens it in Microsoft Office.

If Microsoft think that Microsoft Office Live is going to rival the Google Docs platform in any way in its current incarnation, I worry about their judgement. The reason that Google Docs is so popular is because it is always available, on any platform, for free. You can click a link and be editing a document within your browser in less than 5 seconds. Microsoft Office Live, on the other hand, requires you be using an “approved” platform, that you own a copy of Microsoft Office if you want to edit documents, and that you open a separate application whenever you want to make an edit to a document that’s been uploaded. In addition, Microsoft Office Live only offers a primitive checkout system for document changes; Google Docs, in sharp contrast, offers live collaboration with multiple parties with no need to block others from making changes simultaneously.

I’m sure that Microsoft sees Google as a huge threat to their core Office business, but if they want to compete effectively, this is not the way to do it.