Migrating from disk images to ZIP archives

For many years, I've been releasing my Mac OS X software on disk images. For a long time, they seemed the most elegant way to provide software to people: they provide a single downloadable container that can be saved in a compressed state, and they can include a pretty background image that explains how to install the app.

A more recent innovation was to include an alias (actually a symbolic link) of the Applications folder, with an arrow in the background indicating to drag the application to that folder to install:

Simon disk image

But all that complicates the release process for me, and for my customers.

For me, when I do a release build I need to copy the build to a standard location then run FileStorm, an application that builds the disk image, then upload the resulting disk image. Doesn't sound too hard, except that FileStorm tended to misbehave for me all too often, resulting in incorrectly laid-out disk images and other problems, requiring several attempts to get it right. It also had compatibility issues with Leopard, forcing me to run it on a Tiger machine, which had other complications.

For my customers, disk images have more hassles. After downloading, they are usually mounted automatically by the OS, though sometimes that didn't work for some people. The images are "internet enabled", so people downloading via Safari get only the contents of the disk images, while people using other browsers get the disk image window as above. Then they need to find it and drag the application to install it... but some people run it directly off the disk image, then wonder where it went after they've dismounted the disk image (or restarted their computer). Plus the disk image has to be dismounted, another hassle.

There's got to be a better way... and there is. The humble ZIP archive.

A ZIP archive is a simple compressed file. They can be created and expanded using built-in commands in the Finder. So for me, creating one is a trivial operation; no more messing around with FileStorm. And they are more convenient for my customers too. After downloading, the archive is automatically expanded, with the application appearing in the download folder. They can then easily install it by dragging to the Applications folder, or try it directly from the downloads folder if preferred — without it mysteriously vanishing after a restart.

So, as I release new versions of my apps, I have been switching to the ZIP archive format. Downloads work exactly the same from my site, but the result is much more convenient for everyone.

As always, I welcome feedback on this. So far, I haven't had any complaints, though one potential problem has come up: one person with an incorrectly installed copy of StuffIt had difficulty expanding the archive by double-clicking on it. The solution was simply to tell the Finder to use the built-in archive expander instead (which is called "BOMArchiveHelper" on Tiger or "Archive Utility" on Leopard).

Time Out 1.5.2 released

Time Out version 1.5.2 is now available.

Time Out is a popular free break reminder tool, that supports normal breaks and micro-breaks.

This update adds support for Spaces in Leopard. The break now appears on all Spaces, even if you switch Spaces mid-break. It also switches the distribution format from a disk image to a ZIP archive... which I'll discuss more in a later blog post.

Remember, Time Out 1.5 is freeware; you are welcome to use it at no cost. However, donations to support development of version 2 are always appreciated... and since I've announced version 2, everyone who donates (any amount!) will be eligible for a Time Out 2 license at no further cost. This offer will expire when Time Out 2 is released.

Download Time Out now!

Narrator 2.0b3 released

Narrator version 2.0b3 is now available.

This beta update has a few more tweaks... getting closer to the general release!

  • Reduced the font size of the description field, to allow seeing more text.
  • Added description field values to the welcome document.
  • Now removes the show/hide toolbar button in the Preferences window, as per Apple's Human Interface Guidelines.
  • Changed the trial reminders to count downwards instead of upwards.
  • Added a nifty trial reminder in the window titlebar.
  • Removed the random daily license reminders; redundant now that the window title has a reminder.
  • Fixed a bug were automatic reading might not occur if the document takes too long to load.
  • Changed the way the version and release numbers are updated internally.
  • Added French localization, thanks to Philippe Bonnaure.

Download now!

Narrator 2.0b2 released

Narrator version 2.0b2 is now available.

This beta release has a few important fixes, plus some new features:

  • Added preferences to re-open the documents that were open last time you quit, and to create a new document if nothing else opened.
  • Fixed a bug with the new Dictionary preferences page, where changes were not remembered.
  • Fixed a bug when speaking if a blank Dictionary replacement text was specified.
  • Fixed a bug with saving documents, where it'd still be marked as having changed after a save.
  • Fixed a couple of bugs with deleting Chapters or Characters, that would prevent saving the document thereafter.
  • Improved the button titles for the Chapter and Character deletion alerts.
  • Added German localization, thanks to Ulf Dunkel.

It's a recommended update for everyone on 2.0b1. Download now!

