Archive for the ‘Development’ Category

App Tamer almost finished!

Friday, September 10th, 2010

So I’ve been working on this little application that fixes an annoying problem in OS X.

You may have noticed that the remaining battery life on your MacBook Pro (or whatever laptop you have) often plummets if you leave Safari displaying an ad in the background. That’s because most web browsers, as well as a number of other apps, continue running tasks or animations even when they’re sitting idle in the background. This can be pretty frustrating if you’re actually trying to conserve battery or use that CPU power for something useful.

I wrote App Tamer to fix this.  It pauses apps in the background to prevent them from chewing up CPU time (and battery life). I know, I know – you’ve probably seen some utilities that do this already. BUT – here’s the cool part – App Tamer stops and starts applications automatically. You don’t have to distract yourself by manually stopping and starting applications – it just magically works.

Have a look at the App Tamer page for details.  It’s in the final stages of beta testing, and you’re welcome to download a copy of the latest beta and try it for yourself. Let us know what you think at AppTamer@stclairsoft.com.

Being careful with LSSharedFileListAddObserver

Friday, November 6th, 2009

So, Apple added this cool little capability to the Launch Services API in Leopard: LSSharedFileListAddObserver will call your observer function whenever there are changes in a number of different file lists maintained by Launch Services. One of those lists is the “Recent Documents” list in the Apple Menu. “Great!” I thought, “I’ll roll this into Default Folder X to ensure that it doesn’t miss any recently used folders.”  It’s a simple API – what could go wrong?  As a long time developer, I should have known better – if you EVER say this (even if you never even say it out loud), you need to poke yourself with something sharp and realize that the consequences will probably hurt quite a bit more than that. “What could go wrong?” indeed.

So yes, here I am apologizing for not having poked myself after I used LSSharedFileListAddObserver without asking more questions – or at least without testing more.  Here’s how Default Folder X ended up using 60% of some users’ CPUs while doing nothing useful:

  1. DFX added itself as an observer for kLSSharedFileListRecentDocumentItems.
  2. The observer function got called by Launch Services because the user double-clicked a document in the Finder.
  3. DFX looked at the list, took the most recent entry in it (the first one), asked Launch Services for the URL of the document, and added the folder enclosing that document to its Recent Folders list.

Pretty simple, right? Yeah, I thought so too. This was tested thoroughly on Snow Leopard and performed fine, and all my Leopard testers reported that it worked well for them too.

So what’s the problem then?  Well, there’s this little “issue”…  If a user has a Windows server mounted on the Desktop, things get a little more interesting.  Normally, when Launch Services calls your observer function, it hands you the file list and you ask for a copy of the list.  The list itself is just a series of ID’s and references – to see what’s in an entry, you have to call LSSharedFileListItemResolve().  And that’s where the interesting part happened.  On Leopard, if the shared file list item lies on a Windows server, the act of calling LSSharedFileListItemResolve actually results in the item being changed, so your observer function gets called again the next time you hit your event loop.  The result of this is that you get called over and over again if you naively use LSSharedFileListItemResolve to get more info about the items that Launch Services is handing you.

So – the warning:  If you use LSSharedFileListAddObserver to watch the list of recent documents, keep a copy of the ID’s from the previous call and ONLY call LSSharedFileListItemResolve if there’s a new ID in the array.  Otherwise do nothing, or work off cached information – otherwise you’ll end up in an infinite loop, sucking down lots of CPU time.  And if you’re doing anything that interacts with the filesystem, make SURE you test with SMB shared volumes too.

Default Folder X high CPU-usage and responsiveness problems

Thursday, November 5th, 2009

Well, there’s definitely a bug in Default Folder X 4.3.2.  When running under Leopard and accessing SMB file servers, DFX will start consuming 20-60% of one CPU and will start to lag or become completely unresponsive.  This may also affect Snow Leopard and / or other types of file servers besides SMB.

I’ve got a test build available with a fix:

http://www.stclairsoft.com/download/DefaultFolderX-4.3.3b1.dmg

If you’re having any trouble with Default Folder X, please download and install it.  It should fix your problems.  If you run into any problems, please let me know as soon as possible at DefaultFolder@stclairsoft.com.

Thanks, and I apologize for the bug (I’ll post the gory details in a few minutes, since it’s an interesting little ‘gotcha’ in the Launch Services API).

Default Folder X on Snow Leopard: Build 4.2.2d7

Monday, July 27th, 2009

