Monday, December 28, 2009

MySQL Uninstall on Mac OS 10.6

I had to uninstall a newer 64-bit version of MySQL to go back to a 32-bit version. Here are the steps:

# Remove folder with mysql installation
sudo rm -rf /usr/local/mysql-*
# Remove soft link to above folder
sudo rm /usr/local/mysql
# Remove receipts
cd /private/var/db/receipts/
sudo rm com.mysql.*

Thanks to this link for the critical bit on finding and removing the receipts.

Friday, December 18, 2009

Adobe Flash CS5 Versioning and Coding Enhancements

Adobe just released this sneek peak of Adobe Flash CS5. Two nice improvements are:
  • The ability to save projects as uncompressed xml-based text and asset files
  • Tight code authoring integration with Flash Builder 4
A seemingly minor enhancement is that the native .fla project file is now zip and xml based. What is more interesting and progressive is that you can also save the project as an uncompressed project folder where all the assets are laid out in your file system.

The layout within the project folder looks like this:

The two major advantages here are version control and the ability to directly manipulate the contained files with other tools. Versioning text files, as compared with binary files, means that you can diff versions and your source control system can take advantage of diffs between versions to reduce storage requirements. This is particularly relevant when you use git for source control because git keeps a complete copy of the repository on your local system.

A second major improvement in Adobe Flash CS5 is for ActionScript 3.0 developers (ActionScript 2.0 and FlashLite developers are left out here). Flash CS4's AS3 development environment was rather unsatisfactory. Rather then try to improve this, Adobe has gone the direction of Eclipse. Flash CS5 now includes tight integration with Flash Builder 4, a rich Eclipse-based code development IDE.

Wednesday, December 9, 2009

Saving Web Receipts Files on Mac OS X

Mac OS X has a handy feature that allows you to, via the print dialog, save PDF files directly to a web receipts folder. This is particularly useful when making online purchases in a browser.

You enact this feature by executing command-P (or File > Print), pulling down the combo box in the lower left of the print dialog, and choosing Save PDF to Web Receipts Folder. This automatically saves a PDF file directly to your ~/Documents/Web Receipts folder. How cool is that!

In Mac OS 10.5 and 10.6, this is now a python script that you can customize. Below I show how to modify this file to change the default save location and prepend the date to the resulting filename.
  1. Navigate to /Library/PDF Services/Save PDF to Web Receipts Folder.pdfworkflow/Contents.
  2. Edit the file tool. It doesn't look like you need to be root to do this, but if you do use sudo -s from the command line.
  3. Towards the top of the file add another import statement import datetime
  4. In main modify destDirectory to be your desired save folder location. I used:
    destDirectory = os.path.expanduser("~/PDFDocs/Receipts/")
  5. Modify these lines from:
    title = safeFilename(title)
    destFile = title + ".pdf"
    to:
    title = safeFilename(title)
    # Create a YYYYMMDD string
    today = datetime.datetime.now().strftime("%Y%m%d_")
    destFile = today + title + ".pdf"
  6. Presto, you are done! At least until a major software update clobbers this file. Which is why I wrote this blog entry: to remind me how to do this again the next time.

Moving Onwards from Adobe

I spent the last 16 years working at Adobe Systems. I was pretty quiet there, not writing much publicly about what I worked on. I'll say a few things about that here, and then give a hint as to where I am going next.

What I am most proud of from my time at Adobe is the security engine that we built from the ground up and put in place in Adobe Acrobat. This engine provides digital signatures and document encryption to Acrobat and PDF. The functionality that we added and the libraries that we built really are the best out there. It wasn't just me saying this: NIST loved our PKI validation engine.

It's not just that we did an outstanding job of supporting OCSP and CRLs with all the OID nuances. We also have a great, flexible chain validator, and the ability to wisely tap into the Windows platform for trust, in those instances where that trust has been properly configured within an organization.

Though I lead the engineering and, in fact, the early business effort to add these capabilities, I certainly don't take all the credit. I had an outstanding group of engineers who somehow, despite me, managed to build a solution that has integrity and robustness right down to the last line of code.

For all the years I toiled on digital signatures, we didn't see tremendous customer use early on. In fact that was a good thing, because it took a number of releases (Acrobat 4.0 through 6.0) before we were able to put into place all the bits to make the system robust.

This is changing. Adobe now has strong business support behind digital signatures (check out the Security Matters blog), folks like PDF Evangelist Leonard Rosenthal are contributing immensely to making PDF an ISO standard and PDF signatures, via PAdes, an EU electronic signature standard and the Acrobat engineering team continues to add important capabilities.

There really is no other good solution out there. PDF is the way to do electronic document signatures. Adobe has recognized this and is continuing to invest in this technology. This last release the engineers added support for long term archive signatures, a flexible certificate trust update mechanism, and better Mac OS X integration.

Aside from helping to build Acrobat, I spent a couple of years in Adobe's Advanced Technologies Labs furthering my research into security. My particular interest was in adding strong and effective security to browsers, via Flash, primarily for use with authentication and payments. If you look at OpenID and Microsoft's InfoCard, you get an idea of my area of interest. We had some really great ideas that, in my view, addressed many of the shortcomings you see today with OpenID, Facebook Connect, PassMark (RSA) and other solutions. But I'm afraid we were a bit ahead of our time. And so instead of today being able to see the fruits of that vision, you will have to wait until tomorrow to see bits of functionality dribble into the Flash APIs.

Where am I going next? It was my desire to work on a few personal projects. Now I have the freedom to do this and am working on all sorts of things ranging from presentations and business plans to technical education and coding. For the next while I am focusing on technology and this will be reflected in my blog. I'm quite enjoying reconnecting with technology after being too much of a manager for a few years. I won't say what it is that I'm working on - you'll have to watch this space to find out - but I will say it's really awesome to have the freedom to work on all aspects of a project, and not be confined by the structure of a large organization. Life is good.