I don't have any further issues to fix for the 2.0 release. So please try this and let me know if you find any further bugs, or have any suggestions for tweaks or new feature ideas. Feel free to post to the Narrator Forum or contact me privately.

Narrator 2.0b1 release

Narrator version 2 is now in public beta release!

Narrator 2 is a major upgrade, a complete rewrite. It requires Mac OS X 10.5 "Leopard" as it uses the latest technologies. Version 1.1.4 will remain available for people who aren't ready for Leopard.

This upgrade includes a much-requested feature: the ability to export the speech to an AAC sound file, or export directly to iTunes. This is great for listening to stories on an iPod or iPhone, or directly in iTunes. Make your own audiobooks! The tracks can be bookmarkable, too, keeping track of where you're up to when listening to them.

Narrator 2 also has several other enhancements, including preferences to substitute words to fine-tune the pronunciation, the ability to organize your work into multiple chapters, a fancy new look consistent with other Leopard apps, various text features like tables, links, lists, spelling and grammar checking, and more. See the release notes for details.

For new customers, the license prices will be going up about $5 after the beta cycle -- well worth it with the added features. But during the beta testing, you can buy at the version 1 prices.

This is a paid upgrade (just $9) for existing customers. But I'm offering a generous free upgrade period: everyone who purchased Narrator since October 1, 2007 is eligible for a free upgrade. If you qualify, just contact me to get your upgrade license.

Here's a feature graphic for Narrator 2.0b1, as seen in rotation (with ones for Simon and Time Out currently) on the Dejal home page:

Download Narrator 2 now!

Macfilink 1.4.2 released

Macfilink, the affiliate link cloaking tool, has been updated to version 1.4.2.

This update includes a few useful fixes, plus changes the distribution method from disk images to ZIP archives -- a change I'm rolling out for all of my products with each subsequent release.

You can read the release notes, or download now!

BlogAssist 2.1.2 released

BlogAssist version 2.1.2 is now available.

BlogAssist is a helpful tool; it adds a system menu (on the right-hand-side of the menubar) with a list of operations that can be performed on text. You can copy some text, choose an operation, and paste -- the text will be marked up based on the chosen operation. The operations include HTML and forum markup. If you prefer, a floating palette is also available (to drag the text), or you can mark up inline by selecting text in your web browser or editor application, hitting Cmd->, and choosing the operation in a small window that appears, then click OK to substitute it right in the app.

Very handy... I use BlogAssist daily. For example, the product icon, release notes link, and download link in this blog post were generated very simply by BlogAssist.

Anyway, this update adds German localization, improves the French localization, plus a few other changes.

Download now!

Simon 2.3.5 released

Simon version 2.3.5 is now available.

This update includes lots of changes, as follows. I considered calling it version 2.4, but strictly speaking all of the changes are improvements or fixes, not new features, which is my rule for bumping the second digit:

  • Improved the notifications to avoid notifying again if the test is already failing; it used to notify again if the error was slightly different, but that's usually just annoying. You can turn off the "Only notify once for each failure" checkbox to get repeatedly notified until recovery.
  • Improved the SSH service to avoid protocol identification warnings in the Console.
  • Fixed an issue with the FTP service where it had the wrong default protocol, which caused the incorrect Edit Test view to be displayed.
  • Improved the FTP service to work with the Security section of the Edit Test window, allowing checking secure FTP sites (without having to prepend the username and password to the URL).
  • Fixed a bug with the Basic service plug-in where it would mistakenly look for cookies for FTP services, which while harmless most of the time, can cause crashes in some situations.
  • Fixed a bug in the MySQL notifier plug-in where the Password field wasn't enabled correctly when using notifier-specific authentication.
  • Fixed a minor typo in a couple of report templates.
  • Fixed the tooltip for the "keep backup" checkbox in the Advanced preferences.
  • Enhanced the URLs for the Help menu to better support localization.
  • Updated the built-in Kagi purchasing tool to the latest version, which fixes some issues with Leopard.
  • Updated the French localization.

Download now!

Caboodle 1.1.3 released

Caboodle, the handy snippet keeper tool, is now at version 1.1.3.

This bug-fix update addresses a bug with opening attachments: if you happen to have two attachments in Caboodle entries with the same name, and open both of them, Caboodle might have opened the first file again instead of the second one, thinking it was the same file. This is because the attachments are saved to a hidden temporary folder before they are opened. Now, Caboodle saves each attachment in a unique sub-folder, ensuring that files with the same name are still treated as different.