There are more compatibility fixes for Snow Leopard in this pre-release build.  Specifically:

  • Updated the Default Folder X preference pane to run in 64 bit mode.
  • Eliminated “auto malloc” errors in applications that use garbage-collected memory management.

You can grab a copy of the installer from:

http://www.stclairsoft.com/download/DefaultFolderX-4.2.2d7.dmg

Again, because of some of the fixes I’ve made since version 4.2.1, anyone running Snow Leopard should be running a pre-release build of Default Folder X 4.2.2.

If you encounter any issues with this build or have suggestions, please don’t hesitate to drop me a line at DefaultFolder (at) stclairsoft.com.  Thanks!

DFX: Important Snow Leopard and DFPreviewServer fixes

Wednesday, July 22nd, 2009

I’ve put together a development build of Default Folder X that incorporates a couple of important fixes, plus some handy new tweaks.  If you’ve noticed a process called DFPreviewServer slowing down your machine or have experienced problems while running Snow Leopard, this build will fix those problems.

You can download the latest pre-release build of Default Folder X here:

http://www.stclairsoft.com/download/DefaultFolderX-4.2.2d6.dmg

If you are running Default Folder X on a seed build of Snow Leopard you should install this update NOW.

Changes include the following:

  • Default Folder X contains a workaround for a bug in OS X’s hierarchical menu system.  The old workaround functioned fine in 10.4 and 10.5, but intermittently causes the hierarchical path menu in Open and Save dialogs to hang or crash in Mac OS 10.6 (Snow Leopard).  It’s been rewritten and now works correctly.
  • Fixed a bug in DFPreviewServer that could consume a lot of CPU time and memory. This occurred when previewing very large files (greater than 200 MB) that the system identifies as text files.
  • Added some user defaults so you can globally set a minimum file dialog size and column width.  Use these commands in Terminal to set the values:

    defaults write com.stclairsoft.DefaultFolderX minimumSize.width 800
    defaults write com.stclairsoft.DefaultFolderX minimumSize.height 600
    defaults write com.stclairsoft.DefaultFolderX minimumSize.columnWidth 250

    Change the numbers at the end of the commands to the sizes you want to use (in pixels).
  • Added a way to override the time before menu previews zoom to full size.  In Terminal, use this command to change the value (the default value is 1.5 seconds):

    defaults write com.stclairsoft.DefaultFolderX menuZoomDelay 1.5

    Change the “1.5” in the line above to the number of seconds you want for the delay.  Note that you need to turn Default Folder X off and back on again for this change to take effect.
  • Default Folder X’s “New Folder” command would not work in some applications when creating a folder within a folder that was reached by double-clicking on an alias. This has been fixed.
  • Corrected a problem with the “Make Save dialogs automatically default to the current document’s folder” setting that would cause DFX to default to the top level of your hard disk or your home folder in certain applications (including Address Book).

Default Folder X 4.2.1b2 is available for testing

Tuesday, June 30th, 2009

Here’s the 4.2.1b2 build of Default Folder X:

http://www.stclairsoft.com/download/DefaultFolderX-4.2.1b2.dmg

The new menu preview feature now has an on / off switch in the preferences window, and due to popular demand the small sized previews have increased to 192 x 192 (instead of 128 x 128).  The zoom-when-you-pause feature now works reliably on all systems, and this build works correctly under Mac OS 10.4.  Please download it and give it a spin!

Send any bug reports, impressions, and feature requests to defaultfolder@stclairsoft.com.  Here’s the full 4.2.1 change history from the ReadMe:

  • Default Folder X now gives you file previews in its menus.  As you mouse through Default Folder X’s hierarchical menus from the menu bar, you’ll see a preview of the file that’s highlighted in the menu.  Hover there for a couple of seconds and the preview will enlarge.
  • In Open and Save As dialogs, Default Folder X now puts a “Computer” item at the top of the folder hierarchy in the path menu.
  • New Spotlight tags were sometimes not written out to the shared OpenMeta recent tag list.  This has been fixed.
  • Spotlight tag completion now ignores differences in diacritical marks.
  • Added support for Fluid site-specific browsers when they’re running as menu extras.
  • Previews now correctly follow aliases so that a preview of the original file is shown when you select an alias in an Open dialog.
  • When two folders with the same name are in a menu, the menu items for them will now include the name of the parent folders that uniquely identify those folders (Default Folder X used to just show their immediate parent folders, but sometimes those had the same names too).
  • Fixed an AppleScript problem that would cause Preview to print a PDF file over and over again if you selected a the file in the Finder and chose Print from the File menu.
  • Changed the rebound feature so that filenames with a ‘:’ character are recognized correctly in Cocoa applications.
  • Corrected a problem that would result in Default Folder X not loading in multiple running applications that had the same creator signature (when running both Photoshop CS3 and CS4 at the same time, for instance).
  • Default Folder X was saving empty Finder comments, resulting in Spotlight attaching empty com.apple.metadata:kMDItemFinderComment attributes to some files.  This has been fixed.
  • Fixed compatibility problems with python-based applications that use appscript.
  • Added support for 64-bit PowerPC applications to the scripting addition.
  • Corrected inconsistent rebound behavior on network server drives.
  • Fixed the Extras/DFX script so it doesn’t show a busy cursor when it pops up the Default Folder X menu.