This update also adds German localization, kindly done by Ulf Dunkel of, along with a few minor tweaks that came up during localization. Ulf will act as a reseller of Caboodle for German-speaking customers. Please purchase via his store to give him a cut of the proceeds.

This version is (as far as I can tell!) fully compatible with Leopard, and back to 10.3.9.

Download now!

Simon 2.3.4 released

Just a couple of days after version 2.3.3, here's another bug-fix update for Simon.

I really don't like doing releases so close together, and apologize for any inconvenience... but I figured that it was soon enough that many people wouldn't have got the weekly update notification yet. And the issue this update fixes affected a reasonable number of people, so was important to address quickly.

The main point of this update is to fix Mac OS X 10.3.9 compatibility, which was broken in the 2.3.3 release. It also fixes a minor bug with the status menu, that nobody has reported (or probably noticed), but was worth fixing regardless.

So, how was 10.3.9 compatibility broken, you may ask? Well, I develop on my MacBook Pro under Leopard, but it doesn't have the compiler for 10.3.9 installed. So to do a release I open the project on my PowerMac G5 running Tiger, do a clean build there, plus update the localization, then package the release up in a disk image and upload it back on the MBP. It's a little convoluted, but doesn't really take much longer than just using one machine, since both computers are on my desk, and I can open the project via file sharing.

Anyway, the important part there is a "clean" build -- if I forget to clean the code (i.e. throw away already-compiled binaries and re-compile it), the app won't work on 10.3.9. This has bitten me a few times, though I usually catch it quickly.

Of course, this issue will go away in due course, as each app is upgraded to require a minimum of Leopard -- which will happen over the next year or so.

So, sorry again if you upgraded to Simon 2.3.3 and have to upgrade again. Only about 5% of Simon customers are using 10.3.9 still, but that's enough people to make this quick update worth doing. If you are using Tiger or Leopard, you could skip this update... but there's no harm in updating, too, especially if you didn't already update to 2.3.3.

Download now!

Simon 2.3.3 released

Version 2.3.3 of Simon, the website and server monitoring tool, has now been released.

It is an important update, recommended for all Simon customers. Apart from some minor updates to the German localization and Growl support, it also includes three important changes:

Firstly, the way the test scheduling works has changed. In recent previous versions, I had added a "secret" preference called overlap prevention, which was on by default. This prevented more than one test from being automatically checked at once, as a way to reduce the load on the machine and ensure accurate checking times. The problem with this, though, is it could cause some tests to never get checked if the tests table is sorted by Next Check date and there are lots of tests, as they become queued but are never reached. This was because it scans for candidates to start in the sort order, and always found another queued one before the earlier queued one. Kinda convoluted, and only affecting a few people, but there it is.

This release goes back to allowing multiple tests to be checked at once, but changes things so they are started at least one second apart, even if they fall due at the same time. It uses the same checking interval as set in the Advanced preferences for checking all or multiple selected tests. It still scans in sort order, but it adds all due tests to a queue and starts them one second apart, ensuring that the computer isn't overloaded.

Another important change is to fix a bug in the Edit Test window. I spent a couple of vexing days tracing this, with the most valuable help of a customer. The mystery was that Simon seemed to be forgetting about notifiers assigned to tests in some random conditions. I couldn't recreate it, and added logging to trace what was happening to the data, and nothing seemed missing. Yet when the customer viewed the test configs, sometimes it'd only list one notifier when there should be three or so assigned to the test. Yet if he added the notifiers back, the next time he checked the missing ones would be back, along with the new ones. Wacky!

It turned out that this mysterious situation was just a cosmetic issue. No notifiers were being lost. What was happening was the disclosure triangles were interfering with the loading of the lists of notifiers (and auto-pause and reports). If the disclosure was in a collapsed state when the window was opened, the notifiers list UI wouldn't be visible, so wouldn't be resized to show more than one notifier. If it was in an expanded state, all worked as expected. So the fix was simply to set the disclosure triangle state (and thus UI visibility) after loading the lists, rather than before. An easy oversight, but and important one!

Lastly, this update has several report enhancements. One is to allow digits in test short names (as used for URLs in reports), to allow for people who name tests like "UL102", "UL104", etc, i.e. differing only by digits. Another report change is to handle the file:// protocol better. When saving a report locally to the Desktop or some other location that isn't in the global or user-specific web sharing folders, the report is accessed via the file:// protocol rather than http://. That's all fine and dandy, but several report templates use directories for detail pages to provide tidy URLs, which doesn't work so well with the file:// protocol, as it opens directories as folders in the Finder. So this version solves that by adding the detail page (e.g. index.html) to the end of the URL. As part of that, it also adds a new report variable, SummaryPath, which is like BasePath but includes the index in the URL of the Summary page when saving to a file:// URL - useful for links from the detail pages back to the summary page.

Lots of good fixes and improvements. Download now!

Simon 2.3.2 released

I just found a bug that was inadvertently added in the previous release of SImon, where the License or Setup Assistant windows might not display. This was an unintended side effect of the change in 2.3.1 to avoid reusing the editor windows - as they and the license windows share some common code, but work in very different ways.

This was previously reported in the forums, but I couldn't recreate it till today, when I was testing something else in Simon. There were workarounds, but I felt that it was important enough to warrant a special bug-fix release. Particularly as the Simon Enterprise license will be featured on MacZOT tomorrow! (There's a tip for anyone wanting a cheap license.)

If your copy of Simon is already licensed, you could skip this update if you wish... but there's no harm in updating. For anyone who has experienced this issue, I apologize for the inconvenience.

Download Simon 2.3.2 now!

Simon 2.3.1 released

Simon version 2.3.1 is now available. This release is a bug-fix version, with just a few changes:

  • Rewrote the Port service plug-in to use a helper app to do the work, to avoid instability caused by multithreading and resource usage issues.
  • Added support for the Preview function for the Port service plug-in. It displays the session script at the top, and the actual transcript of the check at the bottom.
  • Changed editor windows to not reuse the window instances, to avoid issues with windows appears incorrectly in some circumstances.
  • Added German localization, thanks to Manfred Brandstater.
  • Updated French localization, thanks as always to Philippe Bonnaure.

I'd like to give special thanks to Manfred for his hard work in getting the German localization done, and also to the couple of German Simon customers who provided feedback on pre-release builds. If you have any feedback on the localization (issues, suggestions for improvements, compliments for Manfred, general comments), please let me know.

Also of note in this version is the rewrite of the Port service plug-in. I've had several reports of crashes and other issues with SImon, which on investigation all traced back to the Port services. There was definitely something NQR there. It's a complex plug-in, though not the most complex. I've tried patching it a couple of times in the past, without complete success, so the time had come to refactor it more significantly. I moved the checking work out into a separate helper app (aka an "agent"). The plug-in launches the background-only helper when starting the check, which does the work, then quits itself when done. This allows avoiding multithreading, which I believe was a factor in the problems, along with some other optimizations that will make it more reliable. And worst case, if it does crash, it won't take out Simon in the process. The crashes do seem to be a thing of the past, though, which is great. Thanks also to the customers who tested pre-release builds with this change.

Another benefit of this refactoring is that it has allowed adding Preview functionality. The Port plug-in did allow previewing in an older version, but I had to disable it when I changed the way the plug-ins worked (from keeping an instance around for the life of the app, to using a separate one for each check). But now I've re-enabled this functionality, and improved it. The Preview window for Port-based services now displays the session script at the top of the window, and the resulting transcript of the check at the bottom (much like for Scripts). This is very handy for ensuring that the test is doing the right thing, or seeing more detail about why it is failing - e.g. whether the session script is incorrect, or the server is misbehaving.

Download Simon now!

Time Out 1.5.1 released

Time Out version 1.5.1 is now available. This is a quick bug-fix release with just two changes:

  • Fixed a bug that caused the Pause Breaks and Reset Breaks commands to remain disabled.
  • Changed the Begin Micro Break command to work if you postponed a Normal break and the Normal break is due very soon; the overlap avoidance feature is inappropriate for manually started breaks.

It's only been a week since the 1.5 release, which I'd normally consider too soon for another release, but these issues seemed important enough to justify it. Not having the Pause and Reset commands available is a major inconvenience for some people, so I wanted to get a fix out quickly for them. If you don't care about these changes, you can skip this update if you wish - but certainly no harm in updating anyway.

Time Out 1.5 released

Time Out version 1.5 is now in general release. It includes an improved icon (as seen on the Dejal site for a few months), a rearranged break layout, and the ability to change the postpone button intervals, or hide either of them and/or the skip break button, if desired. Plus some other minor changes and fixes. See the release notes and the blog entry on the beta release for more information.