Thanks!

Menus with Previews: Default Folder X 4.2.1b1

Saturday, June 27th, 2009

So I rolled a new preview method into Default Folder X’s system-wide menus in the menubar.  Now, not only can you browse all of your files and folders through its quick hierarchical menus, but you can see file previews in little bubbles, like this:

And if you hover over the menu item for a few seconds, that little preview will expand into a large one so you can see more details.  Just browsing my hard disk with this has turned up ton of images and documents I didn’t know I still had!

This and a slew of other improvements are in the first beta release of Default Folder X 4.2.1.  You can download a copy here to try it out:

http://www.stclairsoft.com/download/DefaultFolderX-4.2.1b1.dmg

There’s a full change log in the Beta Read Me file, and usual disclaimers about it being a prerelease version apply (it may have bugs, etc).  I’d love to get some feedback on both the menu item previews and the other improvements, so grab a copy, give it a try, and let me know your thoughts!

– Jon

Default Folder X 4.2d10 available

Saturday, March 21st, 2009

Here’s another development build with refinements to Default Folder X’s new OpenMeta support:

http://www.stclairsoft.com/download/DefaultFolderX-4.2d10.dmg

Changes include:

  • Made the autocompletion always respect the case of what you’ve typed, rather than forcing the capital or lowercase form you used last time.
  • Fixed an OpenMeta problem that resulted in previous builds failing to start up under Mac OS 10.4.
  • Changed OpenMeta tag fields so that it no longer selects all of the tags when Default Folder X first displays them.
  • Fixed the localized nibs – they were not connecting the controls in the Spotlight comment window correctly.
  • A new AppleScript command, ClearRecentFolders, clears the list of recently used folders in the currently active folder set.
  • Corrected a bug that caused Default Folder X to print warning messages in the console like ” ** No alias data for item 0 (folder name) **” when there was a Smart Folder open in the Finder.
  • Streamlined DFFinderWindowServer to minimize overhead.

Please keep the comments and feedback coming!  As soon as I’ve got localization strings back, this version should be ready to roll.  In the meantime, I’ll work on compatibility with future operating system changes 😉

OpenMeta Progress

Friday, March 13th, 2009

There’s been quite a bit of debate in Ironic Software’s forums about OpenMeta.  I was initially wary of some of the implementation details, but after discussing it with Tom Andersen, who wrote the OpenMeta code, I’m confident it will serve us all well.  I’ve posted a summary of my thoughts on their forums at http://ironicsoftware.com/community/comments.php?DiscussionID=755/.

Now that I’m comfortable with OpenMeta’s direction, I’ve finished a pre-release build of Default Folder X that provides OpenMeta tagging support.  You can download it here:

http://www.stclairsoft.com/download/DefaultFolderX-4.2d8.dmg

Please install it and have a look.  I’d appreciate hearing your thoughts and reports of any bugs you find.  The best way to submit your comments is via email to DefaultFolder@stclairsoft.com.

Thanks!

DFX 4.1.2d3: Better rebound and menus with files in them

Monday, February 2nd, 2009

Thanks to Rick Meikle’s careful detailing of exactly what has been wrong with Default Folder X’s “rebound” feature, I’ve now rewritten the rebound code to work much better.  It’s in the latest development build of DFX, which is available here:

http://www.stclairsoft.com/download/DefaultFolderX-4.1.2d3.dmg

In addition, I’ve added a hidden option to display files as well as folders in Default Folder X’s hierarchical menus.  When you select a file, the file dialog is taken to its parent folder and the file is selected if the current application can open it.  To get to the switch to turn this on, go to Default Folder X in System Preferences and click on the “Settings…” button while holding down the Option key.  Turn on the bottom checkbox in the window that comes up – it’s labeled “AlwaysShowFilesInMenus”.

As always, your comments, feedback, and bug reports are crucial to making better software, so speak up!