Time Out 1.5 is freeware; you are welcome to use it at no cost. However, donations to support development of version 2 are always appreciated... and since I've announced version 2, everyone who donates (any amount!) will be eligible for a Time Out 2 license at no further cost. This offer will expire when Time Out 2 is released (after Leopard).

Download Time Out 1.5 now!

Time Out 1.5b1 released

It's been a while since the previous version, but Time Out 1.5 is now in beta release.

As mentioned a couple of times recently, version 1.5 is an interim release for 10.3.9 and up, before the big 2.0 upgrade, coming later this year for Leopard.

I've been using the new Time Out icon on the Dejal site since January, but till now the Time Out application itself has still used the "aesthetically challenged" old icon, which consisted of a very badly Photoshopped rendering of my hands in a "T" shape. I've never liked that icon, and I've certainly got lots of feedback over the years that you don't either... so it was a priority when I got Emily Pfeifer to redesign some of my app icons (and the Dejal logo). I'm very happy with the new design, and I hope you are too.

A subtle change is the name of the application. It used to be "Time Out!", with an exclamation point at the end of the name, but I'd grown to dislike that too, what with the hassles and untidiness it caused when referring to the application. So I've dropped the exclamation point from the name.

Feature-wise, 1.5 has a rearranged break layout, with the progress bar and buttons within a box, a more elegant font and color for the "Time Out" text, and the new icon, of course. By popular request, it also includes options to remove any or all of the buttons, and to change the postpone amounts. So if you find the temptation to skip a break too strong, you can get rid of the button to encourage you to take the break. Check out the release notes for more changes.

Here's a feature graphic for Time Out 1.5b1, as seen in rotation (with ones for Simon and Caboodle currently) on the Dejal home page:

Version 1.5 may be the last version of Time Out for Mac OS X 10.3.9 and later. Version 2 and beyond will require a minimum of Mac OS X 10.5, as they will leverage several of the great technologies introduced in Leopard. I'll keep 1.5 around for the foreseeable future, for people who haven't upgraded to Leopard.

And yes, 1.5 is still completely free! While version 2 will be shareware, I am currently planning to also offer a free Lite version, which will have the same features as 1.5, plus some extras.

Simon 2.3 released

Simon version 2.3 is now in general release!

As previously discussed, this release includes a new Mount plug-in, that works both as a service and notifier, and allows mounting and unmounting local, AFP, and SMB volumes. It also extends the Script plug-in to act as a notifier too, allowing great flexibility in notifications. Plus many other enhancements and fixes. See the release notes for more information, or download now!

Simon 2.3b1 released

I'm pleased to announce a beta release of Simon version 2.3. This update adds a useful new Mount service and notifier, that allows you to check if a local, AFP or SMB volume is mounted, and optionally unmount it. The notifier can be used to mount or unmount a volume as a result of a check.

It also extends the Script plug-in to act as a notifier as well as service. This means that you can now write AppleScripts, shell scripts, Perl, Python, Ruby, etc scripts to do some custom action when a test fails, recovers, or changes. This is a very exciting feature, that expands Simon's already extensive flexibility by an order of magnitude. Not to belabor the hyperbole, but with the new Script notifier, the notification options are now limitless!

This release also includes some new test options, to allow customizing the timeout interval and offline checking, some handy new variables, a number of bug fixes, and compatibility with the current Leopard beta.

There are lots of other nifty enhancements in this release; see the release notes for the full list, or download now!

This is a free update for licensed Simon users.

Caboodle 1.1.2 released

Caboodle has now been updated to version 1.1.2. Similar to yesterday's updates of Macfilink and BlogAssist, this update includes minor tweaks to ensure compatibility with Leopard. It also includes some fixes for ruler handling within entries, to make the preference and menu item work better - existing entries now save the ruler visibility state properly, and new root-level entries now use the preference.


Macfilink 1.4.1 & BlogAssist 2.1.1 released

Macfilink has now been updated to version 1.4.1, and BlogAssist has been updated to version 2.1.1.

These updates just include some minor changes and fixes that other apps have already received, plus some minor tweaks to ensure compatibility with Leopard, aka Mac OS X 10.5, for those running the developer beta (as I am) or to make the transition smoother when you eventually upgrade.

They are recommended updates for all Macfilink and BlogAssist users... and of course recommended apps for everyone else, too. :)

Syndicate content